树莓派串口配置
2017-11-20 18:17
344 查看
由于树莓派的uart不够使用,所以我们采用的是usb转串口。但是这个就出现了一个问题。当usb设备根据插入的顺序不同时,其设备节点会不同,有时候是ttyUSB0,有时候是ttyUSB1或者其他。根据这个问题,经过百度找到了简单的解决办法。那就是通过udev来静态设置文件节点的名称。关于udev这里不做讨论。我是直接套用的。
首先以ttyUSB0 为例:
输入udevadm info -a /dev/ttyUSB0
打印信息如下:
looking at device
'/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/ttyUSB0/tty/ttyUSB0':
KERNEL=="ttyUSB0"
SUBSYSTEM=="tty"
DRIVER==""
looking at parent device
'/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/ttyUSB0':
KERNELS=="ttyUSB0"
SUBSYSTEMS=="usb-serial"
DRIVERS=="ch341-uart"
ATTRS{port_number}=="0"
looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0':
KERNELS=="1-1.4:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="ch341"
ATTRS{bInterfaceClass}=="ff"
ATTRS{bInterfaceSubClass}=="01"
ATTRS{bInterfaceProtocol}=="02"
ATTRS{bNumEndpoints}=="03"
ATTRS{authorized}=="1"
ATTRS{supports_autosuspend}=="1"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bInterfaceNumber}=="00"
looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4':
KERNELS=="1-1.4"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{devpath}=="1.4"
ATTRS{idVendor}=="1a86"
ATTRS{speed}=="12"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bMaxPacketSize0}=="8"
ATTRS{busnum}=="1"
ATTRS{devnum}=="4"
ATTRS{configuration}==""
ATTRS{bMaxPower}=="96mA"
ATTRS{authorized}=="1"
ATTRS{bmAttributes}=="80"
ATTRS{bNumConfigurations}=="1"
ATTRS{maxchild}=="0"
ATTRS{bcdDevice}=="0254"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{quirks}=="0x0"
ATTRS{version}==" 1.10"
ATTRS{urbnum}=="20"
ATTRS{ltm_capable}=="no"
ATTRS{removable}=="removable"
ATTRS{idProduct}=="7523"
ATTRS{bDeviceClass}=="ff"
ATTRS{product}=="USB2.0-Serial"
.........打印信息后面还有,但是这里不需要,所以没有贴出来........
好了,上面的蓝色字体就是我们需要的信息。
至于为什么要选择这个
looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4':里面的信息,而不是其他的,我的理解是,系统是根据这个里面的idVendor和idProduct来区分ttyUSB0,ttyUSB1....等USB转串口设备。
然后以同样的方法得到其他的信息。然后在目录/etc/udev/rules.d下新建文件188-usbtty.rules这个文件命名可以不同,但是需要是.rules文件。
在文件里面输入内容
KERNEL=="ttyUSB*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", KERNELS=="1-1.2",NAME="ttyUSB0", SYMLINK+="myuart0"
KERNEL=="ttyUSB*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", KERNELS=="1-1.3",NAME="ttyUSB1", SYMLINK+="myuart1"
KERNEL=="ttyUSB*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", KERNELS=="1-1.4",NAME="ttyUSB2", SYMLINK+="myuart2"
KERNEL=="ttyUSB*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", KERNELS=="1-1.5",NAME="ttyUSB3", SYMLINK+="myuart3"
其中SYMLINK+="myuart0"就是你想要设置的静态的文件节点的名称。重启系统后可以查看到如下:
首先以ttyUSB0 为例:
输入udevadm info -a /dev/ttyUSB0
打印信息如下:
looking at device
'/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/ttyUSB0/tty/ttyUSB0':
KERNEL=="ttyUSB0"
SUBSYSTEM=="tty"
DRIVER==""
looking at parent device
'/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/ttyUSB0':
KERNELS=="ttyUSB0"
SUBSYSTEMS=="usb-serial"
DRIVERS=="ch341-uart"
ATTRS{port_number}=="0"
looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0':
KERNELS=="1-1.4:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="ch341"
ATTRS{bInterfaceClass}=="ff"
ATTRS{bInterfaceSubClass}=="01"
ATTRS{bInterfaceProtocol}=="02"
ATTRS{bNumEndpoints}=="03"
ATTRS{authorized}=="1"
ATTRS{supports_autosuspend}=="1"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bInterfaceNumber}=="00"
looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4':
KERNELS=="1-1.4"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{devpath}=="1.4"
ATTRS{idVendor}=="1a86"
ATTRS{speed}=="12"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bMaxPacketSize0}=="8"
ATTRS{busnum}=="1"
ATTRS{devnum}=="4"
ATTRS{configuration}==""
ATTRS{bMaxPower}=="96mA"
ATTRS{authorized}=="1"
ATTRS{bmAttributes}=="80"
ATTRS{bNumConfigurations}=="1"
ATTRS{maxchild}=="0"
ATTRS{bcdDevice}=="0254"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{quirks}=="0x0"
ATTRS{version}==" 1.10"
ATTRS{urbnum}=="20"
ATTRS{ltm_capable}=="no"
ATTRS{removable}=="removable"
ATTRS{idProduct}=="7523"
ATTRS{bDeviceClass}=="ff"
ATTRS{product}=="USB2.0-Serial"
.........打印信息后面还有,但是这里不需要,所以没有贴出来........
好了,上面的蓝色字体就是我们需要的信息。
至于为什么要选择这个
looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4':里面的信息,而不是其他的,我的理解是,系统是根据这个里面的idVendor和idProduct来区分ttyUSB0,ttyUSB1....等USB转串口设备。
然后以同样的方法得到其他的信息。然后在目录/etc/udev/rules.d下新建文件188-usbtty.rules这个文件命名可以不同,但是需要是.rules文件。
在文件里面输入内容
KERNEL=="ttyUSB*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", KERNELS=="1-1.2",NAME="ttyUSB0", SYMLINK+="myuart0"
KERNEL=="ttyUSB*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", KERNELS=="1-1.3",NAME="ttyUSB1", SYMLINK+="myuart1"
KERNEL=="ttyUSB*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", KERNELS=="1-1.4",NAME="ttyUSB2", SYMLINK+="myuart2"
KERNEL=="ttyUSB*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", KERNELS=="1-1.5",NAME="ttyUSB3", SYMLINK+="myuart3"
其中SYMLINK+="myuart0"就是你想要设置的静态的文件节点的名称。重启系统后可以查看到如下:
相关文章推荐
- 树莓派3串口配置
- 树莓派3配置串口,JAVA实现串口通讯(2016年3月版本,重点提示,3月之后的版本配置貌似不一样)
- 树莓派3B 串口配置教程
- 树莓派串口配置
- 树莓派串口配置
- 树莓派入手(烧写系统,调整分区,配置Java环境,串口GPS配置) 分类: Raspberry Pi 2015-04-09 21:13 145人阅读 评论(0) 收藏
- 树莓派相关-树莓派串口配置方法
- 树莓派入手(烧写系统,调整分区,配置Java环境,串口GPS配置)
- [zju嵌入式]树莓派体验之初始配置(使用串口线)
- 树莓派相关-树莓派串口配置方法(转)
- 树莓派的串口驱动配置通信
- 树莓派的串口配置
- 树莓派3之串口配置
- 树莓派3B 修改默认串口配置
- 树莓派 零 Zero W 串口SSH登录和无线配置
- 树莓派3 配置文件conf 高分辨率 串口引脚重映射
- 树莓派相关-树莓派串口配置方法
- 树莓派上手--无显示器情况下配置串口config.txt
- 树莓派笔记--串口配置
- 树莓派相关-树莓派串口配置方法