在我的 Linux 上得到以下输出。TX、RX、IRQ、RTS、DTR、DSR 在此上下文中是什么意思。我已阅读有关数据终端就绪和请求发送的内容,但需要帮助来理解下面显示的示例中的它们。TX 和 RX 旁边的数字是否表示相应缓冲区中的当前字符数?
cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:0 rx:0
1: uart:16550A port:000002F8 irq:3 tx:111780 rx:1321 RTS|DTR|DSR
答案1
您正在查看 Linux 串行终端(例如 UART 或 USART)设备驱动程序报告的硬件属性、统计数据和状态。
TX 和 RX 旁边的数字是否表示各自缓冲区中的当前字符数?
这些数字表示设备已处理(分别发送和接收)的帧数。
帧大小是可配置的;帧大小可以是 8 位的全字节,也可以是 ASCII 字符的 7 位。
帧大小通常也称为字符大小,尤其是在 UART/USART 数据表中,它们不假定“字符”等同于 ASCII 代码。
start
该帧由和位分隔stop
。
在这种情况下,TX、RX、IRQ、RTS、DTR、DSR 是什么意思。
这irq
是(硬件)打断该设备正在使用的号码。
附加的活动状态控制线(例如 RTS、DTR、DSR)会被报告。
如果列出了控制线的名称,则该线处于已声明状态。
如果未列出控制线的名称,则该线未声明或甚至未连接。
但是,如果控制线未正确(电气)下拉/上拉并保持“浮动”,则控制线的报告仍然可能是虚假的(即已列出但未连接) 。
表示port:
该设备在给定的I/O 端口地址。
其他设备可能会使用内存映射 I/O 地址,以 指定MMIO:
。
要了解为什么您提到“缓冲”有歧义,请参阅文章串行驱动程序用于串行终端和设备驱动程序的关系,以及所涉及的各种缓冲区。
附录
除了发送和接收的帧数之外,还可以报告其他(接收器)统计数据(大于零时):
fe: framing errors (stop bit not found)
pe: parity errors
brk: break conditions
oe: receiver overrun errors
bo: buffer overrun errors (not all drivers accumulate this number)
这些接收器统计数据通常是硬件检测到的事件的计数,因此请查阅相关数据表以了解硬件报告的具体方式和内容。
除了您提到的RTS、DTR、DSR控制线外,还可以报告CTS、CD、RI。
该信息由 Linux 内核例程报告uart_line_info()在里面驱动程序/tty/串行/serial_core.c文件。