Linux串口映射
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