/********************串口外设绑定必然知道 以下信息***********************
KERNEL=="ttyUSB*"
解析:匹配内核设备名称以"ttyUSB"开头的设备(USB转串口设备)配符*表示匹配任意后续字符
ATTRS{idVendor}=="10c4"
解析:匹配供应商ID为10c4的设备(Silicon Labs的VID)
ATTRS{idProduct}=="ea60"
解析:匹配产品ID为ea60的设备(CP2102N USB转串口芯片)
ATTRS{serial}=="b22c78616a56ee118f0131cfde9da576"
解析:精确匹配指定序列号的设备(确保规则仅作用于特定硬件)
******************************************************
第一步:查看linux串口信息(dVendor}=="10c4",{idProduct}=="ea60"):
//方法一:lsusb
wxyz@wxyz-Default-string:~$ lsusb
Bus 001 Device 005: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
//方法二 先查看当前连接是USB几号口 :dmesg | grep tty
wxyz@wxyz-Default-string:~$ dmesg | grep tty
[ 4.699544] usb 1-4: cp210x converter now attached to ttyUSB1
wxyz@wxyz-Default-string:~$ udevadm info -a -p /sys/class/tty/ttyUSB1
KERNELS=="ttyUSB1"
ATTRS{serial}=="badcd81b6a56ee11b13534cfde9da576"
ATTRS{idProduct}=="ea60"
ATTRS{idVendor}=="10c4"
/*************udevadm也可以cd IMU的驱动文件夹下,查看****************
*cd robot_ws/src/driver/imu/imu
*udevadm info /dev/ttyUSB
******************************************/
第二步:编写USB的规则文件
//进入设备规则文件存放目录
wxyz@wxyz-Default-string:~$ cd /etc/udev/rules.d
//新建USB端口映射规则
wxyz@wxyz-Default-string:/etc/udev/rules.d$ sudo vim com_imu.rules
[sudo] wxyz 的密码:
/******************写入以下内容*******************
#!/bin/bash
echo 'KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="b22c78616a56ee118f0131cfde9da576",MODE:="0666", GROUP:="dialout", SYMLINK+="imu"' >/etc/udev/rules.d/imu.rules
*******************************************************/
/**************************逐句解析************************************
#!/bin/bash
echo 'KERNEL=="ttyUSB*",
ATTRS{idVendor}=="10c4",
ATTRS{idProduct}=="ea60",
ATTRS{serial}=="b22c78616a56ee118f0131cfde9da576",
MODE:="0666", GROUP:="dialout",
SYMLINK+="imu"' >/etc/udev/rules.d/imu.rules
以下是逐句解析该bash脚本代码:
#!/bin/bash
作用:声明,指定该脚本使用bash shell解释器执行
echo '...'
作用:echo命令用于输出字符串内容,单引号包裹的内容将被原样输出(不会解析变量和特殊字符)
KERNEL=="ttyUSB*"
解析:匹配内核设备名称以"ttyUSB"开头的设备(USB转串口设备)配符*表示匹配任意后续字符
ATTRS{idVendor}=="10c4"
解析:匹配供应商ID为10c4的设备(Silicon Labs的VID)
ATTRS{idProduct}=="ea60"
解析:匹配产品ID为ea60的设备(CP2102N USB转串口芯片)
ATTRS{serial}=="b22c78616a56ee118f0131cfde9da576"
解析:精确匹配指定序列号的设备(确保规则仅作用于特定硬件)
MODE:="0666"
解析:设置设备文件权限为rw-rw-rw-(所有用户可读写)
GROUP:="dialout"
解析:将设备文件所属组设置为dialout组(常见于串口设备访问权限控制)
SYMLINK+="imu"
解析:为设备创建名为"imu"的符号链接(在/dev目录下生成/dev/imu)
>/etc/udev/rules.d/imu.rules
解析:将echo输出的内容重定向写入udev规则文件
文件路径:/etc/udev/rules.d/imu.rules(自定义规则文件)
文件作用:定义设备插入时的自动配置规则
***********************************************************************/
第三步,查看绑定结果
wxyz@wxyz-Default-string:~$ cd /etc/udev/rules.d/
wxyz@wxyz-Default-string:/etc/udev/rules.d$ ls /dev/tty
/dev/tty (没有看到dev/imu)
//重新载入
wxyz@wxyz-Default-string:/etc/udev/rules.d$ sudo udevadm trigger
[sudo] wxyz 的密码:
//再次查看
wxyz@wxyz-Default-string:/etc/udev/rules.d$ ll /dev/imu
lrwxrwxrwx 1 root root 7 3月 27 11:22 /dev/imu -> ttyUSB1
完成