转自: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) 【转】的更多相关文章

  1. linux下usb转串口驱动分析【转】

    转自:http://blog.csdn.net/txxm520/article/details/8934706 首先说一下linux的风格,个人理解 1. linux大小结构体其实是面向对象的方法,( ...

  2. Linux 串口、usb转串口驱动分析(2-2) 【转】

    转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26807463&id=4186852 Linux 串口.usb转 ...

  3. linux驱动基础系列--Linux 串口、usb转串口驱动分析

    前言 主要是想对Linux 串口.usb转串口驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如字符设备驱动.平台驱动等也不进行详细说明原理.如果有任何错误地方,请指出, ...

  4. Linux下 USB设备驱动分析(原创)

    之前做过STM32的usb HID复合设备,闲来看看linux下USB设备驱动是怎么一回事, 参考资料基于韦东山JZ2440开发板,以下,有错误欢迎指出. 1.准备知识 1.1USB相关概念: USB ...

  5. linux下USB转串口驱动的安装

    ubuntu10.04,usb串口用的是moxa 1110 搞了半天没有驱动... 去官方下了个:http://www.moxa.com/support/sarch_result.aspx?type= ...

  6. STM32 USB转串口驱动安装不成功出现黄色感叹号解决方法!

    相信很多人在做USB转串口时出现过串口驱动安装不成功,出现黄色感叹号问题, 出现这种问题一般是驱动安装不成功造成的. 这里我就这个问题总结几个简单的方法. 方法1: 插上USB,利用驱动人生安装驱动. ...

  7. linux内核SPI总线驱动分析(一)(转)

    linux内核SPI总线驱动分析(一)(转) 下面有两个大的模块: 一个是SPI总线驱动的分析            (研究了具体实现的过程) 另一个是SPI总线驱动的编写(不用研究具体的实现过程) ...

  8. usb转串口驱动时会出现“文件的哈希值不在指定的目录”这样的提示

    一般在安装一些usb转串口驱动时会出现“文件的哈希值不在指定的目录”这样的提示,那么怎么解决呢?知道的别喷我哦,我只是再普及一下,嘿嘿1.鼠标移到右下角,点击“设置”,再点击“更改电脑设置”2.点击最 ...

  9. TI 开发板安装USB转串口驱动

    使用TI开发板的时候,USB转串口驱动没有,显示,无法识别设备.搜了好久才搜到相关驱动. 做个记录. 链接: https://pan.baidu.com/s/1ZT5zzVcU727jrYacKVoT ...

随机推荐

  1. div z-index无论设置多高都不起作用

    这种情况发生的条件有三个: 1.父标签position属性为relative: 2.当前标签无position属性(relative,absolute,fixed): 3.当前标签含有浮动(float ...

  2. 从零开始学Kotlin-类和对象(5)

    定义一个类 定义一个类,使用关键字class声明,后面跟类名(不使用new) class demo5 {//定义一个类,使用关键字class声明,后面跟类名 fun test() {//类中定义方法 ...

  3. Linux命令(二十三) 磁盘管理命令(一) df,du,tune2fs

    一. 查看磁盘占用空间情况 df df 命令用于查看硬盘空间的使用情况,还可以查看硬盘分区的类型或 inode 节点的使用情况等. df 命令常用参数如下: -a 显示所有文件系统的磁盘使用情况,包括 ...

  4. Aqua Data Studio 数据库开发工具

    Aqua Data Studio是一款完整IDE的数据库开发工具,它提供3种主要功能:数据查询与管理工具.比对数据工具与源控制和文件系统的整合工具.帮助你创建,编辑和执行 SQL 的管理工具脚本编写, ...

  5. NOI备战总结ing……

    持续做题ing…… 已完成: 树套树 点分治 博弈论 凸包 杜教筛 反演 FFT 数位DP DP专栏 网络流 数学专栏 正在进行中: waiting: SAM Kd-tree 矩阵树 分治 FWT B ...

  6. R vs Python,数据分析中谁与争锋?

    R和Python两者谁更适合数据分析领域?在某些特定情况下谁会更有优势?还是一个天生在各方面都比另一个更好? 当我们想要选择一种编程语言进行数据分析时,相信大多数人都会想到R和Python——但是从这 ...

  7. AngularJS学习笔记3——AngularJS的工作原理

    个人觉得,要很好的理解AngularJS的运行机制,才能尽可能避免掉到坑里面去.在这篇文章中,我将根据网上的资料和自己的理解对AngularJS的在启动后,每一步都做了些什么,做一个比较清楚详细的解析 ...

  8. 管理KVM虚拟机(二)

    管理KVM虚拟机 工具:libvirt 官网:http://libvirt.org/ 介绍:Libvirt 库是一种实现 Linux 虚拟化功能的 Linux® API,它支持各种虚拟机监控程序,包括 ...

  9. MFC Activex 开发、ocx打包成cab、部署、测试、自动升级

    小小抱怨下:也许是MFC现在用的人少的缘故.在国内和国外都基本上找不到什么全的资料.特别是ocx打包成Cab时的安装文件inf的编写方面,国内基本上是copy,抄的还一知半解.查找个资源真心的累啊.现 ...

  10. Linux命令dd与cp的区别

    原文链接:http://blog.csdn.net/erazy0/article/details/6087554 问:看了一些关于dd和cp的命令,但是我始终无法明白dd和cp之间有什么不同?不是都可 ...