Linux 串口、usb转串口驱动分析(2-1) 【转】
转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26807463&id=4186851
Linux 串口、usb转串口驱动分析1
内核版本:2.6.35.6 荣鹏140319
声明:图和个别段落(我做了小的修改)是直接从网上截取
目标:主要是想对Linux 串口、usb转串口驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如字符设备驱动、平台驱动等也不进行详细说明原理。如果有任何错误地方,请指出,谢谢!
一、整体概述
linux下的串口或者usb转串口驱动都是依赖linux内核提供的tty核心、tty线路规划和tty驱动,所以牵涉到很多层次,之所以有这么多层次,肯定是有它们存在意义的。
举例来说,像串口或者usb转串口的驱动,最终可以确定的是以字符设备驱动提供给上层使用,于是tty核心层就对这部分通用的实现进行了封装,但这不是最重要的,最重要的是tty核心层里同时实现了一种数据格式化机制,这就是tty线路规划,这样的好处是可以分别针对不同类设备的线路规划,比如针对终端io的,比如针对网络的ppp还有slip还有蓝牙还有IrDA等,这些的实现不需要考虑底层硬件,也就是说这些串口到具体协议的转换的实现与硬件相分离了,这就是tty核心及tty线路规划存在的目地。
那为什么会有tty驱动层呢? 也许你觉得我们的串口驱动可以直接通过tty核心提供的功能就可以实现了。 这个确实是可以,但是linux内核因为要兼容世界上存在的各种串口设备,所以针对串口额外实现了一个serial核心层,针对usb转串口额外实现了usb-serial核心层,它们就是所谓的tty驱动层。我们的串口或者usb转串口实现就是与tty驱动层打交道,当然串口芯片或者usb转串口芯片有很多种,所以不同的芯片都要有对应的驱动,但是它们都是基于tty驱动层实现,这个是可以肯定的。
所以,我们要写串口驱动,最好还是对这些层次有些了解。
整体框架图如下:
这图是直接摘抄网上的。其实,我认为在tty驱动层下还应该有个具体的驱动,比如如果是8250串口控制器芯片,那么应该有个8250的驱动,然后才是硬件。
更准确的图我认为如下图所示:
更详细的如下图所示:
下面摘抄网上的
(1)、tty线程规程
以特殊的方式格式化从一个用户或者硬件收到的数据,这种格式化常常采用一个协议转换的形式,如虚拟终端、PPP、Bluetooth、Ir等。
(2)、tty设备发送数据流程
tty核心从一个用户获取将要发送给一个tty设备的数据,tty核心将数据传递给tty线路规程驱动,接着数据被传递到tty驱动,tty驱动将数据转换为可以发送的硬件格式。
(3)、tty设备接收数据流程
从tty硬件接收到的数据向上交给tty驱动,进入tty线路规程驱动,再进入tty核心,在此被用户获取。尽管tty核心与tty之间的数据传输会经历tty线路规程的转换,但是tty驱动与tty核心之间也可以直接传输数据。
再摘抄2张网上的图:
tty设备的数据流通图:
Linux 串口、usb转串口驱动分析(2-1) 【转】相关推荐
- linux下usb转串口驱动分析
linux下usb转串口驱动分析 分类: linux driver 2012-06-08 15:11 456人阅读 评论(0) 收藏 举报 linux struct interface returni ...
- USB转串口驱动分析(一)
之前追踪代码用的grep命令效率太低了,所以这次下载C代码阅读跳转利器ctags.cscope用于分析代码 因为用的是Centos6.7所以需要用到yum install安装软件 [wuyujun@w ...
- USB转串口驱动分析(二)
在static int __init usb_serial_init(void)里 tty_set_operations(usb_serial_tty_driver, &serial_ops) ...
- linux 下串口转usb不能发送数据包,Linux ,USB转串口驱动,没法读到数据
Linux ,USB转串口驱动,无法读到数据 usb 1-1.1: new full-speed USB device number 5 using ehci-pci usb 1-1.1: New U ...
- Linux环境下使用 USB转串口驱动(二)
minicom是linux下串口通信的软件,它的使用完全依靠键盘的操作,虽然没有"超级终端"那么易用,但是使用习惯之后读者将会体会到它的高效与便利,下面将讲解minicom的安装和 ...
- Linux Ubuntu18.04系统 USB转串口驱动安装,查看串口号
When you plugin your USB-UART converter, and run "> ls /dev/tty*", if you don't see the ...
- linux装pl2303驱动下载,Linux下安装USB转串口驱动(PL2303)
主机:Gentoo Linux 11.2 内核版本:Linux 3.0.6 以前在Ubuntu下USB转串口驱动已经编译进内核,而编译的Gentoo内核没有编译进去,这里将内核中PL2303驱动 co ...
- Linux下安装USB转串口驱动(PL2303)
分类: 嵌入式ARM+Linux 2012-01-11 22:26 2077人阅读 评论(0) 收藏 举报 主机:Gentoo Linux 11.2 内核版本:Linux 3.0.6 原创作品 ...
- 银河麒麟 安装PL2303GC USB转串口驱动
银河麒麟系统,外接一个设备,连接线是USB转串口线,型号是PL2303,直接接到电脑上,系统没有自动加载这个设备,理论上来说应该识别为/dev/ttyUSB0. 进入USB转串口驱动的目录查看: /u ...
- CH341SER CH340SER USB转串口驱动
CH341SER CH340SER USB转串口驱动适用于同型号的设备,这个USB转串口设备我们可能用不到,但是对于专业的开发者来说可能会用到,将设备与电脑连接后安装一下小编提供的USB转串口驱动程序 ...
最新文章
- php内容采集系统,第一步、采集规则
- java语言提供结构_java学习之语句结构
- Linux 第71天 mariadb backup and recovery
- synchronized(this)用法
- python 的类装饰器
- 佳能EOS R5逼出性能怪兽索尼A1,2021佳能如何接招?
- 拓端tecdat|R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测
- Ac.wing 149. 荷马史诗
- 2014中秋节,用java为QQ游戏美女找茬写辅助
- mysql插入特殊汉字、字符报错
- Unity 3D委托entrust
- nginx的配置优化及经常使用的超时配置说明
- 联盟 (Alliances)
- 【Xgen UE】将Xgen制作好的毛发导入UE
- PHP单例模式 构造方法
- Metricbeat入门案例
- 西南知识产权大数据中心落地成都
- 计算机图形学复习(自用)
- 计算属性,方法与监听器(3-4)
- 如何用matlab消除谐波,哈工大 matlab电机学仿真实验消除谐波