ROS交流群
ROS Group
产品服务
Product Service
开源代码库
Github
官网
Official website
技术交流
Technological exchanges
激光雷达
LIDAR
ROS教程
ROS Tourials
深度学习
Deep Learning
机器视觉
Computer Vision

Hikey 970 USB转串口驱动安装



  • 在已经发布的hikey 970 Debian系统中是没有包含U转串驱动的。在没有安装驱动的情况下插上U转串设备时在/dev下面是没有ttyUSB设备的。

    安装驱动需要自己编译对应的驱动程序。安装方法如下。

    下载Linux内核源代码

    执行下面的指令下载hikey linux内核源代码

    git clone https://github.com/96boards-hikey/linux
    # 切换到hikey 970分支
    cd linux
    git checkout hikey970-v4.9
    

    配置内核源代码

    获取内核配置文件

    cp /proc/config.gz ~/
    gzip -d ~/config.gz
    # 进入内核源代码文件夹
    cd linux
    # 将内核配置文件复制到此处
    cp ~/config .config
    sudo chmod 666 .config
    # 配置内核文件
    sudo apt-get install libncurses5-dev
    make mrproper
    make menuconfig
    

    正常情况下会显示如下的内核配置界面
    0_1528521707773_2018-06-09 13-21-03 的屏幕截图.png
    找到 Device Drivers–>USB Support --> USB Serial Converter Support
    将其设置成M。编译内核module有两种模式,一种是直接编译到内核里面,另一种是编译成独立的.ko文件module。我们采用的是.ko的模式。这样不用重新编译内核更加方便。
    继续进入此选项将想要编译的驱动设置成M,如果不清楚自己的型号可以全部设置成M
    设置完成后选择保存,之后再退出此界面

    编译驱动module

    执行下面的语句开始编译内核

    make modules_prepare
    make M=drivers/usb/serial
    

    正常情况下应该能够看到终端输出如下

      LD      drivers/usb/serial/built-in.o
      Building modules, stage 2.
      MODPOST 50 modules
      CC      drivers/usb/serial/aircable.mod.o
      LD [M]  drivers/usb/serial/aircable.ko
      CC      drivers/usb/serial/ark3116.mod.o
      LD [M]  drivers/usb/serial/ark3116.ko
      CC      drivers/usb/serial/belkin_sa.mod.o
      LD [M]  drivers/usb/serial/belkin_sa.ko
      CC      drivers/usb/serial/ch341.mod.o
      LD [M]  drivers/usb/serial/ch341.ko
      CC      drivers/usb/serial/cp210x.mod.o
      LD [M]  drivers/usb/serial/cp210x.ko
      CC      drivers/usb/serial/cyberjack.mod.o
      LD [M]  drivers/usb/serial/cyberjack.ko
      CC      drivers/usb/serial/cypress_m8.mod.o
      LD [M]  drivers/usb/serial/cypress_m8.ko
      CC      drivers/usb/serial/digi_acceleport.mod.o
      LD [M]  drivers/usb/serial/digi_acceleport.ko
      CC      drivers/usb/serial/empeg.mod.o
      LD [M]  drivers/usb/serial/empeg.ko
      CC      drivers/usb/serial/f81232.mod.o
      LD [M]  drivers/usb/serial/f81232.ko
      CC      drivers/usb/serial/ftdi_sio.mod.o
      LD [M]  drivers/usb/serial/ftdi_sio.ko
      CC      drivers/usb/serial/garmin_gps.mod.o
      LD [M]  drivers/usb/serial/garmin_gps.ko
      CC      drivers/usb/serial/io_edgeport.mod.o
      LD [M]  drivers/usb/serial/io_edgeport.ko
      CC      drivers/usb/serial/io_ti.mod.o
      LD [M]  drivers/usb/serial/io_ti.ko
      CC      drivers/usb/serial/ipaq.mod.o
      LD [M]  drivers/usb/serial/ipaq.ko
      CC      drivers/usb/serial/ipw.mod.o
      LD [M]  drivers/usb/serial/ipw.ko
      CC      drivers/usb/serial/ir-usb.mod.o
      LD [M]  drivers/usb/serial/ir-usb.ko
      CC      drivers/usb/serial/iuu_phoenix.mod.o
      LD [M]  drivers/usb/serial/iuu_phoenix.ko
      CC      drivers/usb/serial/keyspan.mod.o
      LD [M]  drivers/usb/serial/keyspan.ko
      CC      drivers/usb/serial/keyspan_pda.mod.o
      LD [M]  drivers/usb/serial/keyspan_pda.ko
      CC      drivers/usb/serial/kl5kusb105.mod.o
      LD [M]  drivers/usb/serial/kl5kusb105.ko
      CC      drivers/usb/serial/kobil_sct.mod.o
      LD [M]  drivers/usb/serial/kobil_sct.ko
      CC      drivers/usb/serial/mct_u232.mod.o
      LD [M]  drivers/usb/serial/mct_u232.ko
    
    

    编译完成之后可以在drivers/usb/serial中看到生成了许多.ko文件。这些就是我们需要的驱动文件。

    安装驱动module

    # 创建module文件目录
    sudo mkdir -p /lib/modules/$(uname -r)/kernel/drivers/usb/serial/
    sudo cp drivers/usb/serial/*.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial/
    # 复制depmod依赖文件
    sudo cp ~/linux/modules.order /lib/modules/$(uname -r)/
    sudo cp ~/linux/modules.builtin /lib/modules/$(uname -r)/
    # 生成对应文件
    cd /lib/modules/$(uname -r)
    sudo depmod -a
    # 加载驱动
    sudo modprobe pl2303
    

    测试驱动

    查看驱动是否正常加载

    lsmod
    

    正常输出如下

    Module                  Size  Used by
    ftdi_sio               49152  0
    pl2303                 20480  0
    usbserial              40960  2 ftdi_sio,pl2303
    

    可以看到pl2303驱动已经成功加载。

    这时再插上U转串试一下

    0_1528522919559_2018-06-09 13-41-46 的屏幕截图.png

    可以看到已经有ttyUSB0了。至此串口已可以正常使用了。

    自动加载驱动

    修改 /etc/modules文件
    在其中加入想要加载的内核模块的名称,比如对于我的设备就是pl2303。文件内容如下

    # /etc/modules: kernel modules to load at boot time.
    #
    # This file contains the names of kernel modules that should be loaded
    # at boot time, one per line. Lines beginning with "#" are ignored.
    pl2303
    

    保存退出,下次在系统启动时就会自动加载这个驱动了。