贾政操黛玉同人文:linux下的触摸屏驱动开发

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 22:43:38

linux下的触摸屏驱动开发

 现在主要谈谈编写s3c2410的触摸屏驱动的收获。模仿已有的驱动自己也写了一个驱动,实现同样的功能。同时为了完成这个驱动,把LDD2 这本书相关部分好好的读了一遍,获益匪浅。

  先看看为了完成一个驱动,需要作的事吧。

  1.  看datasheet,说白了芯片user manual,对于触摸屏,那些寄存器是主要的关注点,如ADCCON,ADCTSC…..,这些寄存器均会在驱动中使用,驱动也是全凭这些寄存器才完成与硬件的通信。这步很关键的说,虽然只用了了几笔!

  2.  接下来应该先熟悉一下驱动中都需要定义些什么接口,如read,write,open,release,这些是基本的。见多了就不怪了,其实就是那些为上层(用户层)预留了访问内核数据的接口,比如此驱动,我在用户层调用用户层的read函数读取数据时,实际上就是在调用内核层(驱动属于内核层)的read来完成读操作。

  3.  中断,中断,上课时看似没用的东西,现在用到了吧。啥叫中断,在此不表。怎么实现中断?还记得中断服务程序吗,就是它了。在程序的初始化函数(init)中,先使用ret=request_irq(IRQ_ADC_DONE,adc_isr_handler,SA_INTERRUPT,DEVICE_NAME,NULL);申请一个ADC中断,然后调用adc_isr_handler这个中断服务程序,这个程序完成了触摸屏控制器的模数转换,取得寄存器中的x,y值。不过千万别忘了在模块卸载(exit)的时候将中断释放掉,否则的话,很快中断申请线的资源就被占尽了。

  4.  调试程序,呵呵,print啊,不过这里是在编驱动,千万别用printf啊,为啥?丢不起这个人啊!内核编程怎能用C函数库的函数?应该用printk!使用打印信息的方法方便实用,再加上一些宏定义开启关闭调试信息的功能,perfect!还有其他的调试方法,不过看过书了不知所云,有待钻研。

  5.  还用高级的字符驱动需要的阻塞型I/O,就是等待队列,休眠进程,唤醒进程。。。(偶还没太明白,先写这么几句!)

  6.  看似简单的驱动阿,学问咋那么多呢。要真正完成触摸屏的驱动还需要时间流着部分知识,咋地也要让咱的屏屏能进行个识别输入的字母吧。现在我还在调他,本打算调通之后再来完成此篇文章,看来是奢望了。继续调~~