ls /dev/tty[a-zA-Z]*

/dev/ttyprintk /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3 /dev/ttyS4 /dev/ttyS5 /dev/ttyS6 /dev/ttyS7 /dev/ttyUSB0 /dev/ttyUSB1

列出设备:/dev/ttyprintkttyS0~ttyS7ttyUSB0/ttyUSB1,分三类说明用途、硬件来源、使用场景。

一、/dev/ttyprintk 内核打印虚拟终端

  1. 类型:纯虚拟设备,无硬件串口对应
  2. 作用:接收内核 printk 日志输出,dmesgjournalctl 底层读取该节点
  3. 不能用作外设串口通信: 无法接传感器、RS485、模块收发数据,读写只会打印 / 读取系统内核日志。

二、/dev/ttyS0 ~ /dev/ttyS7:SoC 硬件原生 UART 串口

ttySx = SOC 片内硬件串口(地平线 RDK X3/X5 内置多路硬件 UART 控制器)

通用特性

  1. 硬件直出引脚,TX/RX/GND,支持 RS232/RS485 外接电平转换板;
  2. 无 USB 转换芯片,时序稳定、无 USB 抖动、适合工业长期通信;
  3. 占用开发板物理引脚,受设备树配置控制,可复用为 GPIO。

典型分配(RDK 标准)

  1. ttyS0系统调试串口(Console) 出厂默认绑定内核打印、uboot 日志,串口终端调试; 若程序占用,串口控制台会失效,调试信息看不到。
  2. ttyS1 ~ ttyS7用户可用业务串口 外接蓝牙模块、GPS、RS485 传感器、Modbus 设备、电机驱动器等。

使用注意

  • 操作需要 dialout 用户组权限;
  • 收发必须交叉接线:A-TX → B-RX,共 GND;
  • 可通过 v4l2-ctl/GPIO 搭配控制 RS485 收发使能引脚。

三、/dev/ttyUSB0、/dev/ttyUSB1:USB 转串口设备

  1. 硬件来源USB 转 TTL 芯片(CH340/CP2102/PL2303)模块插入 USB 口生成;
  2. 特点
    • 热插拔:插拔 USB 设备序号会漂移(拔插后 USB0 变 USB1);
    • 依赖 USB 总线,大数据量存在轻微时延抖动;
    • 无需占用主板原生 UART 引脚,扩展串口首选;
  3. 适用场景:临时外接调试工具、外置传感器、上位机调试;
  4. 缺点:多路 USB 转串口同时使用会抢占 USB 带宽,时序稳定性弱于ttySx硬件串口。

四、快速区分命令

  1. 查看硬件归属(区分原生 UART/USB 串口)

bash

运行

# 查看ttyS硬件信息
dmesg | grep ttyS
# 查看USB串口挂载信息
dmesg | grep ttyUSB
  1. 查看串口权限

bash

运行

ls -l /dev/tty*
# 串口归属组 dialout
  1. 查看当前哪个进程占用串口

bash

运行

sudo lsof /dev/ttyS0
sudo lsof /dev/ttyUSB0

五、选型建议

  1. 产品量产、稳定 Modbus / 传感器通信:优先 ttyS1~ttyS7 硬件串口;
  2. 系统调试打印:使用 ttyS0,业务程序尽量不占用;
  3. 临时扩展、外接电脑调试:使用 ttyUSB0/1
  4. 日志查看、内核调试:ttyprintk,不可业务通信。

六、结合上一段串口测试代码使用示例

运行脚本时输入设备名可选:

  • 硬件业务串口:/dev/ttyS1
  • USB 转串口:/dev/ttyUSB0 禁止选择:/dev/ttyprintk(无法收发自定义数据)

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐