UART read过程分析
参考代码
串口核心层:
drivers/tty/serial/serial_core.cTTY层:
drivers/tty/tty_io.c行规程:
drivers/tty/tty_ldisc.c
drivers/tty/n_tty.c
read 过程
APP 读:
使用行规程来读
无数据时休眠UART 接收到数据,产生硬件中断
在中断处理函数中,从硬件上读入数据发给行规程 行规程处理后存入buffer 唤醒APP
APP 在行规程中得到数据
源码解析
drivers/tty/tty_io.c
这里的ld ->ops 是 n_tty.c 文件中的tty_ldisc_N_TTY 结构体,详情见: Uart驱动 open流程
drivers/tty/n_tty.c
当UART 硬件上,有数据产生时,触发中断, 读入 数据并且 发送给行规程,行规程得到数据后,唤醒APP
uart_insert_char(port, lsr, UART_LSR_OE, ch, flag); //将数据插入tty_port 的tty_buffer中
tty_flip_buffer_push(&port->state->port); //通知行规程
UART read过程分析相关推荐
- 嵌入式linux启动过程分析,嵌入式Linux裸机开发(二)——S5PV210启动过程分析
嵌入式Linux裸机开发(二)--S5PV210启动过程分析 一.iROM启动方式简介 友善之臂Smart210开发板的SoC为三星S5PV210,S5PV210采用iROM启动方式进行启动,通过查阅 ...
- 嵌入式linux s5pv210,嵌入式Linux裸机开发(二)——S5PV210启动过程分析
嵌入式Linux裸机开发(二)--S5PV210启动过程分析 一.iROM启动方式简介友善之臂Smart210开发板的SoC为三星S5PV210,S5PV210采用iROM启动方式进行启动,通过查阅三 ...
- Linux UART驱动分析及测试
1.Linux TTY驱动程序框架 Linux TTY驱动程序代码位于/drivers/tty下面.TTY的层次接口包括TTY应用层.TTY文件层.TTY线路规程层.TTY驱动层.TTY设备驱动层.T ...
- Linux内核中断号映射过程分析(三)
1.概述 早期的CPU中断数量较少,中断系统简单,Linux内核可以将硬件中断号直接映射为软件中断号.但随着CPU支持的中断数量越来越多,中断系统也被设计的越来越复杂,一个CPU内部可能包含多个中断控 ...
- HarmonyOS镜像,HarmonyOS驱动加载过程分析
HDF(硬件驱动程序基础)驱动程序框架为驱动器开发人员提供驱动程序框架功能,包括驱动器加载,驱动服务管理和驱动程序消息传递机制.它旨在构建一个统一的驱动器架构平台,为驾驶开发人员提供更准确,更高效的开 ...
- 【LM401】USART串口配置过程 uart.c 代码解析
[LM401]USART串口配置过程 1. 板载资源说明 2.uart.c 串口配置文件修改 2.1接口文件 uart_if.c 2.2整体配置流程 2.2.1初始化串口,分配DMA 2.2.2配置串 ...
- UART驱动情景分析-read
一.源码框架回顾 shell读数据,一开始的时候没有就休眠.数据从串口发送到驱动,驱动接收到中断,驱动读取串口数据,这个数据会传给行规程. 行规程获取到数据后,会回显.按下删除就删除一个字符,按下回车 ...
- UART驱动情景分析-write
一.write过程分析 App写: 使用行规程来写 数据最终存入uart_state->xmit的buffer里 硬件发送: 使用硬件驱动中uart_ops->start_tx开始发送 具 ...
- Android窗口管理服务WindowManagerService计算窗口Z轴位置的过程分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8570428 通过前面几篇文章的学习,我们知道了 ...
- Android窗口管理服务WindowManagerService计算Activity窗口大小的过程分析
在Android系统中,Activity窗口的大小是由WindowManagerService服务来计算的.WindowManagerService服务会根据屏幕及其装饰区的大小来决定Activity ...
最新文章
- 高校分配男朋友?当专业第一遇到了专业第一......
- g++ 编译pybind
- Sublime Text 快捷键
- 私有属性和方法-伪私有属性和方法
- Unity 2017 Game Optimization 读书笔记 Scripting Strategies Part 5
- Stream流方法引用
- MS SQL入门基础:sql 其它命令
- 一段程序结束等待进行下一段程序_c++实战篇(十二),debug调试程序
- FireFox nsSessionStore.js 问题报错解决
- display:none的进一步理解
- oracle比较日期大小函数输出,oracle 日期比较及惯用函数
- html页面分页显示问题,HTML分页,显示分页页面内容
- 01. Couchbase简介-CouchBase从0到50
- 圆桌:满足客人空座需求,准备最少的椅子,合理安排客人入座圆桌
- 用JS写一个《俄罗斯方块》小游戏
- 数据分区与放置策略解析_数据策略好数据与坏数据
- 路由器配置和静态路由
- 深度学习-根据日志画loss-acc折线图
- 拓展编辑器(八)_重写菜单
- OCM实战之RAC集群打补丁