您好,欢迎来到年旅网。
搜索
您的当前位置:首页电容触摸屏调试

电容触摸屏调试

来源:年旅网


驱动调试经验总结

总结人:李伟博

1. 硬件平台:WGROBOT DEMO大板

2. 软件平台:ALPS.GB.FDD2.MP.V1

3. 问题描述:调试汕超TP,IC为ATMXT224

4. 解决问题方法与具体步骤:

1) 此TP为MTK没有认证过的TP,需要首先熟悉MTK的TP架构和厂家给的参考代码

2) MTK的TP架构为:

TP作为一个平台设备申请并注册驱动,驱动中为TP设备申请一个输入设备,所有适配在这个平台上的触摸屏驱动都使用这个输入设备来上报数据

3) 使用触摸屏驱动厂家给的参考代码进行适配:

首先修改参考代码的架构来符合MTK的TP框架

适配过程需要注意三个方面:

1) 关于I2C理解和修改:

触摸屏芯片驱动是通过I2C总线来控制的,所以把这个作为一个i2c从设备来对待,i2c主设备为mt6573的i2c控制器

mt6573的方案中i2c设备和驱动的注册流程是这样的:

i2c_add_driver(&device_driver)i2c从设备通过次函数注册驱动,device_driver为设备驱动,包括probe,remove,suspend,resume函数函数i2c_register_driver设备驱动注册到i2c总线上,此时此i2c设备还没有注册到i2c总线上次函数为遍历i2c总线上的设备列表,通过__attach_adapter判断是否有与driver匹配的设备通过调用i2c_detect(adapter, driver);在某个adapter上检测是否有与driver匹配的设备i2c_client_address_data一般有三种形式来表示:目前平台用的force形式,如果为force形式则将force数组中的设备地址赋予申请的临时设备并且调用driver中的detect函数赋予设备名称,调用i2c_new_device注册此i2c设备driver_register(&driver->driver);bus_for_each_dev(&i2c_bus_type, NULL, driver, __attach_adapter);__attach_adapterto_i2c_adapter(dev);i2c_detect_addressi2c_new_devicedevice_registerdevice_add回调设备驱动注册到总线上的probe函数i2c_device_probebus_probe_device

2)中断与线程

mt6573平台中断分内部中断和外部中断。

内部中断为mt6573芯片内部的一些控制器终端,例如USB相关中断,SD卡的相关中断等,内部中断通过request_irq申请中断处理

外部中断指GPIO配置为中断管脚连接外部器件,外部器件在一定条件下产生中断,中断控制器从GPIO获取中断,进入中断处理程序。外部中断通过mt65xx_eint_registration来申请中断处理。

中断处理程序要求短小精悍,不可做过多的任务事情,可以做一些简单的赋值和触发线程运行的动作。

通过kthread_run来创建一个线程,设置线程的调度方式SCHED_RR,进线程设置线程状态为可中断运行,开始等待等待队列事件,而等待队列事件的释放是在中断处理中做的,所以一旦发生中断,线程开始向下运行,调用kthread_should_stop()来停止线程。起

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务