天天看点

出现device is not a touchscreen I understand

最近在4412上写了关于触摸屏的应用程序,移植了tslib库,出现了device is not a touchscreen I understand,然后搜索了一下,大致总结出两个问题所在点。

有关文章链接如下:

https://my.oschina.net/armsky/blog/639488

http://blog.csdn.net/zhaocj/article/details/37522115

http://blog.csdn.net/liuzijiang1123/article/details/45787901

一、交叉编译器EV_VERSION和内核中的EV_VERSION不符合

在使用2440的2.6内核和arm交叉编译器3.6版本没有出现这个问题,是因为他们的EV_VERSION都是一样的,如下:

出现device is not a touchscreen I understand
出现device is not a touchscreen I understand

而在4412的3.0内核EV_VERSION和编译器不一样,所以修改成一样的就行了。

修改方法就是找到相应的文件,内核中文件所在位置是include/linux/input.h

编译器中,进入编译器目录,然后通过find -name stdio.h找到常用的头文件目录,进入该目录,然后cd linux/input.h即可。

二、内核触摸屏驱动问题

简单来说就是没有上报压力值,tslib通过判断上报的x,y,压力来判断是否支持该触摸屏。下面通过hexdump来测试有没有压力值。

0000000 062e 0000 93e9 0004 0003 0000 01f6 0000

0000010 062e 0000 9439 0004 0003 0001 01ef 0000

0000020 062e 0000 9444 0004 0003 0018 00c8 0000

0000030 062e 0000 9450 0004 0001 014a 0001 0000

0000040 062e 0000 9459 0004 0000 0000 0000 0000

0000050 062e 0000 1a88 0005 0003 0018 0000 0000

0000060 062e 0000 1a93 0005 0001 014a 0000 0000

0000070 062e 0000 1a99 0005 0000 0000 0000 0000

压力值的code是0018,所以有,内核触摸屏驱动没有问题,不需要修改。