新闻中心

EEPW首页>光电显示>设计应用> 嵌入式ARM下的触摸屏驱动系统设计

嵌入式ARM下的触摸屏驱动系统设计

作者: 时间:2012-04-27 来源:网络 收藏

在已经安装好开发平台的主机上执行make,就可以得到目标文件ad7873.ko,这就是我们需要的。在platform_data数据结构中设置好需要的数据,如中断、大小、触摸压力上下限等数值,并编译好内核下载到开发板中运行。然后将ad7873.ko复制到开发板,在终端下执行insmodad7873.ko,得到如下提示:

图4 驱动加载信息

图4加载信息

显示驱动已经加载成功,中断号为126.

(注:thissectencehasbeen,为调试驱动中断的测试语句)然后用应用广泛的tslib测试程序对驱动进行测试,测试结果显示,工作正常。下图触摸屏上白色的字桂林电子科技大学触摸屏为在tslib的测试程序下用触摸笔写的字,证明了触摸屏工作是正常的。

将此应用到家庭智能网关中,证明其工作稳定,响应很快。

图5 触摸屏正常响应图

图5触摸屏正常响应图

4驱动程序出现的问题及解决方法

在调试驱动的过程中,出现了很多问题,主要有以下两个:

4.1加载时报错

在执行insmodad7873.ko时,报错为:

ad7873:noversionforstruct_modulefound:kerneltainted.

经过检查,发现是因为platform_data里面定义的。model=7873被写成了。model=7883,造成了无法识别这个驱动,产生了错误,修改后执行insmodad7873.ko成功。

4.2使用tslib测试软件测试的时候,屏幕无反应

原以为是中断程序出了问题,因此在中断里面设置打印信息,发现可以打印,于是确定了中断时正常响应了的。然后跟踪代码检查,发现定时器函数很可疑,于是在定时器函数设置打印信息,发现定时器函数没有正确执行,找到了问题的所在。于是顺藤摸瓜,终于发现原来是在这个函数中fn_get_pendown_state(void),也就是用来得到触摸屏状态的引脚设置不正确,导致定时器函数里面无法得到触摸屏的状态,所以无响应。修改了定时器的引脚定义使其指向正确的引脚便一切OK。

5结论

本文从硬件到软件了整个触摸屏驱动。作为家庭无线智能控制器的一部分,触摸屏使整个系统使用更方便与高效。而未来随着对触摸技术的越来越高的要求,如多点触摸技术,需要驱动为上层应用提供更稳定的处理与更多的接口,以便上层应用可以更加高效的编写应用程序来应对复杂的机制。这就需要在内核驱动层改进驱动的结构与算法来应对。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭