参考代码

串口核心层:
drivers/tty/serial/serial_core.cTTY层:
drivers/tty/tty_io.c行规程:
drivers/tty/tty_ldisc.c
drivers/tty/n_tty.c

流程分析

tty_writeld->ops->write  //调用行规程的write 函数

行规程(n_tty.c) 的 write函数:

在串口核心层的write 函数中,会先把数据存入buffer ,然后启动串口发送数据

uart_writecirc = &state->xmit;while (1) {c = CIRC_SPACE_TO_END(circ->head, circ->tail, UART_XMIT_SIZE);if (count < c)c = count;if (c <= 0)break;memcpy(circ->buf + circ->head, buf, c);circ->head = (circ->head + c) & (UART_XMIT_SIZE - 1);buf += c;count -= c;ret += c;}__uart_startport->ops->start_tx(port); //调用具体硬件的start_tx函数,将数据发送出去

UART write过程分析相关推荐

  1. 嵌入式linux启动过程分析,嵌入式Linux裸机开发(二)——S5PV210启动过程分析

    嵌入式Linux裸机开发(二)--S5PV210启动过程分析 一.iROM启动方式简介 友善之臂Smart210开发板的SoC为三星S5PV210,S5PV210采用iROM启动方式进行启动,通过查阅 ...

  2. 嵌入式linux s5pv210,嵌入式Linux裸机开发(二)——S5PV210启动过程分析

    嵌入式Linux裸机开发(二)--S5PV210启动过程分析 一.iROM启动方式简介友善之臂Smart210开发板的SoC为三星S5PV210,S5PV210采用iROM启动方式进行启动,通过查阅三 ...

  3. Linux UART驱动分析及测试

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

  4. Linux内核中断号映射过程分析(三)

    1.概述 早期的CPU中断数量较少,中断系统简单,Linux内核可以将硬件中断号直接映射为软件中断号.但随着CPU支持的中断数量越来越多,中断系统也被设计的越来越复杂,一个CPU内部可能包含多个中断控 ...

  5. HarmonyOS镜像,HarmonyOS驱动加载过程分析

    HDF(硬件驱动程序基础)驱动程序框架为驱动器开发人员提供驱动程序框架功能,包括驱动器加载,驱动服务管理和驱动程序消息传递机制.它旨在构建一个统一的驱动器架构平台,为驾驶开发人员提供更准确,更高效的开 ...

  6. 【LM401】USART串口配置过程 uart.c 代码解析

    [LM401]USART串口配置过程 1. 板载资源说明 2.uart.c 串口配置文件修改 2.1接口文件 uart_if.c 2.2整体配置流程 2.2.1初始化串口,分配DMA 2.2.2配置串 ...

  7. UART驱动情景分析-read

    一.源码框架回顾 shell读数据,一开始的时候没有就休眠.数据从串口发送到驱动,驱动接收到中断,驱动读取串口数据,这个数据会传给行规程. 行规程获取到数据后,会回显.按下删除就删除一个字符,按下回车 ...

  8. UART驱动情景分析-write

    一.write过程分析 App写: 使用行规程来写 数据最终存入uart_state->xmit的buffer里 硬件发送: 使用硬件驱动中uart_ops->start_tx开始发送 具 ...

  9. Android窗口管理服务WindowManagerService计算窗口Z轴位置的过程分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8570428 通过前面几篇文章的学习,我们知道了 ...

  10. Android窗口管理服务WindowManagerService计算Activity窗口大小的过程分析

    在Android系统中,Activity窗口的大小是由WindowManagerService服务来计算的.WindowManagerService服务会根据屏幕及其装饰区的大小来决定Activity ...

最新文章

  1. Worktile完成新一轮融资,将发力研发管理赛道
  2. js画布组件(canvas/canvas)
  3. iif能用到mysql中吗_请问ORACLE中IIF如何用
  4. 中文编程语言_文言文编程语言,让你明白什么叫“中文比英语还难”。
  5. filter笔记(主要看到黑马教程的ppt)
  6. 传智播客--刘意Java基础视频-深入浅出精华版
  7. 美通企业周刊 | 麦当劳阿里巴巴开启全域合作;老佛爷百货中国第三店落户贵阳;OPPO推出首款智能电视...
  8. [改造]微信缩放字体view的改造
  9. excel冻结行和列_说一说有些人在EXCEL中还不会用的冻结窗格
  10. 20145322 Exp5 MS08_067漏洞测试
  11. 这个夏天,飞到北纬18°去玩海——带着小样儿去三亚(二)
  12. 详解redis高级特性和工作原理
  13. RabbitMQ优化消息阻塞系列(一)解决方案梳理
  14. iPhone 13 用塑料瓶做天线, 网友炸了!!
  15. 必背英文面试口语(超级实用!!!)
  16. GD32F450ZIT6脉冲捕获会丢失脉冲的问题
  17. 五、MUX-VLAN QinQ技术
  18. linux zip/unzip命令
  19. vr性能测试软件,SteamVR性能测试工具
  20. 总结 | 有关激光雷达的QA

热门文章

  1. NSR | 国科大王艳芬组中国草地多维资源梯度上的单峰生产力与生物多样性关系...
  2. MySQL索引原理以及查询优化
  3. 阈值分割 Threshold(阈值)算子
  4. 10个办法带你提高工作效率
  5. 澳洲7人自驾选什么车_自驾车在哪里
  6. SRE实战手册-基础篇
  7. HashMap源码分析与实现
  8. oracle瘦身,数据库瘦身
  9. win7计算机系统减肥,win7系统怎么瘦身?教您系统瘦身方法
  10. 人生的两大奇迹思维:杠杆效应+飞轮效应《方法论》