百度
360搜索
搜狗搜索

linux多个串口如何区分详细介绍

在 Linux 系统中,多个串口设备的区分主要通过设备文件命名规则、硬件类型及系统工具来实现。以下是详细说明:

一、串口设备分类及命名规则

Linux 下的串口设备根据硬件类型分为三类,命名规则不同:

1.
传统硬件串口(COM 口,基于 BIOS/ISA)

  • 设备名/dev/ttyS0/dev/ttyS1/dev/ttyS2...
    对应传统 PC 的串口(如 COM1 对应ttyS0,COM2 对应ttyS1,依此类推),由主板硬件或 BIOS 配置决定。
  • 适用场景:老旧主板自带串口,或通过 PCI/PCIe 扩展卡添加的传统串口(部分驱动可能仍映射为ttySx)。

2.
USB 转串口设备(如 PL2303、CH340、CP2102 等芯片)

  • 设备名
    • 多数驱动映射为/dev/ttyUSB0/dev/ttyUSB1...(按插入顺序编号,首次插入为 0,下次为 1,依此类推)。
    • 部分 USB-CDC 类设备(如 Arduino 串口)可能映射为/dev/ttyACM0/dev/ttyACM1...

  • 特点:依赖 USB 转串口驱动,设备名随插入顺序变化(可通过 udev 规则固定)。

3.
PCI/PCIe 扩展串口卡(多端口串口卡)

  • 设备名
    • 由驱动决定,可能是/dev/ttySx(传统驱动)或/dev/ttyACMx/dev/ttyUSBx(新型驱动,如 FTDI 多端口卡)。
    • 例如:4 端口 PCIe 串口卡可能对应ttyS2ttyS3ttyS4ttyS5(需结合硬件文档确认)。

二、区分串口设备的常用方法

1.
通过系统日志(dmesg)查看设备连接信息

  • 插入设备后,执行以下命令实时监控设备接入:bash
        

  • 输出示例(USB 转串口设备):plaintext
    [12345.678] usb 1-2: FTDI USB Serial Device converter now attached to ttyUSB0  # 设备对应ttyUSB0

    [12346.901] usb 1-3: ch341-uart converter now attached to ttyUSB1 # 第二个设备对应ttyUSB1

  • 传统串口 / PCI 卡:plaintext
    [0.123] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A  # 主板自带串口ttyS0

    [5.678] pci 0000:01:00.0: Serial controller: device XYZ Corp. (ttyS2 registered) # PCI卡串口ttyS2

2.
列出所有串口设备文件

bash

  /dev/tty*  

  • 常见设备名分类:
    • 传统串口:ttyS0ttyS1...
    • USB 转串口(非 CDC 类):ttyUSB0ttyUSB1...
    • USB-CDC 设备(如 Arduino):ttyACM0ttyACM1...
    • PCI/PCIe 串口卡:可能混合上述命名,需结合dmesg或硬件驱动确认。

3.
通过 USB 设备信息区分(针对 USB 转串口)

  • 查看 USB 设备的厂商和型号:bash
    lsusb  

  • 结合dmesgVID:PIDttyUSBx的对应关系,确定具体设备。

4.
通过 PCI 设备信息区分(针对 PCI/PCIe 串口卡)

  • 列出 PCI 设备:bash
    lspci      

  • 示例输出:plaintext
    02:00.0 Serial controller: Silicon Labs CP210x UART Bridge (rev 02)  # PCI卡对应设备,查看驱动映射的tty名

三、固定设备名称(避免插入顺序影响)

若需稳定设备名(如脚本中使用固定串口),可通过udev 规则实现:

1.
为 USB 设备创建规则

  • 基于VID/PID或设备序列号:bash

    lsusb

    /etc/udev/rules.d/99-serial.rules

  • 添加规则(示例:将 VID:PID=1a86:7523 的设备命名为ttyUSB_weather_station):plaintext
    SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="ttyUSB_weather_station"

2.
为 PCI 设备创建规则

  • 基于 PCI 设备的vendordevice ID:bash
    lspci   

  • 添加规则(示例):plaintext
    SUBSYSTEM=="tty", ATTRS{vendor}=="0x1234", ATTRS{device}=="0x5678", SYMLINK+="ttyPCI_serial"

3. 应用规则

bash

 udevadm control --reload-rules  

四、总结

  1. 命名规则:根据硬件类型区分ttySx(传统 / PCI 串口)、ttyUSBx/ttyACMx(USB 转串口)。
  2. 实时查看:通过dmesg监控设备接入,结合lsusb/lspci定位硬件信息。
  3. 固定名称:使用 udev 规则按 VID/PID 或序列号命名,确保设备名稳定。

通过以上方法,可清晰区分 Linux 下的多个串口设备,并根据需求配置稳定的访问方式。

阅读更多 >>>  linux英文如何改成中文的

网站数据信息

"linux多个串口如何区分"浏览人数已经达到20次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:linux多个串口如何区分的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!