Linux串口映射

发布时间 2023-05-20 13:41:53作者: CNPolaris

Linux串口映射

在进行Linux开发过程中,发现串口插入的顺序不同,串口号会随之变化,这是由于Linux的特性决定的。根据设备的上电顺序分配ID,但是 这样在程序运行过程中,出现串口变化的话,会导致程序出现错误,因此我们采用串口映射的方式,给物理串口分配一个别名,利用别名来避免这种问题。

使用下面命令查看串口号

ls /dev | grep ttyUSB

可以看到

ttyUSB0

ttyUSB0是我需要进行别名设置的串口

使用以下命令查看USB端口详细信息

lsusb

可以看到以下信息,其中ID为1a86:7523的USB-Serial,USB转串口设备,就是我们需要设置别名的设备

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 008: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 001 Device 003: ID 04d9:a09e Holtek Semiconductor, Inc. USB Gaming Mouse
Bus 001 Device 002: ID 1a2c:4bc8 China Resource Semico Co., Ltd USB Keyboard
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

下面进行规则设置,执行以下命令

sudo vi /etc/udev/rules.d/10-local.rules

添加下面的内容,每添加一个设备映射,就添加一行该命令,然后把KERNELS和SYMLINK改成自己需要的就行

ACTION=="add",KERNELS=="1-2:1.0",SUBSYSTEMS=="usb",MODE:="0777",SYMLINK+="name"

执行以下命令

ls /sys/class/tty/ttyUSB* -l

可以得到以下内容

lrwxrwxrwx 1 root root 0 5月  20 13:29 /sys/class/tty/ttyUSB0 -> ../../devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/ttyUSB0/tty/ttyUSB0

将以下内容添加到/etc/udev/rules.d/10-local.rules

ACTION=="add",KERNELS=="1-4:1.0",SUBSYSTEMS=="usb",MODE:="0777",SYMLINK+="serial0"

保存后退出

执行以下命令

ls /dev/serial*

可以看到以及映射成功的串口

/dev/serial0

/dev/serial:
by-id  by-path