红联Linux门户
Linux帮助

阐述Linux触摸屏驱动

发布时间:2011-06-07 10:29:26来源:Linux社区作者:佚名

操作系统对于经常应用电脑的用户非常的重要,一个好的操作系统,能更好的节省学习的时间。本文讲解Linux触摸屏驱动开发,在Linux触摸屏驱动中,最好的范例莫过于mc68328digi.c的实现。本文把其中用到的结构解析一下。


1、struct ts_pen_info


该结构是触摸屏的核心数据结构。用户程序和驱动程序的交互就是通过该数据结构完成的。结构体里面的x,y坐标和状态是gui中事件驱动的原始数据源。


2、环形队列


gui程序通过read完成对ts_pen_info的提取。而在内核中维护了一个环形队列,只要队列不为空,将立即返回数据给应用程序。


3、中断驱动机制


触摸屏是输入设备,因此使用的是中断驱动机制。只要有触摸事件发生,即向环形队列里面填充一项。


4、定时器的必要性


触摸屏的中断处理函数必然启动一个定时器。定时器的使用是为了检测出Drag操作。当按下触摸屏一直没有松开时,中断只会相应一次。这和触发方式关系不大,不是沿触发和电平触发的问题。主要是触摸屏的中断处理函数没有处理到松开是不会开放中断的。在这段时间内,就是通过定时器不停的启动,检测触摸屏的新坐标的。


5、misc驱动


触摸屏采用Misc结构的驱动。


这5点是Linux触摸屏驱动的核心,理解这些,阅读和编写自己的触摸屏驱动都会游刃有余。希望会对你有所帮助。