linux_串口驱动开发文档3.0.docVIP

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux UART 串口驱动开发文档 概念阐述 tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。在终端或TTY接插的地方,操作系统仍然需要一个程序来监视串行端口。一个getty“Get TTY”的处理过程是:一个程序监视物理的TTY/终端接口。对一个虚拟网络沮丧服务器(VNC)来说,一个伪装的TTY(Pseudo-TTY,即家猫的TTY,也叫做“PTY”)是等价的终端。当你运行一个xterm(终端仿真程序)或GNOME终端程序时,PTY对虚拟的用户或者如xterm一样的伪终端来说,就像是一个TTY在运行。“Pseudo”的意思是“duplicating in a fake way”(用伪造的方法复制),它相比“virtual”或“emulated”更能真实的说明问题。而在现在的计算中,它却处于被放弃的阶段。 tty 核心从一个用户获取将要发送给一个 tty 设备的数据. 它接着传递它到一个 tty 线路规程驱动, 接着传递它到一个 tty 驱动. 这个 tty 驱动转换数据为可以发送给硬件的格式. 从 tty 硬件收到的数据向上回流通过 tty 驱动, 进入 tty 线路规程驱动, 再进入 tty 核心, 在这里它被一个用户获取. 有时 tty 驱动直接和 tty 核心通讯, 并且 tty 核心直接发送数据到 tty 驱动, 但是常常 tty 线路规程有机会修改在 2 者之间发送的数据. tty 驱动从未看见 tty 线路规程. 这个驱动不能直接和线路规程通讯, 它甚至也不知道它存在. 驱动的工作是以硬件能够理解的方式格式化发送给它的数据, 并且从硬件接收数据. tty 线路规程的工作是以特殊的方式格式化从一个用户或者硬件收到的数据. 这种格式化常常采用一个协议转换的形式, 例如 PPP 和 Bluetooth. 开发tty设备驱动,主要是注册tty_register_driver() 函数。 比较典型的tty设备:串口、pty。 需要要注意的是按照功能划分可以将串口分为两大类:串口终端和普通串口。串口终端,是将串口作为linux kernel的终端输出(比如通过pc上超级终端就能将这个终端显示出来)。普通串口,就是2跟线,接收数据,发送数据。 当串口作为终端的时候,在/etc/inittab文件中加入下面语句 ::respawn:/sbin/getty -L ttyS0 115200 xterm 指定在ttyS0串口打开一个登录会话,这样串口就成控制台了就可以将串口作为终端来使用了。 如果没有使用getty来绑定串口,那么即使是基于tty架构的串口驱动程序也只能收发数据,不能作为终端来使用。 pty指的是伪终端,比如telnet过程中就会使用这种伪终端。telnet跟telnetd通过socket通信,服务器上的telnetd程序会打开这个pty(伪终端)设备文件,然后这个伪终端做的事情跟串口终端做的事情一样,只是串口线变成了网线而已。 一、老版本的串口驱动程序 tty设备分为物理设备和虚拟设备。物理设备,如串口,USB转串口桥,串口MODEM等等,和硬件相对应的设备。虚拟设备,如console,pty等虚拟设备,通常没有硬件与之相对应。tty的type分为三类,console,serial port和pty。只有serial port是物理设备,因此我们编写的驱动程序类型也都是serial port类型的。而console和pty多是由内核完成。由于tty是一种通用设备,内核提供了高级操作函数。所有的tty设备都不必从底层做起,可以调用tty core(内核提供模块)功能完成操作。 层次结构图1 二、目前的串口驱动程序 层次结构图2 目前,uart设备是继tty_driver的又一层封装。实际上uart_driver就是对应tty_driver,在它的操作函数中,将操作转入uart_port。 在写操作的时候,先将数据放入一个叫做circ_buf的环形缓存区.然后uart_port从缓存区中取数据,将其写入到串口设备中。如 串口驱动的数据流图 当uart_port从serial设备接收到数据时,会将设备放入对应line discipline的缓存区中。tty 核心缓冲由 tty 驱动接收到的数据, 在一个称为 struct tty_flip_buffer 的结构中. 一个 flip 缓冲是一个结构包含 2 个主要数据数组. 从 tty 设备接收到的数据被存储于第一个数组. 当这个数组满, 任何

文档评论(0)

ffpg + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档