4. 串口调试工具链:minicom/cu/picocom安装与配置
串口调试,说白了就是嵌入式开发者的「听诊器」。板子起不来、内核 panic、驱动加载失败——第一手信息全得靠它。我这些年调试过的板子,少说也有几十种,串口工具换来换去,最后常用的也就那么几个。今天我把它们掰开揉碎了讲给你听。
4.1 三大主流串口工具对比
Linux 下串口工具不少,但真正能打的无非三款:minicom、cu、picocom。它们各有脾气,选对了能省一半时间。
| 工具 | 特点 | 适合场景 | 我的评价 |
|---|---|---|---|
| minicom | 功能全面,菜单式操作,支持脚本 | 日常调试、长时间监控 | 老牌工具,稳定但配置稍繁琐 |
| cu | 极简,命令行直连,无依赖 | 快速测试、脚本调用 | 我应急时最爱用,一句话搞定 |
| picocom | 轻量,退出即还原终端设置 | 生产环境、自动化集成 | 干净利落,不拖泥带水 |
4.2 安装与基本使用
minicom:功能最全的瑞士军刀
安装很简单:
sudo apt-get install minicom # Debian/Ubuntu
sudo yum install minicom # CentOS/RHEL
第一次用需要配置:
sudo minicom -s
进入配置菜单后,选「Serial port setup」,把这几项改好:
- A - Serial Device:改成你的串口设备,比如
/dev/ttyUSB0 - E - Bps/Par/Bits:按回车进去设波特率,嵌入式常用 115200 8N1
- F - Hardware Flow Control:选 No,很多板子不支持硬件流控
我的习惯:配置完选「Save setup as dfl」,保存为默认配置。下次直接 minicom 就能连,不用再配了。
启动连接:
minicom
退出按 Ctrl+A 然后按 X,选 Yes。
cu:一句话搞定
cu 是 uucp 包的一部分:
sudo apt-get install uucp
用法极简:
cu -l /dev/ttyUSB0 -s 115200退出时输入
~.(波浪号加点,再回车)。避坑指南:我曾经在脚本里用 cu 做自动化测试,发现它退出后终端会乱掉。后来加了个
stty sane才搞定。如果你也遇到类似问题,记得退出后重置终端。picocom:我的新宠
安装:
sudo apt-get install picocom使用:
picocom -b 115200 /dev/ttyUSB0退出按
Ctrl+A然后按Ctrl+X。picocom 有个好处——退出时自动把终端参数恢复原样。你想想看,用 minicom 退出后终端偶尔会抽风,还得手动
reset,picocom 就没这毛病。4.3 screen 作为串口终端
很多人不知道,screen 也能当串口终端用。而且它有个绝活——会话保持。你 SSH 连到服务器上开个 screen 看串口日志,网络断了,重连回来
screen -r还能接着看。用法:
screen /dev/ttyUSB0 115200常用操作:
- 退出:
Ctrl+A然后按K,再按Y确认 - 滚屏:
Ctrl+A然后按Esc,进入复制模式后用方向键翻页 - 分离会话:
Ctrl+A然后按D,会话在后台继续跑
注意:screen 默认会把串口数据缓冲起来,有时候你会觉得输出有延迟。加个 -h 10000 参数能加大回滚缓冲区,方便看历史日志。
4.4 stty:串口参数的终极控制台
stty 是 Linux 下配置终端参数的底层命令。说白了,minicom、picocom 这些工具底层调用的就是它。学会 stty,你就能直接操控串口,不用依赖任何工具。
查看当前串口参数
stty -F /dev/ttyUSB0 -a
输出示例:
speed 115200 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
信息量很大,但核心就几个:波特率、数据位、停止位、校验位、流控。
设置串口参数
嵌入式最常用的 115200 8N1 配置:
stty -F /dev/ttyUSB0 115200 cs8 -cstopb -parenb -crtscts
拆开解释:
| 参数 | 含义 |
|---|---|
115200 |
波特率 |
cs8 |
8 位数据位 |
-cstopb |
1 位停止位(去掉 - 就是 2 位) |
-parenb |
无校验(加上 parenb 启用校验) |
-crtscts |
关闭硬件流控 |
实战技巧:我调试一块新板子时,经常先跑一遍 stty -F /dev/ttyUSB0 -a 看看当前参数。如果板子输出乱码,十有八九是波特率不对。这时候我会用 stty 快速切换波特率试,比开 minicom 改配置快多了。
stty 的其他实用操作
清空串口缓冲区:
stty -F /dev/ttyUSB0 0
设置原始模式(不经过任何处理,直接透传):
stty -F /dev/ttyUSB0 raw
这个 raw 模式很重要。有些工具默认会对特殊字符做处理,比如把回车转成换行。用 raw 模式就能拿到最原始的数据。
4.5 工具链选择建议
说了这么多,到底该用哪个?我给你个参考:
- 日常调试:picocom 或 minicom,看个人喜好。我最近两年基本用 picocom。
- 远程服务器看日志:screen,断网不丢数据。
- 脚本自动化:cu 或 stty,轻量无依赖。
- 排查串口参数问题:stty,直接看底层配置。
我的建议:别只学一个工具。minicom、picocom、screen、stty 各有各的用武之地。你想想看,现场调试时 minicom 突然崩了,你连个备用的都不会,那多尴尬。
4.6 串口工具链知识图谱
下面这张图帮你理清串口工具链的整体脉络:
这张图把串口工具链分成了三层:上层是四个常用工具,各有侧重;底层是 stty,所有工具最终都通过它和内核串口驱动打交道。理解了这个层次关系,你就能根据实际场景灵活选用工具。