前面我们已经实现了TFT屏幕移植【全志V3S开发】(六)-TFT屏幕适配,为了实现一个真正意义上的linux小电脑,还需要为V3S适配一个USB HID键盘。
一、设备树修改
我们使用的设备树是sun8i-v3s-licheepi-zero-dock.dts,但是其中并不包含USB相关的设备树配置,有关设备树的配置均在sun8i-v3s-licheepi-zero.dts中,我们将sun8i-v3s-licheepi-zero.dts中的USB部分设备复制进sun8i-v3s-licheepi-zero-dock.dts中,并将&usb_otg的dr_mode属性从“otg”改为"host"。主要包含以下内容:
&ehci0 {
status = "okay";
};
&ohci0 {
status = "okay";
};
&usb_otg {
dr_mode = "host";
status = "okay";
};
&usbphy {
usb0_id_det-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>;
status = "okay";
};
修改完成的sun8i-v3s-licheepi-zero-dock.dts如下所示:
二、修改menuconfig
1. 清理之前的linux kernel配置:
make distclean
2. 导入配置,在Licheepi_MY_LCD_defconfig的基础上进行修改:
export ARCH=arm
export CROSS_COMPILE=$CROSS_COMPILE
make Licheepi_MY_LCD_defconfig
3. 修改menuconfig
make menuconfig
按照如下进行修改:
#开启USB新设备通知
Device Drivers --->
[*] USB support --->
[*] USB announce new devices
#其余USB配置已经默认勾选
保存退出:
make savedefconfig
cp defconfig arch/arm/configs/Licheepi_MY_USB_defconfig
下次可以直接调用配置文件:
make Licheepi_MY_USB_defconfig
三、编译安装
1. 编译内核和设备树:
make -j16
make -j16 modules
sudo make -j16 modules_install
make dtbs
2. 将zImage和sun8i-v3s-licheepi-zero-dock.dtb复制到nfs目录下:
cp arch/arm/boot/zImage /home/daemonchen/linux/tftpboot -f
cp arch/arm/boot/dts/sun8i-v3s-licheepi-zero-dock.dtb /home/daemonchen/linux/tftpboot -f
四、修改启动项
为了能在TFT屏幕终端使用键盘,需要修改根文件系统的etc/inittab:
cd /home/daemonchen/linux/nfs/rootfs/etc
sudo vi inittab
#add: tty0::askfirst:-/bin/sh
修改完成的inittab如图所示:
五、启动测试
1. 由于荔枝派只有一个micro-usb口,故需要用USB-HUB进行拓展,将键盘接在USB-HUB上,上电启动,Linux内核会自动检测到USB-HUB和键盘,如下图所示:
2. 在SecureCRT端查看/dev/input下的事件:
3. 我的键盘对应的事件是event2,用hexdump查看键盘产生的事件:
则说明键盘驱动没有问题。
4. 在终端上查看键盘输入,发现一行"Please press Enter to activate this console",则说明可以在终端TFT使用键盘,查看根文件目录正常!
至此,USB-HID设备移植完毕!