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
正常情况下会显示如下的内核配置界面 找到 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转串试一下
可以看到已经有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
保存退出,下次在系统启动时就会自动加载这个驱动了。