news 2026/9/12 19:36:04

LubanCat RK3588 实时 Linux 开发(二):picocom 串口调试完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LubanCat RK3588 实时 Linux 开发(二):picocom 串口调试完整指南

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

适用对象:需要通过 USB-TTL 串口维护 LubanCat 的开发者。串口电平、接线和设备名必须按实际硬件确认。

文章目录

    • 本篇要解决什么问题
      • 串口调试链路
    • 为什么需要串口
    • 一、识别串口设备
    • 二、使用 1500000、8N1 打开串口
    • 三、正确退出 picocom
    • 四、权限问题
    • 五、乱码、无输出和设备忙怎么排查
      • 1. 能打开串口,但全是乱码
      • 2. 串口完全没有输出
      • 3. `Device or resource busy`
    • 六、建议把启动日志作为“升级证据”保存
    • 七、本文验收清单
    • 小结
    • 工作流实测截图
    • 专栏导航
    • 参考资料

本篇要解决什么问题

在嵌入式 Linux 内核升级中,SSH 是“方便的通道”,串口才是“兜底的通道”。如果新内核启动失败、网卡驱动没有加载、IP 地址改变,SSH 往往最先失效,而调试串口仍然可以看到 U-Boot、Kernel、initramfs 和 systemd 的原始日志。

本文重点解决四个实际问题:

  1. 如何确认 USB-TTL 在 Linux 主机上对应哪个设备节点;
  2. 为什么 LubanCat 常用1500000 8N1,以及乱码时先查什么;
  3. picocom 如何正确退出、查看参数和保存日志;
  4. 串口被占用或权限不足时如何定位。

串口调试链路

层级典型现象串口能看到什么
U-Boot启动介质、DTB、kernel image 选择错误U-Boot 命令与加载日志
Kernel内核崩溃、驱动 probe 失败earlycon、内核日志
initramfs找不到 rootfsBusyBox/initramfs 提示
systemd服务失败、网络未就绪服务启动日志与 login 提示

为什么需要串口

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

一、识别串口设备

开发主机执行:

sudoaptinstallpicocomls/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 停止位、关闭流控:

sudopicocom\--baud1500000\--flown\--parityn\--databits8\--stopbits1\/dev/ttyUSB0

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

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

三、正确退出 picocom

picocom 使用“前缀键 + 命令键”:

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

四、权限问题

临时解决:

sudopicocom /dev/ttyUSB0-b1500000

长期解决:

sudousermod-aGdialout"$USER"

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

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

sudofuser-v/dev/ttyUSB0ps-ef|grep-E'[p]icocom|[m]inicom'

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

picocom--baud1500000--flown--parityn\--databits8--stopbits1\--logfileserial-boot.log /dev/ttyUSB0

五、乱码、无输出和设备忙怎么排查

1. 能打开串口,但全是乱码

优先检查下面四项,而不是先改内核:

  1. 波特率是否为目标板实际使用值;
  2. TX/RX 是否交叉连接;
  3. GND 是否共地;
  4. USB-TTL 电平是否与板卡调试口匹配。

如果刚刚误按了 picocom 的波特率切换快捷键,退出后使用完整参数重新打开通常比继续在会话里试更可靠。

2. 串口完全没有输出

可以先确认 USB 设备节点是否存在,再执行:

ls-l/dev/ttyUSB* /dev/ttyACM*2>/dev/nullsudofuser-v/dev/ttyUSB0

如果设备节点存在但没有任何启动日志,还要确认自己连接的是板卡的调试 UART,而不是普通业务串口。

3.Device or resource busy

不要直接加--nolock绕过。先找出占用程序:

sudofuser-v/dev/ttyUSB0ps-ef|grep-E'[p]icocom|[m]inicom|[s]creen'

如果系统启用了 ModemManager,它也可能探测 USB 串口,需要结合实际环境判断是否影响当前设备。

六、建议把启动日志作为“升级证据”保存

一次内核升级至少应保留一份从上电开始的完整串口日志。日志中最好能同时看到:

  • U-Boot 选择了哪个启动项;
  • 加载了哪个 kernel、initrd 和 DTB;
  • Linux kernel release;
  • rootfs 挂载过程;
  • 最终是否出现 login 提示。

这样即使 SSH 失败,也可以通过日志区分“系统没起来”和“系统已经起来但网络没通”。

七、本文验收清单

  • 能识别/dev/ttyUSBx/dev/ttyACMx
  • 能用正确波特率看到可读启动日志;
  • 知道Ctrl-A+Ctrl-X正确退出;
  • 能定位串口占用进程;
  • 能使用--logfile保存完整启动日志。

小结

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

工作流实测截图

图1:实际使用的 /dev/ttyUSB0、1500000、8N1 和无流控参数。

图2:调试串口捕获的 DDR 与内核重启信息;串口日志是 SSH 不可用时的第一现场。

专栏导航

专栏LubanCat RK3588 实时 Linux 开发实战(第 2/13 篇)

  • 上一篇:LubanCat RK3588 实时 Linux 开发(一):移植前先确认硬件、系统与内核版本
  • 下一篇:LubanCat RK3588 实时 Linux 开发(三):SDK 环境准备与 flex、bison、LZ4 依赖排查

参考资料

  • picocom 官方 README
  • picocom 手册页

文中的版本号、接口名、设备地址和测试数据均应以自己的板卡实测为准;引用命令前请先确认当前 SDK、内核和启动布局。

标签picocom串口调试LinuxLubanCat嵌入式开发

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 19:33:01

【读点论文】SAM 2: Segment Anything in Images and Videos

SAM 2: Segment Anything in Images and Videos abstract 我们提出了 Segment Anything Model 2 (SAM 2),这是一个用于解决图像和视频中可提示的视觉分割的基础模型。我们构建了一个数据引擎,通过用户交互改进模型和数据,以收集迄今为止最大的…

作者头像 李华
网站建设 2026/9/12 19:32:52

三大AI工具降重效果对比与优化策略

1. 三大AI工具降重效果差异解析最近在学术圈和内容创作领域,关于DeepSeek、豆包和Kimi这三款AI工具在降低文本AI率方面的效果讨论很热烈。作为一名长期使用各类AI工具的内容创作者,我发现很多用户在使用这些工具进行降重时,经常会遇到效果不理…

作者头像 李华
网站建设 2026/9/12 19:30:44

RoboMaster硬件基础讲义V0.2.1:从主控板到电源系统的实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/12 19:30:16

nacos常用配置

文章目录 引言 I 常用配置 II 配置维护 创建命名空间 使用导入导出配置功能 III 中间件配置 redis.yaml datasource.yaml 引言 本文介绍了项目配置的常用设置与维护方法,包括按项目+环境创建命名空间、使用配置导入导出功能。重点展示了Redis和数据库(SQL Server)的YAML配置…

作者头像 李华
网站建设 2026/9/12 19:29:25

JTAG TAP状态机源码解析与ARM调试实战

简介:本资源是面向嵌入式开发工程师与ARM底层学习者的JTAG调试原理实践套件,聚焦硬件调试核心能力培养,解决初学者对TAP控制器状态机、边界扫描链解析及C语言级JTAG驱动实现的理解难点。压缩包共32个文件,含9个C源码与7个头文件&a…

作者头像 李华
网站建设 2026/9/12 19:27:49

手撸一个多线程永动任务!

今天教大家撸一个 Java 的多线程永动任务,这个示例的原型是公司自研的多线程异步任务项目,我把里面涉及到多线程的代码抽离出来,然后进行一定的改造。里面涉及的知识点非常多,特别适合有一定工作经验的同学学习,或者可…

作者头像 李华