java 操作uart串口_【tty】应用程序调用write写串口调用流程

2023-05-16

这几天在跟进串口使能流控后收发异常问题,特简单梳理了下应用程序执行write操作的调用流程,在这简单记录下,平台为全志方案

tty_io.c         tty_io.c                         n_tty.c            serial_core.c                                       sunxi_uart.c

tty_write()--->do_tty_write()--->n_tty_write()--->uart_write()--->uart_start()--->__uart_start()--->sw_uart_start_tx()

--->sw_uart_irq()--->sw_uart_handle_tx()

有几点注意事项:

1.流控里的RTS、CTS

RTS:request to send, 请求发送,输出口,告诉对端串口设备,本机已准备好接收数据,低有效

CTS: clear to send, 清除发送,输入口,告诉本机串口设备,对端已准备好接收数据,可开始发送数据,低有效

2.linux tty驱动

linux tty驱动内部维护着一个大小为4k的环形缓冲区(UART_XMIT_SIZE),用于临时保存应用层写下来的串口数据,若写满了,则应用层会被暂停写入

3.收发流程

初始时,RTS、CTS为低电平,本机开始发送数据,当对端设备缓冲区满时,会将自己的RTS拉高,告诉对方暂停发送数据。此时如果发送端的应用程序继续写数据的话,会将数据临时写入tty驱动中的环形缓冲区中,当对端处理完数据,重新拉低RTS时,再把缓冲区里的数据一次性发送出去

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 操作uart串口_【tty】应用程序调用write写串口调用流程 的相关文章

随机推荐