Linux serial touch 设计总结 概述: 最近在做嵌入式linux 下串口触摸屏设计,遇到一些问题,经过查找资料和请教同事,总算把问题解决了,事后有把linux 相关的内核代码仔细看了一遍,为了有点成果,特别写了个总结
如有任何问题请联系****************,转载请标明出处
系统资源: Linux:2
36 UI:QT+TSLIB 硬件资源不关心 设计方法: 有两种实现途径
1、 是将要使用的串口单独拿出来,作为一个platform 总线设备实现,在嵌入式平台 mach 文件里面,加上串口中断号和寄存器首地址,然后将这个串口注册成一个platform 总线设备
在驱动 probe 函数里面需要得到这个串口中断号以及寄存器映射地址,通过寄存器映射地址设置串口波特率,数据位,停止位等,通过中断号注册中断等,然后调用 input_register_device 注册一个input 设备
在中断里面得到外面触摸屏的数据,然后根据 input touch 协议上报触摸数据
这种方法实现简单明了,不需要和linux 的tty,serio 等打交道
但是要求知道串口硬件spec,比如寄存器等,而且这个串口就只能给触摸屏使用了,不能作为tty 使用
因为是嵌入式开发,因此很容易知道硬件spec,而且嵌入式平台一旦确定,那么这个串口肯定就是给触摸屏使用了
因此在嵌入式平台上,推荐使用这个方法
2、 是将串口作为一个serio 总线设备,利用 linux 内核提供 serio 总线驱动,通过设置对应的串口,调用 serport 提供的函数将串口当做serio 总线设备,在驱动里面需要按照 serio总线设备驱动的框架来实现,这方面的例子linux 里面有很多,比如touchright
c,在模块 init 函数里面调用 serio_register_driv