移植TSLIB问题device is not a touchscreen I understand

最近移植TSLIB,出现了selected device is not a touchscreen I understand的问题

这个问题网上有很多解决办法,但是他们大多数都是抄来抄去的,有些说的很有道理,

但是有些基本的东西却没有提到,在这里我记录一下。

一旦遇到这个问题,首先想到的是所用的ARM-GCC编译器和内核Linux的EV_VERSION

不统一造成的,所以去查看以下两个文件:

编译器部分

/usr/local/arm-2009q3/arm-none-linux-gnueabi/libc/usr/include/linux/input.h

这里定义的EV_VERSION是0x010000

内核部分

linxu-2.6.35.4/include/linux/input.h

这里定义的EV_VERSION是0x01001

两处版本的不一致造成了input-raw.c文件在检测的时候出现上述错误。

那么,到底修改内核的EV_VERSION好还是修改GCC编译器的EV_VERSION好呢?

我的建议是修改内核的EV_VERSION比较合适一点,理由如下:

1.从工程角度来看,一个项目中为了兼容不同编译特性,可能经常换编译器,而内核却很少重新解压编译

  更换编译器以后,很容易忘记掉修改input.h文件

2.从版本兼容的角度看,0x01001修改为0x01000是可以的,但是从0x01000修改为0x01001不合理

3.从跨平台角度,一个编译器可能有Linux版本和Windows版本,为了做到兼容或者跨平台编译,也不应修改编译器

真的不想写博客,但是事情多了,老忘记,没办法!


你可能感兴趣的:(移植TSLIB问题device is not a touchscreen I understand)