Navigation

    蓝鲸ROS机器人论坛

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

    Hikey 970 USB转串口驱动安装

    技术交流
    pl2303 usb hikey970 usb to serial
    2
    13
    6709
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • weijiz
      weijiz last edited by weijiz

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

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

      下载Linux内核源代码

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

      git clone --single-branch -b hikey970-v4.9 --depth=1 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
      # 将内核配置文件复制到此处
      make mrproper
      cp ~/config .config
      sudo chmod 666 .config
      # 配置内核文件
      sudo apt-get install libncurses5-dev
      sudo apt-get install bc
      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
      sudo make -j4 modules # 需要执行这个才会生成modules.order,modules.builtin
      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
      

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

      1 Reply Last reply Reply Quote 0
      • robutun
        robutun last edited by

        本人开始用的是leubuntu 按照教程编译驱动module后
        进行到安装驱动module发现缺少depmod依赖文件
        modules.order 和 modules.builtin都没有找到
        换到了lebian后也是同样的问题

        weijiz 1 Reply Last reply Reply Quote 0
        • weijiz
          weijiz @robutun last edited by weijiz

          @robutun 在 Hikey 970 USB转串口驱动安装 中说:

          行到安装驱动module发现缺少depmod依赖文件

          我又试了下确实有问题。估计是内核更新了。现在驱动没办法做成ko文件了。

          robutun 1 Reply Last reply Reply Quote 0
          • robutun
            robutun @weijiz last edited by

            @weijiz 那该如何处理
            我试着下了一个ko文件
            但insmod失败 显示invalid

            weijiz 1 Reply Last reply Reply Quote 0
            • weijiz
              weijiz @robutun last edited by

              @robutun 我更新了这篇文章,现在应该可以了。

              robutun 2 Replies Last reply Reply Quote 0
              • robutun
                robutun @weijiz last edited by

                @weijiz 多谢 等下试试

                1 Reply Last reply Reply Quote 0
                • robutun
                  robutun @weijiz last edited by

                  @weijiz 不好意思 再来打扰一下
                  现在进行到最后一步 sudo modprobe pl2303
                  然后就卡在那了 另开窗口lsmod也是同样的没反应

                  weijiz 1 Reply Last reply Reply Quote 0
                  • weijiz
                    weijiz @robutun last edited by

                    @robutun 这个我没有遇到过,不太清楚

                    robutun 1 Reply Last reply Reply Quote 0
                    • robutun
                      robutun @weijiz last edited by

                      @weijiz 您好。
                      最近在hikey970上又遇到一个问题,可能和内核有关。
                      我想通过x11vnc远程控制,图形化rviz。
                      这个方法是在网上看到的,之前试过其他的方法远程不了rviz。
                      现在遇到的是x11vnc开启时,会出现如下错误:
                      shmget(scanline)failed
                      shmget:function not implemented
                      我查了可能的原因是内核中缺少svsv ipc
                      我尝试了源码编译内核但没有解决这个问题。
                      不知道中间哪一步出错了。
                      我的步骤是
                      make menuconfig
                      make -j8
                      make modules_install
                      make install
                      mkinitramfs 4.** -o /boot/initrd.img-4. **
                      update-grub2

                      weijiz 1 Reply Last reply Reply Quote 0
                      • weijiz
                        weijiz @robutun last edited by

                        @robutun x11vnc我也没法运行,还没成功过

                        robutun 2 Replies Last reply Reply Quote 0
                        • robutun
                          robutun @weijiz last edited by

                          @weijiz 这样啊
                          我不知道能不能通过编译内核来解决
                          你可以试一下

                          1 Reply Last reply Reply Quote 0
                          • robutun
                            robutun @weijiz last edited by

                            @weijiz
                            今天我在x11vnc的官网上看到一个和shmget:Function not implemented差不多的问题
                            FAQ里Q71 有提到x11vnc fail with shmget: No space left on device or Minor opcode of failed request: 1 (X_ShmAttach)?
                            回答里有提出通过禁用shmget来避免这个问题 在x11vnch 后加入-noshm
                            我试过这个方法 成功地打开了rviz
                            我之后再试试内核编译 能不能解决shmget的问题

                            weijiz 1 Reply Last reply Reply Quote 0
                            • weijiz
                              weijiz @robutun last edited by

                              @robutun 感谢分享

                              1 Reply Last reply Reply Quote 0
                              • 1 / 1
                              • First post
                                Last post
                              Copyright © 2015-2023 BlueWhale community