关于linux UART驱动和tty架构的理解
关于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架构的理解相关推荐
- Linux UART驱动分析及测试
1.Linux TTY驱动程序框架 Linux TTY驱动程序代码位于/drivers/tty下面.TTY的层次接口包括TTY应用层.TTY文件层.TTY线路规程层.TTY驱动层.TTY设备驱动层.T ...
- Linux uart驱动框架
Linux uart驱动框架 串口驱动框架包括两部分 struct uart_driver int uart_register_driver(struct uart_driver *uart); vo ...
- linux设备驱动,tty串口编程 如何查看linux下串口是否可用?串口名称等
如何查看linux下串口是否可用?串口名称等? http://zhidao.baidu.com/question/419148559.html 查看串口是否可用,可以对串口发送数据比如对com1口,e ...
- i.MX6ULL驱动开发 | 15 - Linux UART 驱动框架
Linux UART 驱动框架比较简单,不需要设备驱动,只需要UART设备驱动即可. 一.Linux UART驱动框架 1. uart_driver结构体 Linux将 UART 驱动抽象为 uart ...
- linux iic设备中断,Linux设备驱动之I2C架构分析(一)
Linux设备驱动之I2C架构分析 一:前言 I2c是philips提出的外设总线.I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL.正因为这样,它方便了工程人员的布线.另外,I2C是一种 ...
- Linux uart驱动文件,linux终端设备uart驱动分析
一:前言 接着前面的终端控制台分析,接下来分析serial的驱动.在linux中,serial也对应着终端,通常被称为串口终端.在shell上,我们看到的/dev/ttyS*就是串口终端所对应的设备节 ...
- linux UART驱动
目录 一.UART驱动关键结构体 二.UART驱动分析 三.UART驱动编写 一.UART驱动关键结构体 1.uart_driver 结构体 (1) uart_driver 结构体表示 UART 驱动 ...
- linux UART驱动_应用程序例程
系列文章 I.MX6ULL 手册查找使用方法 实战点亮LED(寄存器版) I.MX6ULL 手册查找使用方法 实战点亮LED(固件库版本) linux 字符设备驱动实战 linux LED设备驱动文件 ...
- Linux uart 驱动
一.串口驱动框架简介 Linux 提供了串口驱动框架.串口驱动没有主机端和设备端之分,就只有一个串口驱动,而且这个驱动也是由处理器厂家编写好了. 我们真正要做的就是在设备树中添加所要使用的串口节点信息 ...
最新文章
- SSM始用 @Autowired(required = false)的一个坑
- 软件设计原则:内聚、耦合有哪几种类型?内聚度、耦合度如何比较?
- php输入流php://input的使用分析
- python提供两个对象身份比较操作符_标准类型对象比较操作符
- Shell:运算命令和操作符
- View.Post()保证UI带你装逼带你飞
- VS找不到System.Web.Extensions.dll的解决办法
- 简简单单利用字典破解zip文件口令
- Algorithm:数学建模大赛(CUMCM/NPMCM)之全国大学生数模竞赛简介 相关书籍、文章推荐等详细攻略
- if else 条件语句
- 微信扫一扫二维码直接打开手机外部浏览器
- BTRFS Defragmentation
- TestCenter测试管理工具功能详解七(L)
- 《深入理解Elasticsearch(原书第2版)》——第1章 Elasticsearch简介
- Java实现迪杰斯特拉算法
- 基于图数据库的空间频繁并置模式挖掘
- 程序人生 - 西瓜霜能吃下去吗?
- UI行业就业前景怎样 如何成为合格的UI设计师
- 1-03 C++起步: 用函数组织语句 —— 代码封装初步
- Jackson介绍及使用
热门文章
- C# 字符串首字符大写
- JavaCompiler
- 《5G时代:生活方式和商业模式的大变革》读书笔记和总结
- python函数返回多个变量_Python中接收函数多个返回结果的两种方法
- 离散数学计算机专业论文,计算机与离散数学论文.doc
- libevent 使用流程
- vmware 安装openstack,安装mysql,keyston glance,nova
- STM32F103系列GPIO的一些基本概念和知识
- 重视“中心+网格化+信息化”建设,推进城市平稳发展
- 360wifi在linux系统如何使用,在树莓派上使用360WIFI(也适用于小米、百度、腾讯WIFI)...