
tty
文章平均质量分 53
tty
四季帆
汽车电子、bsp
展开
-
gpio模拟串口通信
UART使用异步模式工作,不需要时钟信号,其一般格式为起始位+数据位+校验位+停止位。其中起始位1位,数据位5~8位,校验位0或1位,停止位1、1.5或2位。不过最常用的格式是1位起始位、8位数据位、没有奇偶校验、1位停止位,简记为8/N/1。8/N/1格式的时序图如下空闲时数据线上规定为逻辑1。开始传输数据时先发送起始位,规定为逻辑0,接收端会检测这个下降沿,以便之后开始采样接收数据。起始位之后是数据位,规定先发送最低位,即LSBFirst。...原创 2022-07-29 21:00:00 · 4002 阅读 · 0 评论 -
串口通信失败
串口通信失败总结原创 2022-07-25 19:15:00 · 6472 阅读 · 0 评论 -
Linux串口驱动(5) - read详解
1. 用户空间read的操作实现static ssize_t tty_read(struct file *file, char __user *buf, size_t count, loff_t *ppos){ int i; struct tty_struct *tty = file_tty(file); struct tty_ldisc *ld; ld = tty_ldisc_ref_wait(tty); /* 获取tty对应的线路规程ldisc,和tty_write是一样的,可以回原创 2021-06-26 13:35:02 · 2483 阅读 · 0 评论 -
Linux串口驱动(3) - open详解
1. 用户空间open的操作实现串口设备是被注册为字符设备的,在注册过程中填充了struct file_operations tty_fops结构体,该结构体中的成员open、read、write等就是驱动和应用交互的接口,应用程序打开串口设备时,经过系统调用,最后会调用到tty_fops.open函数,即tty_open。tty_open()*************************************** 分析线路1 ***************************原创 2021-06-26 12:55:16 · 2070 阅读 · 0 评论 -
Linux串口驱动(2) - 线路规程
3. 总结总结一下《串口驱动(一)》和《串口驱动(二)》两部分做了哪些初始化。如上图所示,前面的初始化部分,主要就是对以上的四个操作函数集进行填充、注册。现在串口驱动的整体框架也就出来了,tty_core层对于tty_io.c等文件,line discipline层对应于tty_ldisc.c等文件,serial_driver层对应serial_core.c、imx.c等文件。下一篇博客详细分析串口设备的打开过程,这里...原创 2021-06-24 22:56:39 · 1293 阅读 · 0 评论 -
Linux串口驱动(4) - write详解
经过前面三个部分的初始化,后面的操作就是直接使用前面的配置了。1. 用户空间write的操作实现tty_write -->ld = tty_ldisc_ref_wait(tty); -->wait_event(tty_ldisc_wait, (ld = tty_ldisc_try(tty)) != NULL); //tty_ldisc_wait等待队列一直等待直到等待的条件成立,所以接下来的关键要看tty_ldisc_try(tty)这个函数...原创 2021-06-26 13:21:08 · 1805 阅读 · 0 评论 -
Linux串口驱动(1) - serial层
1. serial 层的初始化以IMX6的串口驱动为例,文件在drivers/tty/serial/imx.c,初始化概述如下:module_init(imx_serial_init) -->uart_register_driver(&imx_reg); -->tty_set_operations(normal, &uart_ops); -->driver->ops = op; -->tty_register_...原创 2021-06-23 23:19:57 · 1643 阅读 · 0 评论