树莓派串口配置

来源:互联网 发布:澳际留学 知乎 编辑:程序博客网 时间:2024/06/01 07:29

由于树莓派的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':里面的信息,而不是其他的,我的理解是,系统是根据这个里面的idVendoridProduct来区分ttyUSB0ttyUSB1....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"就是你想要设置的静态的文件节点的名称。重启系统后可以查看到如下: