嵌入式Linux调试:microcom 串口工具

前言

在嵌入式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% 的乱码问题由参数不匹配导致,按优先级排查:

  1. 确认两端波特率完全一致;
  2. 确认数据位、校验位、停止位一致(microcom 固定 8N1);
  3. 检查串口电平是否匹配(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 版本用法基本一致。

相关推荐
叼烟扛炮1 小时前
Linux 学习笔记(九):自动化构建神器 Make 与 Makefile
linux·运维·服务器
lisanmengmeng1 小时前
监控Kubernetes集群的GPU资源(三)
linux·容器·kubernetes
蜡笔羊驼1 小时前
ModuleNotFoundError: No module named ‘torchvision.transforms.functional_tensor‘
linux·人工智能·python
箓维1 小时前
线程池&&线程安全与可重入
linux·网络·安全
程序员-Benothing1 小时前
Linux端口与连接排查:ss、lsof、nc、telnet、curl
linux·运维·服务器
邪修king2 小时前
Re:Linux系统篇(三十七):进程间通信Chapter4:System V 共享内存深度解析:为什么它是最快的 IPC?
android·linux·运维
张张123y3 小时前
2026 Agent 框架怎么选?拆 3 层底层逻辑(运行循环 / 记忆 / 工具协议)+ 一张决策表
linux·ubuntu·microsoft·langgraph·mcp·crewai·agent 框架
零域行者3 小时前
Linux入门基础命令
linux·服务器·安全·web安全
打工仔折腾 AI3 小时前
Linux 网络编程:从零掌握 TCP Socket 编程与 C++ 实战落地
linux·网络·人工智能·后端·python·tcp/ip·性能优化