触摸屏驱动移植
创建input目录
由于某些原因导致/dev目录下没有Input目录的解决方法,当然如果存在的话,可直接跳过
cd /rootfs/etc
vi mdev.conf
在mdev.conf文件中输入
event.* 0:0 0660 @(mkdir -p input&&mv $MDEV input)
mice 0:0 0660 @(mkdir -p input&&mv $MDEV input)
mouse.* 0:0 0660 @(mkdir -p input&&mv $MDEV input)
移植gslx680驱动
1)将驱动源码(gslX680.c gslX680.h gsl_point_id )复制到/kernel/derivers/input/touchscreen
2)/kernel/derivers/input/touchscreen/Makefile文件添加
obj-$(CONFIG_TOUCHSCREEN_GSLX680) +=gslX680.0 gsl_point_id
3)/kernel/derivers/input/touchscreen/Kconfig文件添加
config TOUCHSCREEN_GSLX680
tristate "9tripod GSL1680 Touch Panel Controller"
depends on I2C
help
This enables support for FocalTech over I2C based touchscreens.
4)重新编译
make distclean //删除
make x210ii_qt_defconfig
make menuconfig //查看Device Drivers->Input device support->Touchscreens->9tripod GSL1680 Touch Panel Controller是否选中
make -j4
5)测试
//1.查看内核是否已成功安装
cat /proc/bus/input/devices
//2.打印测试(滑动屏幕出现乱码)
cat /dev/input/event2
移植tslib
准备工作:
将内核源代码里的kernel/include/linux/input.h中的
#define EV_VERSION 0x010001
改为:
#define EV_VERSION 0x010000
使其与编译器的EV_VERSION (arm-2009q3/arm-none-linux-gnueabi/libc/usr/include/linux/input.h)相同
1)解压tslib压缩包
2)配置
cd tslib
./autogen.sh
./configure --host=arm-none-linux-gnueabi
--prefix=$(pwd)/tmp
CC=(编译器绝对路径/arm-none-linux-gnueabi-gcc)
ac_cv_func_malloc_0_nonnull=yes
make
make install
成功后会在安装目录生成include lib etc bin四个文件夹
file /bin/ts_test 查看是否为编译器正确编译
若出现下面内容,说明编译正确
ts_test: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.27, with debug_info, not stripped
将四个文件夹的内容复制到根文件系统相应相对应文件夹中
说明:
--host:交叉编译器的前缀
ac_cv_func_malloc_0_nonnull=yes 一定要有
3)修改/etc/ts.conf
module_raw input (去掉前面的# 和空格使其顶格,其他的保持不变)
4)环境变量/etc/profile
#指定触摸设备(自身机器的event)
export TSLIB_TSDEVICE=/dev/input/event2
#指定触摸校准文件存放位置
export TSLIB_CALIBFILE=/etc/pointercal
#指定tslib配置文件的位置
export TSLIB_CONFFILE=/etc/ts.conf
#指定触摸屏插件文件的位置
export TSLIB_PLUGINDIR=/lib/ts
#设定控制台设为none
export TSLIB
_CONSOLEDEVICE=none
#指定帧缓冲设备
export TSLIB_FBDEVICE=/dev/fb0
5)运行测试
source /etc/profile 声明环境
./ts_calibrate
6)问题
运行./ts_calibrate 出现 permission denied的错误,目前没有找到原因,望大佬们指点
补:发现跟自己使用busybox生成的根文件系统有关,换例程的根文件系统就没有问题。同时根文件系统中的bin文件夹中的sh->busybox。但是例程中的sh->bash。不知道是否有关系。最后还是换成里例程中的根文件系统得以解决。