Ubuntu16.04重映射端口号(串口和网口)

操作系统:Ubuntu16.04

内核版本:4.14

linux中相同类型的USB设备起来时候驱动加载顺序不同,公司设备的接口需要统一管理命名,为了方便操作,这里对设备所有的串口和网口进行端口号重映射。

1.串口

设备里总共有8路串口,四路是pcie扩出来的,驱动里定义好了端口号,默认识别是ttyF0~ttyF3;另外四路是USB通过cp2108扩出来的,默认识别是ttyUSB0~ttyUSB3;另外加了一个有方N720的4G模块,识别出来是6个ttyUSB端口。因此这两种USB端口因加载顺序不同不容易操作。(4G模块用到两个端口,发送AT指令的和与CPU通信的)

 查看ttyUSB0的绑定信息,按相同方式查找其他端口的绑定信息

~# udevadm info /dev/ttyUSB0
P: /devices/platform/soc/soc:internal-regs@d0000000/d005e000.usb/usb1/1-1/1-1.1/1-1.1:1.0/ttyUSB0/tty/ttyUSB0
N: ttyUSB0
S: COM5
S: serial/by-id/usb-Silicon_Labs_CP2108_Quad_USB_to_UART_Bridge_Controller_F8F79B0F7507EBBD11E982537F0E577-if00-port0
S: serial/by-path/platform-d005e000.usb-usb-0:1.1:1.0-port0
E: DEVLINKS=/dev/serial/by-id/usb-Silicon_Labs_CP2108_Quad_USB_to_UART_Bridge_Controller_F8F79B0F7507EBBD11E982537F0E577-if00-port0 /dev/COM5 /dev/serial/by-path/platform-d005e000.usb-usb-0:1.1:1.0-port0
E: DEVNAME=/dev/ttyUSB0
E: DEVPATH=/devices/platform/soc/soc:internal-regs@d0000000/d005e000.usb/usb1/1-1/1-1.1/1-1.1:1.0/ttyUSB0/tty/ttyUSB0
E: ID_BUS=usb
E: ID_MODEL=CP2108_Quad_USB_to_UART_Bridge_Controller
E: ID_MODEL_ENC=CP2108\x20Quad\x20USB\x20to\x20UART\x20Bridge\x20Controller
E: ID_MODEL_ID=ea71
E: ID_PATH=platform-d005e000.usb-usb-0:1.1:1.0
E: ID_PATH_TAG=platform-d005e000_usb-usb-0_1_1_1_0
E: ID_REVISION=0190
E: ID_SERIAL=Silicon_Labs_CP2108_Quad_USB_to_UART_Bridge_Controller_F8F79B0F7507EBBD11E982537F0E577
E: ID_SERIAL_SHORT=F8F79B0F7507EBBD11E982537F0E577
E: ID_TYPE=generic
E: ID_USB_DRIVER=cp210x
E: ID_USB_INTERFACES=:ff0000:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=Silicon_Labs
E: ID_VENDOR_ENC=Silicon\x20Labs
E: ID_VENDOR_FROM_DATABASE=Cygnal Integrated Products, Inc.
E: ID_VENDOR_ID=10c4
E: MAJOR=188
E: MINOR=0
E: SUBSYSTEM=tty
E: TAGS=:systemd:
E: USEC_INITIALIZED=9241067
E: net.ifnames=0

在输出的数据中找到类似“1-1.1:1.0”形式的项,这里在/etc/udev/rules.d/下创建一个 99-usb-serial.rules 文件,内容如下

KERNEL=="ttyF0",SYMLINK+="COM1"
KERNEL=="ttyF1",SYMLINK+="COM2"
KERNEL=="ttyF2",SYMLINK+="COM3"
KERNEL=="ttyF3",SYMLINK+="COM4"
KERNELS=="1-1.1:1.0", SUBSYSTEM=="tty", SYMLINK+="COM5"
KERNELS=="1-1.1:1.1", SUBSYSTEM=="tty", SYMLINK+="COM6"
KERNELS=="1-1.1:1.2", SUBSYSTEM=="tty", SYMLINK+="COM7"
KERNELS=="1-1.1:1.3", SUBSYSTEM=="tty", SYMLINK+="COM8"

KERNELS=="1-1.4:1.2", SUBSYSTEM=="tty", SYMLINK+="ttyMODEM"
KERNELS=="1-1.4:1.4", SUBSYSTEM=="tty", SYMLINK+="ttyAT"

SYMLINK是你自己定义的端口名称,这里把八路串口定义成了COM1~COM8, 4G模块用到的两个端口定义成了ttyMODEM和ttyAT。

2.网口

设备里有两路网口,eth0和eth1,这里定义成lan1和lan2查看eth的绑定信息

~# dmesg|grep eth*
[    3.501997] mvneta d0030000.ethernet eth0: Using device tree mac address 00:51:82:11:22:00
[    3.512206] mvneta d0040000.ethernet eth1: Using device tree mac address 00:51:82:11:22:01

ubuntu中会自动生成/etc/udev/rules.d/70-persistent-net.rules文件,把这个文件删除,rules文件前的序号越大优先级越小,将优先级设置的小一点,自己创建一个60-persistent-net.rules文件,内容如下

ACTION=="add", SUBSYSTEM=="net", KERNELS=="d0030000.ethernet", NAME:="lan1"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="d0040000.ethernet", NAME:="lan2"

断电重启设备,可以看到原先的端口已经重映射成了自己定义后的端口,方便了之后对端口进行的操作。

Ubuntu16.04重映射端口号(串口和网口)_第1张图片

你可能感兴趣的:(linux)