BBB自定义Yocto镜像下ttyS1 UART写入超时故障排查求助
排查BeagleBone Black自定义Yocto镜像UART ttyS1异常问题的步骤
1. 硬件与设备树配置排查
- 对比ttyS1与ttyS4的设备树节点参数,查看
/proc/device-tree/serial@48022000(ttyS1对应基地址)与serial@48024000(ttyS4对应基地址)的差异,重点检查:clock-frequency是否匹配硬件时钟规格fifo-size配置是否一致,是否启用FIFO功能- 流控相关属性(如
cts-gpios/rts-gpios)是否误配置(若硬件未接流控引脚,不应设置此类属性)
- 用
config-pin命令验证ttyS1对应引脚的复用状态:
确保引脚未被其他外设占用。config-pin P9.24 uart config-pin P9.26 uart config-pin -q P9.24 config-pin -q P9.26
2. 内核驱动与串口参数检查
- 对比ttyS1与ttyS4的串口参数,执行:
重点核对波特率、奇偶校验、停止位,以及流控参数(stty -F /dev/ttyS1 -a stty -F /dev/ttyS4 -acrtscts/ixon/ixoff),同时检查min/time等超时参数是否合理。 - 强制关闭流控后测试长数据发送:
若问题消失,说明流控配置与硬件实际状态不匹配。stty -F /dev/ttyS1 -crtscts -ixon -ixoff echo -n "test" > /dev/ttyS1 - 查看UART驱动运行状态:
观察ttyS1的cat /proc/tty/driver/omap_uarttx_fifo/rx_fifo占用率、中断计数,排查是否存在FIFO溢出或中断异常。 - 对比自定义Yocto镜像与TI SDK镜像的内核配置,检查UART相关选项(如
CONFIG_SERIAL_OMAP、CONFIG_SERIAL_OMAP_CONSOLE等)是否一致,排除驱动功能缺失。
3. 应用层与系统环境验证
- 绕过QT,用原生工具测试:
- 用
screen或minicom连接ttyS1,发送长数据(如连续输入字符),观察是否卡顿 - 执行大文件写入测试:
同时用dd if=/dev/zero of=/dev/ttyS1 bs=1024 count=1dmesg -w实时监控内核日志,排查是否有隐性错误提示。
- 用
- 检查ttyS1的权限配置:
确保当前用户属于ls -l /dev/ttyS1 groups $USERdialout组,拥有串口读写权限。 - 排查系统服务是否占用ttyS1:
禁止不必要的串口服务(如getty)后重新测试。systemctl list-units | grep ttyS1
4. Yocto镜像专属配置核对
- 检查Yocto构建中是否启用了异常的UART设备树overlay,查看
local.conf或bblayers.conf中是否有修改UART配置的补丁或overlay项。 - 对比TI SDK镜像与自定义镜像的rootfs内容,重点检查
/etc/securetty、/etc/profile等文件中是否有针对ttyS1的特殊配置。 - 核对内核版本,若自定义镜像使用的内核版本与SDK差异较大,尝试切换至SDK同款内核版本重新构建测试,排查驱动版本bug。
内容的提问来源于stack exchange,提问作者Thomas Snyman
相关产品推荐
相关产品推荐

