Hikey 970 USB转串口驱动安装

在已经发布的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

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

results matching ""

    No results matching ""