基于之前在linux2.6内核上写的触摸屏程序进行修改:
- 编译
- 解决错误
2.1 头文件不对:去掉或改名
2.2 宏不对:改名使用新宏
2.3 有些函数没有了:改名使用新函数
编译无错误,生成.ko文件。
这里需要注意一项:在交叉编译链路径中,即/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include/linux/input.h中,有一个#define EV_VERSION 0x010000
,而在内核路径./include/linux/input.h有 #define EV_VERSION 0x010001
。这两个EV_VERSION必须保持一致,否则会出现
selecteddevice is not a touchscreen I understand
但是曾经尝试:将内核路径./include/linux/input.h:
#define EV_VERSION 0x010001
->#define EV_VERSION 0x010000
此时,仍会爆出上述错误。显然这个错误不是来自于tslib,而是来自于之前在内核中编译的ts程序。所以只能修改编译链文件。
#define EV_VERSION 0x010000
->#define EV_VERSION 0x010001
Ps:如果还是不行…那就把以上两个EV_VERSION全都变成0再试试。总有一个是可以的。
tslib是什么:Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。
一、实验环境
硬件: JZ2440开发板
内核版本: Linux-3.4.2
交叉工具链:arm-linux-gcc-4.3.2
tslib版本: tslib-1.4
二、安装
- 解压文件。
tar xzf tslib-1.4.tar.gz
- 运行tslib自带的脚步文件设置环境