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 串口工具链知识图谱

下面这张图帮你理清串口工具链的整体脉络:

串口调试工具链知识图谱 串口调试工具链 minicom cu picocom screen 特性 菜单式配置 支持脚本/日志 功能最全面 特性 命令行直连 无依赖 适合脚本调用 特性 轻量级 退出还原终端 干净利落 特性 会话保持 断网不丢数据 远程调试利器 stty:底层串口参数控制 查看参数:stty -F /dev/xxx -a 设置参数:stty -F /dev/xxx 115200 cs8 原始模式:stty -F /dev/xxx raw

这张图把串口工具链分成了三层:上层是四个常用工具,各有侧重;底层是 stty,所有工具最终都通过它和内核串口驱动打交道。理解了这个层次关系,你就能根据实际场景灵活选用工具。