Linux 开发板串口调试:picocom 从识别到退出的完整用法

摘要:介绍 /dev/ttyUSB0 的识别、LubanCat 常用串口参数、picocom 快捷键和网络失效时的串口排障方法。

为什么需要串口

SSH 只能在网络和 sshd 正常时使用。修改启动参数、网卡配置或内核后,设备可能已经启动,但网络尚未配置;如果内核或 initramfs 出错,SSH 更无法提供线索。串口可以直接观察 U-Boot、内核、initramfs 和 systemd 日志,是嵌入式 Linux 的"最后通道"。

一、识别串口设备

开发主机执行:

bash 复制代码
sudo apt install picocom
ls /dev/ttyUSB*
ls /dev/ttyACM*
picocom --help | head

常见结果是 /dev/ttyUSB0picocom --help 开头应显示 HIGH_BAUD is enabled,否则当前构建可能不支持 1500000 波特率。拔插设备后编号可能变为 /dev/ttyUSB1,不要把编号永久写死在脚本中;生产环境可以根据 USB 设备属性建立 udev 规则。

二、使用 1500000、8N1 打开串口

LubanCat 调试串口常用参数为 1500000 波特率、8 数据位、无校验、1 停止位、关闭流控:

bash 复制代码
sudo picocom \
  --baud 1500000 \
  --flow n \
  --parity n \
  --databits 8 \
  --stopbits 1 \
  /dev/ttyUSB0

这里保留 picocom 默认的串口锁,避免两个程序同时读取同一个设备。只有明确知道锁文件机制不可用时才考虑 --nolock

如果终端出现乱码,优先检查波特率、TX/RX/GND 接线和串口电平,而不是马上修改内核。

三、正确退出 picocom

picocom 使用"前缀键 + 命令键":

text 复制代码
Ctrl-A,然后 Ctrl-X

屏幕出现 Terminating... Thanks for using picocom 即表示已经退出。直接按 Ctrl-C 通常只是把中断字符发送给目标设备上的前台程序,不会关闭 picocom。

常用快捷键:

操作 按键
显示帮助 Ctrl-ACtrl-H,也可用 Ctrl-K
退出 Ctrl-ACtrl-X
不恢复串口设置直接退出 Ctrl-ACtrl-Q
显示当前串口参数 Ctrl-ACtrl-V
发送普通 Ctrl-A 连按两次 Ctrl-A

不要把 Ctrl-ACtrl-U 当成帮助键:它会把波特率提高一档,可能立即产生乱码。参数被误改后,可退出并使用完整启动命令重新打开。

四、权限问题

临时解决:

bash 复制代码
sudo picocom /dev/ttyUSB0 -b 1500000

长期解决:

bash 复制代码
sudo usermod -aG dialout "$USER"

重新登录后,用户通常即可直接访问串口。

若提示设备忙,检查是否已有 picocom、minicom 或 ModemManager 占用:

bash 复制代码
sudo fuser -v /dev/ttyUSB0
ps -ef | grep -E '[p]icocom|[m]inicom'

不要同时运行两个串口工具。需要保存启动日志时,可以增加:

bash 复制代码
picocom --baud 1500000 --flow n --parity n \
  --databits 8 --stopbits 1 \
  --logfile serial-boot.log /dev/ttyUSB0

小结

串口调试的价值在于"网络失效时仍能看到真相"。建议每次升级内核都保留一份完整串口日志,并在日志中标注上电、重启和执行命令的时间点。

参考资料:picocom 官方 READMEpicocom 手册页

相关推荐
山岚的运维笔记1 小时前
mysql 专业笔记 -- 第 17 章:连接:连接三个具有相同名称 ID 的表
运维·数据库·笔记·后端·学习·mysql·dba
bksczm2 小时前
从 “什么是 MySQL“ 到库与表的完整操作(MySQL基础篇)
linux·数据库·mysql
企鹅的蚂蚁2 小时前
LubanCat RK3588 实时内核移植第一步:先确认硬件与系统版本
linux·lubancat·嵌入式linux·freempt_rt
是个西兰花2 小时前
网络基础1
linux·网络·c++·智能路由器
2601_962299882 小时前
Python编写Linux命令指南
linux·python·开发·命令·指南
此冬歌咏2 小时前
自动化服务器运维监控系统(python+shell)
linux·运维·服务器·开发语言·python·自动化
风景的人生2 小时前
虚拟机ip连不上(怀疑是最开始虚拟机复制造成的网络冲突)
linux·运维·服务器
Lumistory3 小时前
企业总部泛光照明运维踩坑?看完这篇少走三年弯路
运维·光照贴图
Cx330❀3 小时前
【Linux网络】深入TCP协议:从滑动窗口到拥塞控制与性能优化全景解析
linux·开发语言·网络·tcp/ip·ai·性能优化·ai编程