参考:
http://hi.baidu.com/huicxu/blog/item/3b7086c348f01b080ff47783.html
工具:
apt-get install autoconf
apt-get install libtool
配置
./autogen.sh
./configure --prefix=/usr/local/tslib --host=arm-none-linux-gnueabi ac_cv_func_malloc_0_nonnull=yes
make
make install
下面问题的解决方法参考:
http://www.arm9home.net/simple/index.php?t11074.html
我用ts_test测试终端打印了
tslib: Selected device uses a different version of the event protocol than tslib was compiled for
查看tslib源代码发现打印该信息的语句在tslib的源代码的plugs文件夹中input-raw.c的
static int check_fd(struct tslib_input *i)函数中,发现tslib在加载linux触摸屏驱动模块时会检查内核的输入子系统的
版本号:
if (ioctl(ts->fd, EVIOCGVERSION, &version) < 0) {
fprintf(stderr, "tslib: Selected device is not a Linux input event device\n");
return -1;
}
上面程序段将驱动的版本号存放在整型的version中
if (version != EV_VERSION) {
fprintf(stderr, "tslib: Selected device uses a different version of the event protocol than tslib was compiled for\n");
return -1;
}
该程序将获得的版本号version与本tslib的面向的版本号匹配,若不同则打印:
tslib: Selected device uses a different version of the event protocol than tslib was compiled for
信息
再看arm交叉编译工具中的头文件库中的linux/input.h中的EV_VERSION定义为
#define EV_VERSION 0x010000
而linux内核include/linux/input.h中的EV_VERSION定义为
#define EV_VERSION 0x010001
由此可见问题就出现在内核的输入子系统的版本号不匹配的问题
解决办法:(以下2种任选其一)
1.将内核源代码里的include/linux/input.h中的
#define EV_VERSION 0x010001
改为:
#define EV_VERSION 0x010000
再编译内核文件
2.将arm交叉编译工具中的头文件库中的
linux/input.h中的
#define EV_VERSION 0x010000
改为
#define EV_VERSION 0x010001
再编译tslib库