Linux串口调试命令是嵌入式开发、物联网设备调试以及工业控制领域中不可或缺的工具,通过这些命令可以高效地与串口设备进行通信、数据传输和故障排查,以下将详细介绍常用的Linux串口调试命令及其使用方法、参数说明和实际应用场景。

在开始使用串口命令前,首先需要确认系统是否识别到串口设备,可以通过ls /dev/ttyS*
或ls /dev/ttyUSB*
命令查看串口设备文件,其中/dev/ttyS*
通常表示内置串口,/dev/ttyUSB*
表示USB转串口设备,若未识别到设备,可检查dmesg | grep tty
命令的输出,确认内核是否正确加载了串口驱动,使用stty
命令可以查看或配置串口参数,例如stty -F /dev/ttyUSB0
可显示当前串口的波特率、数据位、停止位等设置,若需修改参数,可通过stty -F /dev/ttyUSB0 115200 cs8 -cstopb -parenb
命令将波特率设置为115200,数据位8位,无奇偶校验,1位停止位。
串口数据收发最常用的工具是minicom
和screen
。minicom
是一款功能齐全的串口终端模拟器,安装后可通过minicom -s
进入配置界面,选择串口设备、波特率等参数并保存,之后直接运行minicom -D /dev/ttyUSB0
即可打开串口终端进行交互。screen
工具则更为轻量,使用screen /dev/ttyUSB0 115200
即可快速连接串口,通过Ctrl+A
后按K
可退出连接,对于需要自动化测试的场景,expect
脚本可以结合screen
或minicom
实现非交互式串口操作,例如编写脚本自动发送指令并接收响应数据。
在进行二进制数据调试时,cat
和echo
命令结合重定向可以处理简单的数据传输,例如echo "test" > /dev/ttyUSB0
发送字符串,cat /dev/ttyUSB0
接收数据,但这种方式无法直接处理十六进制数据,此时可使用xxd
工具进行转换,例如echo -n "\x01\x02\x03" | xxd -p -r > /dev/ttyUSB0
发送十六进制数据,cat /dev/ttyUSB0 | xxd
查看接收到的十六进制格式,对于复杂的串口调试,cu
命令也是一个不错的选择,使用cu -l /dev/ttyUSB0 -s 115200
可建立串口连接,支持发送文件或交互式操作。
在调试过程中,日志记录和数据分析至关重要,可通过cat /dev/ttyUSB0 > log.txt &
命令将串口接收的数据实时保存到文件,配合grep
或awk
工具提取关键信息,若需监控串口状态,setserial
命令可查看或修改串口属性,例如setserial /dev/ttyUSB0 UART 16550A
设置UART类型。picocom
作为minicom
的轻量替代品,支持更简单的快捷键操作,使用picocom /dev/ttyUSB0 -b 115200
即可启动,通过Ctrl+A
后按X
退出。

以下是常用串口调试命令的参数说明表格:
命令 | 常用参数及说明 |
---|---|
stty | -F 设备名 :指定串口;speed 波特率 :设置波特率;cs8 :8位数据位;-cstopb :1位停止位 |
minicom | -s :进入配置模式;-D 设备名 :指定串口设备;-b 波特率 :设置波特率 |
screen | 设备名 波特率 :如screen /dev/ttyUSB0 115200 ;-L :启用日志记录 |
cu | -l 设备名 :指定串口;-s 波特率 :设置波特率;-e :执行命令后退出 |
xxd | -p :十六进制格式;-r :反向转换;-g 字节数 :每组显示字节数 |
setserial | -g 设备名 :显示当前设置;UART 类型 :设置UART类型;portaddr 地址 :设置I/O地址 |
在实际应用中,不同场景下命令的选择有所区别,快速交互调试可优先使用screen
或picocom
,自动化测试适合expect
脚本,而二进制数据调试则需依赖xxd
工具,需注意权限问题,普通用户可能需要通过sudo
或加入dialout
用户组才能访问串口设备(sudo usermod -aG dialout $USER
)。
相关问答FAQs:
Q1: 如何解决串口设备权限不足的问题?
A1: 当提示“Permission denied”时,可通过两种方式解决:一是使用sudo
临时提升权限,如sudo minicom -D /dev/ttyUSB0
;二是将当前用户加入dialout
用户组,执行sudo usermod -aG dialout $USER
后重新登录即可永久解决权限问题。

Q2: 串口数据接收时出现乱码,如何排查?
A2: 乱码通常由波特率不匹配、数据位/停止位设置错误或硬件连接问题导致,首先使用stty -F /dev/ttyUSB0
确认双方串口参数是否一致(如波特率、数据位等);其次检查串口线是否松动,或更换USB转串口模块;若问题仍存在,可尝试降低波特率(如9600)测试,排除硬件干扰因素。