由于是刚碰海思平台,而且之前也没有接触过海思的SDK,遇到非常多的坑。
本实验用的设备:
- HDMI接口的显示屏
- USB传输触摸数据
一、内核修改
来到目录:Hi3516CV500_SDK_V2.0.2.0/osdrv/opensource/kernel/linux-4.9.y 下
使用图形界面来修改内核配置,要选择对自己芯片平台的配置文件:
make ARCH=arm hi3516dv300_smp_defconfig
然后,开启 menuconfig
make ARCH=arm menuconfig
1. Input device support
为了能够在 /dev/input 下能够找到 eventX。
Device Drivers --->
Input device support --->
[*] Touchscreens --->
<*> USB Touchscreen Driver
2. HID support
USB的HID
Device Drivers --->
HID support --->
Special HID drivers --->
<*> HID Multitouch panels
3. Graphics support
显示问题,/dev/fb0。
Device Drivers --->
Graphics support --->
Frame buffer Devices --->
<*> Support for frame buffer devices --->
<*> OpenCores VGA/LCD core 2.0 framebuffer support
4. 编译并烧写
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- uImage -j8
然后将 /acrh/arm/boot/ 下的 uIamge 烧写即可,这边选择用tftp,毕竟只更改个kernel而已,u-boot和根文件都不需要动,所以用HiTool就很不明智:
tftp 0x82000000 uImage_hi3516dv300_smp
sf probe 0
sf erase 0x100000 0x400000 # 擦除 4M 空间
sf write 0x82000000 0x100000 0x400000 # 烧写内核
二、HiFb
如果你这时候用tslib去打开 /dev/fb0 的话,它会告诉你是没有权限的。需要初始化海思的MMP。
来到SDK包下的:Hi3516CV500_SDK_V2.0.2.0/smp/a7_linux/mpp/sample/hifb
输入make编译后,拷贝到开发板上,然后运行:
./sample_hifb 0 &
0是格式选择中的其中一个,&为了后台运行。
然后运行tslib的触摸屏矫正程序:
/usr/lib/arm-tslib/bin/ts_calibrate
点击屏幕最边界的十字架,一般是左上、右上、右下、左下后,最后是中间。
矫正成功后,测试一下:
/usr/lib/arm-tslib/bin/ts_test