关于linux UART驱动和tty架构的理解
  最近要开发一个驱动程序,需要用到串口和SPI接口。平台的串口驱动程序本身在开发板中已经被实现了,也可以就这样直接使用,但是这样分开使用的结果就是在串口和SPI的配合上总是显得那么不太完美。
  于是想着怎么在一个驱动文件中实现uart和spi结口的驱动程序。
  在写驱动的过程中感觉uart驱动比较麻烦,和tty架构纠缠在了一起,感觉这两个东西像鸳鸯一般彼此不能分离,想了好久,也看了很多资料感觉还是理解的不够好,于是把自己的想法写到这里,希望与各位交流一下(更希望有大神可以指点一下),以求得到正确的理解。
  以下观点纯属自己的认知,希望各位看官还请自己斟酌。
  1).由于历史原因uart和tty两个一直纠缠到现在,以至于现在的标准uart驱动是基于tty架构实现的,但是我认为如果有必要可以绕过tty架构,在驱动中单独实现对uart的操作,基于平台设备注册 一个字符设备也可以;
  2).说到tty必须提到line discipline,关于line discipline存在的意义我也是想了好久,个人理解如下:一个串口在不同时间不同场合可能会和不同的串口设备连接(蓝牙、红外等),如果该串口是如上述1)中那样注册的,那么应用程序得到的数据就是物理层的实际数据,这时应用层不得不解析物理层的数据,以得到没有任何编码的数据。而如果有了line discipline中间层完成物理层数据的解析,那么应用层就不需要关于串口层连接的是什么设备了,其得到的永远都是解析后的数据(下发的数据也会经line discipline编码),这样应用开发就更加灵活,接不同的设备选择不同的line discipline即可;
  个人理解能力有限,还希望大家多留言多交流,彼此共进。
                              ------大白

关于linux UART驱动和tty架构的理解相关推荐

  1. Linux UART驱动分析及测试

    1.Linux TTY驱动程序框架 Linux TTY驱动程序代码位于/drivers/tty下面.TTY的层次接口包括TTY应用层.TTY文件层.TTY线路规程层.TTY驱动层.TTY设备驱动层.T ...

  2. Linux uart驱动框架

    Linux uart驱动框架 串口驱动框架包括两部分 struct uart_driver int uart_register_driver(struct uart_driver *uart); vo ...

  3. linux设备驱动,tty串口编程 如何查看linux下串口是否可用?串口名称等

    如何查看linux下串口是否可用?串口名称等? http://zhidao.baidu.com/question/419148559.html 查看串口是否可用,可以对串口发送数据比如对com1口,e ...

  4. i.MX6ULL驱动开发 | 15 - Linux UART 驱动框架

    Linux UART 驱动框架比较简单,不需要设备驱动,只需要UART设备驱动即可. 一.Linux UART驱动框架 1. uart_driver结构体 Linux将 UART 驱动抽象为 uart ...

  5. linux iic设备中断,Linux设备驱动之I2C架构分析(一)

    Linux设备驱动之I2C架构分析 一:前言 I2c是philips提出的外设总线.I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL.正因为这样,它方便了工程人员的布线.另外,I2C是一种 ...

  6. Linux uart驱动文件,linux终端设备uart驱动分析

    一:前言 接着前面的终端控制台分析,接下来分析serial的驱动.在linux中,serial也对应着终端,通常被称为串口终端.在shell上,我们看到的/dev/ttyS*就是串口终端所对应的设备节 ...

  7. linux UART驱动

    目录 一.UART驱动关键结构体 二.UART驱动分析 三.UART驱动编写 一.UART驱动关键结构体 1.uart_driver 结构体 (1) uart_driver 结构体表示 UART 驱动 ...

  8. linux UART驱动_应用程序例程

    系列文章 I.MX6ULL 手册查找使用方法 实战点亮LED(寄存器版) I.MX6ULL 手册查找使用方法 实战点亮LED(固件库版本) linux 字符设备驱动实战 linux LED设备驱动文件 ...

  9. Linux uart 驱动

    一.串口驱动框架简介 Linux 提供了串口驱动框架.串口驱动没有主机端和设备端之分,就只有一个串口驱动,而且这个驱动也是由处理器厂家编写好了. 我们真正要做的就是在设备树中添加所要使用的串口节点信息 ...

最新文章

  1. SSM始用 @Autowired(required = false)的一个坑
  2. 软件设计原则:内聚、耦合有哪几种类型?内聚度、耦合度如何比较?
  3. php输入流php://input的使用分析
  4. python提供两个对象身份比较操作符_标准类型对象比较操作符
  5. Shell:运算命令和操作符
  6. View.Post()保证UI带你装逼带你飞
  7. VS找不到System.Web.Extensions.dll的解决办法
  8. 简简单单利用字典破解zip文件口令
  9. Algorithm:数学建模大赛(CUMCM/NPMCM)之全国大学生数模竞赛简介 相关书籍、文章推荐等详细攻略
  10. if else 条件语句
  11. 微信扫一扫二维码直接打开手机外部浏览器
  12. BTRFS Defragmentation
  13. TestCenter测试管理工具功能详解七(L)
  14. 《深入理解Elasticsearch(原书第2版)》——第1章  Elasticsearch简介
  15. Java实现迪杰斯特拉算法
  16. 基于图数据库的空间频繁并置模式挖掘
  17. 程序人生 - 西瓜霜能吃下去吗?
  18. UI行业就业前景怎样 如何成为合格的UI设计师
  19. 1-03 C++起步: 用函数组织语句 —— 代码封装初步
  20. Jackson介绍及使用

热门文章

  1. C# 字符串首字符大写
  2. JavaCompiler
  3. 《5G时代:生活方式和商业模式的大变革》读书笔记和总结
  4. python函数返回多个变量_Python中接收函数多个返回结果的两种方法
  5. 离散数学计算机专业论文,计算机与离散数学论文.doc
  6. libevent 使用流程
  7. vmware 安装openstack,安装mysql,keyston glance,nova
  8. STM32F103系列GPIO的一些基本概念和知识
  9. 重视“中心+网格化+信息化”建设,推进城市平稳发展
  10. 360wifi在linux系统如何使用,在树莓派上使用360WIFI(也适用于小米、百度、腾讯WIFI)...