易截截图软件、单文件、免安装、纯绿色、仅160KB

linux终端设备uart驱动分析

文章来源:http://blog.chinaunix.net/u3/94284/showart_1982227.html
一:前言
接着前面的终端控制台分析,接下来分析serial的驱动.在linux中,serial也对应着终端,通常被称为串口终端.在shell上,我们看到的/dev/ttyS*就是串口终端所对应的设备节点.
在分析具体的serial驱动之前.有必要先分析uart驱动架构.uart是Universal Asynchronous Receiver and Transmitter的缩写.翻译成中文即为”通用异步收发器”.它是串口设备驱动的封装层.
二:uart驱动架构概貌
如下图所示:
 
 
上图中红色部份标识即为uart部份的操作.
从上图可以看到,uart设备是继tty_driver的又一层封装.实际上uart_driver就是对应tty_driver.在它的操作函数中,将操作转入uart_port.
在写操作的时候,先将数据放入一个叫做circ_buf的环形缓存区.然后uart_port从缓存区中取数据,将其写入到串口设备中.
当uart_port从serial设备接收到数据时,会将设备放入对应line discipline的缓存区中.
这样.用户在编写串口驱动的时候,只先要注册一个uart_driver.它的主要作用是定义设备节点号.然后将对设备的各项操作封装在uart_port.驱动工程师没必要关心上层的流程,只需按硬件规范将uart_port中的接口函数完成就可以了.
 
三:uart驱动中重要的数据结构及其关联
我们可以自己考虑下,基于上面的架构代码应该要怎么写.首先考虑以下几点:
1: 一个uart_driver通常会注册一段设备号.即在用户空间会看到uart_driver对应有多个设备节点.例如:
/dev/ttyS0  /dev/ttyS1
每个设备节点是对应一个具体硬件的,从上面的架构来看,每个设备文件应该对应一个uart_port.
也就是说:uart_device怎么同多个uart_port关系起来?怎么去区分操作的是哪一个设备文件?
 
2:每个uart_port对应一个circ_buf,所以uart_port必须要和这个缓存区关系起来
 
回忆tty驱动架构中.tty_driver有一个叫成员指向一个数组,即tty->ttys.每个设备文件对应设数组中的一项.而这个数组所代码的数据结构为tty_struct. 相应的tty_struct会将tty_driver和ldisc关联起来.
那在uart驱动中,是否也可用相同的方式来处理呢?
将uart驱动常用的数据结构表示如下:
 
 
结合上面提出的疑问.可以很清楚的看懂这些结构的设计.
 
四:uart_driver的注册操作
Uart_driver注册对应的函数为: uart_register_driver()代码如下:
int uart_register_driver(struct uart_driver *drv)


相关文档:

Linux下的ftp工具及中文乱码的解决

安装gftp
yum install gftp
默认状态下gftp是没有设置字符编码的,所以我们上FTP的时候,看到里面的中文文件名全部是乱码,或则不部分文件看到文件夹却没名字;
其实在gftp-2.0.17以后的版本都已经很好支持汉字了,我的设置方法是对它的配置文件修改即可!
一般的软件配置文件会放在用户目录下,例如我用r ......

Linux相关命令(一)

linux命令大全 cat cd
chmod chown
cp cut
名称:cat
使用权限:所有使用者
使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n ......

Linux 汇编语言开发指南


developerWorks 中国
  >  
Linux
  >
Linux 汇编语言开发指南
文档选项
<tr
valign="top"><td width="8"><img alt="" height="1" width="8"
src="//www.ibm.com/i/c.gif"/></td>< ......

LINUX网络编程

      网络编程和其他编程最大的区别就是:网络编程由两部分组成,客户端和服务器端。先启动服务器端、等待客户端的程序运行并建立连接;一般来说,是服务器端的程序在一个端口上监听,等待有一个客户端的程序发来请求。
      网络编程还要引入一个概念:协议。在网络 ......

裁减 Linux 嵌入式系统:方法与实例

原PDF: 《縮減 Linux嵌入式系統軟體: 方法與實例 》
作者:梁元彪 林盈达
刘建文整理(http://blog.csdn.net/keminlau )
KEY:嵌入式操作系统 裁减 linux embedded
国立交通大学资讯科学系
300 新竹市大学路 1001 号
Tel: 03-5712121 ext. 56667 Fax: 03-5712121 e ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号