UART调试

本文介绍了如何通过`/proc/tty/drivers`和`/proc/interrupts`来查看Linux串口驱动信息及中断处理情况。在`serial`驱动中添加打印以监控接收和发送数据,并排查了数据接收不畅的问题,提到了可能存在的多APP占用串口的冲突。同时,通过`lsof`命令检查串口使用情况以辅助诊断。

proc/tty/drivers

在这里插入图片描述依次为:driver_name,设备节点前缀,主设备号,次设备号范围,类型

proc/tty/driver/

px30_evb:/ # ls proc/tty/driver/
fiq-debugger serial usbserial
px30_evb:/ # cat proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A mmio:0xFF030000 irq:10 tx:0 rx:0 RTS|DTR
1: uart:16550A mmio:0xFF158000 irq:13 tx:0 rx:0 RTS|CTS|DTR
2: uart:unknown port:00000000 irq:0
3: uart:unknown port:00000000 irq:0
4: uart:16550A mmio:0xFF170000 irq:14 tx:0 rx:0 RTS|DTR
5: uart:unknown port:00000000 irq:0

proc/interrupts

查看中断产生的次数

添加打印

可以在接收或者发送的函数中,添加打印信息,确认驱动是否正常的接收或者发送数据,如在serial8250_rx_chars 函数中添加:

+
+       if(up->port.line == 0 || up->port.line == 1){
+         printk("uart0/1 -----rx-------- %02x---------------- \n", ch);
+       }
+       uart_insert_char(port, lsr, UART_LSR_OE, ch, flag
+ 		
+ 		if(up->port.line == 0 ||up->port.line == 1){
+         printk("uart0/1 -----rx---tty_flip_buffer_push---ok--- \n");

数据偶尔接收不到

在驱动中,添加打印,如果驱动中确认可以接收到,但是APP出现偶尔接收不到数据的情况,可以先查看下,是否有多个APP正在使用串口,如:

lsof | grep ttyS4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值