前言
在嵌入式Linux开发、工控设备调试、精简路由系统中,串口是最基础的调试与通信接口。当设备使用 BusyBox 构建根文件系统时,往往没有 minicom、screen 等重型终端工具,而 microcom 作为 BusyBox 内置的轻量级串口工具,凭借极小的体积和极简的用法,成为了嵌入式场景下的首选串口调试工具。
本文完整整理了 microcom 的功能说明、参数详解、实战示例、跨平台参数对照与常见问题排查,可直接复制用于日常开发与调试。
一、工具概述
microcom 是 BusyBox 集成的一款极简串口通信工具,本质是一个标准输入输出与串口设备的双向字节转发器:将键盘输入(stdin)转发到串口,同时将串口返回的数据输出到终端(stdout)。
核心特点
- 极致轻量:BusyBox 内置,无额外依赖,资源占用极低
- 即用型:无需配置文件,一条命令即可启动
- 默认参数 :固定
8N1格式(8位数据位、无校验、1位停止位),兼容绝大多数工业设备 - 场景适配:特别适合嵌入式开发板、工控机、路由器等精简Linux系统
与同类工具对比
| 工具 | 特点 | 适用场景 |
|---|---|---|
| microcom | 极简、BusyBox内置、仅基础收发 | 嵌入式设备、精简系统、快速调试 |
| minicom | 功能完整、支持配置、终端仿真 | PC端完整串口调试 |
| screen | 通用终端工具、支持串口 | Linux PC临时调试 |
二、语法与参数详解
命令语法
microcom [-d DELAY] [-t TIMEOUT] [-s SPEED] [-X] TTY
参数完整说明
| 参数 | 单位 | 说明 |
|---|---|---|
-s SPEED |
bps | 设置串口波特率,常用值:9600、19200、115200、921600;默认值为115200 |
-d DELAY |
ms | 每向串口发送一个字节前,最多等待 DELAY 毫秒的串口输出,用于适配响应较慢的设备 |
-t TIMEOUT |
ms | 超时自动退出:若标准输入和串口两端均无数据持续 TIMEOUT 毫秒,自动退出程序 |
-X |
- | 禁用 NUL 字符和 Ctrl+X 的特殊含义;默认情况下 Ctrl+X 是退出快捷键 |
TTY |
- | 必填参数 ,串口设备节点路径,如 /dev/ttyS0、/dev/ttyUSB0、/dev/ttymxc4 |
📌 重要特性:BusyBox 版本的 microcom 仅支持 8N1 格式,不支持修改奇偶校验、数据位、停止位和硬件流控。
三、常用实战示例
1. 基础串口连接(最常用)
连接 NXP i.MX 系列处理器的串口4,波特率 115200:
microcom -s 115200 /dev/ttymxc4
连接 USB 转串口设备,波特率 9600:
microcom -s 9600 /dev/ttyUSB0
进入交互模式后,键盘输入的内容会直接发送到串口,串口返回的数据实时打印到屏幕;按 Ctrl + X 即可退出程序。
2. 带超时自动退出
5秒内无数据交互自动退出,适合脚本自动化采集场景:
microcom -s 115200 -t 5000 /dev/ttymxc4
3. 非交互式发送指令(管道方式)
无需进入交互模式,直接通过管道发送 AT 指令给 4G/Modem 模块:
echo -e "AT\r\n" | microcom -s 9600 /dev/ttyUSB2
4. 保存串口输出到日志文件
将串口所有输出数据保存到文件,用于事后分析:
microcom -s 115200 /dev/ttymxc4 > serial_output.log
5. 批量发送指令文件
将预写好的指令列表批量发送给串口设备:
cat cmd_list.txt | microcom -s 115200 /dev/ttymxc4
四、与 Windows SSCOM 5.13.1 参数对照表
跨平台调试时,可参考下表保证两端参数完全一致:
| 参数项 | microcom 设置 | SSCOM 5.13.1 设置 | 说明 |
|---|---|---|---|
| 波特率 | -s 115200 |
下拉选择 115200 | 两端必须完全一致,否则乱码 |
| 数据位 | 固定8位 | 8 | microcom 不可修改 |
| 校验位 | 无校验 | None | microcom 不可修改 |
| 停止位 | 1位 | 1 | microcom 不可修改 |
| 流控 | 无流控 | None | microcom 不可修改 |
| 退出方式 | Ctrl+X | 点击「关闭串口」 | - |
五、常见问题与排查
1. 如何退出程序?
- 默认模式下,按
Ctrl + X退出; - 如果启动时加了
-X参数,Ctrl+X会作为普通字符发送,此时只能通过超时退出或杀进程结束。
2. 提示 Permission denied 权限不足
-
方案1:使用 root 用户执行命令;
-
方案2:将当前用户加入
dialout用户组:sudo usermod -a -G dialout $USER
3. 接收数据乱码
99% 的乱码问题由参数不匹配导致,按优先级排查:
- 确认两端波特率完全一致;
- 确认数据位、校验位、停止位一致(microcom 固定 8N1);
- 检查串口电平是否匹配(TTL/RS232)。
4. 能收不能发 / 能发不能收
- 硬件接线问题:检查 TX、RX 是否接反;
- 确认设备串口未被其他进程占用。
5. 如何确认串口设备节点?
- 主板原生物理串口:
/dev/ttyS0~/dev/ttySn - USB 转串口线:
/dev/ttyUSB0~/dev/ttyUSBn - USB CDC 类设备(开发板、调试器):
/dev/ttyACM0~/dev/ttyACMn - NXP i.MX 系列原生串口:
/dev/ttymxc0~/dev/ttymxcN
6. 为什么用 cat 命令看不到串口数据?
cat 命令不会初始化串口配置,只有串口被正确 open 之后才能读取数据;microcom 会完成串口初始化,因此可以正常收发。请勿用 cat /dev/ttyxxx 来判断串口是否有数据。
六、总结
microcom 是嵌入式 Linux 环境下最便捷的串口调试工具之一,虽然功能简单,但胜在轻量、无依赖、启动快,完全满足基础的串口收发、日志查看、指令发送需求。掌握其用法可以大幅提升底层调试效率,是嵌入式开发人员的必备基础命令。
本文基于 BusyBox v1.23.2 版本编写,其他 BusyBox 版本用法基本一致。