Android系统开发之触摸屏tslib移植(内核)和原理分析 - CSDN博客1
需积分: 0 47 浏览量
更新于2022-08-04
收藏 1.3MB PDF 举报
在Android系统开发中,触摸屏的正确工作是用户体验的关键因素之一。本文主要探讨了如何在内核层面移植和校准触摸屏驱动,以及其工作原理。我们以tsc2007驱动为例,这是一个适用于某些平台的触摸屏驱动,相关的源代码位于内核的`drivers/input/touchscreen`目录下,包含`tsc2007.c`和`ts_linear.c`两个文件。
**tslib的运行原理**
tslib(TouchScreen Library)是用于处理触摸屏输入的库,它通过以下两个步骤确保触摸屏坐标与LCD显示坐标的准确映射:
1. **校验(Validation)**
在这个阶段,tslib会在LCD的特定位置显示一系列坐标点,让用户触摸。系统会记录用户的触摸点(硬件坐标)与LCD坐标(固定坐标)的对应关系,通常会有五组这样的数据。
2. **校准(Calibration)**
通过tslib库中的算法,利用校验阶段收集的坐标数据,计算出一组校准参数。这些参数通常包括7个值,用于在驱动层每次读取硬件坐标时进行转换。这七个值存储在`/proc/sys/dev/ts_device`目录下的文件中,如`a0`到`a6`。
**ts_linear_scale函数**
`ts_linear_scale`是tslib中的关键校准函数,它接收x和y坐标作为输入,并根据之前计算出的校准参数(`a0`至`a6`)进行调整。函数首先检查`cal.a`是否为0,因为这是计算的分母,如果为0则会导致除法错误。然后,它会进行坐标变换,如果`swap_xy`参数为真,还会交换x和y的值,以适应屏幕的纵横比或者翻转需求。
在`tsc2007.c`驱动中,当驱动程序检测到有效的硬件坐标(x>0且y>0)时,会先调用`ts_linear_scale`进行校准,然后再报告给上层的input子系统。这样,触摸事件的最终坐标将经过校准,更准确地映射到LCD坐标系。
**移植tslib到内核**
移植tslib到内核的过程中,需要根据具体平台的硬件特性修改`tsc2007.c`和`ts_linear.c`。例如,可能需要更新设备I/O接口、中断处理或初始化代码来适配目标平台。同时,确保内核配置支持tslib,并在用户空间配置相应的tslib库。
**总结**
Android系统中的触摸屏驱动移植和校准是一个复杂的过程,涉及到内核驱动的修改、tslib库的使用以及硬件特性的理解。通过校验和校准两个步骤,可以确保触摸屏在各种条件下提供准确的输入,从而提升用户的交互体验。在实际开发中,需要对内核编程和触摸屏硬件有深入的理解,才能顺利完成这一过程。

StoneChan
- 粉丝: 31
最新资源
- 毕业论文-光电驱动电动车的研究单片机控制系统(1).doc
- 医院信息系统安全等级保护定级报告.doc
- 基于plc的立体车库-任务书.doc
- 基于云计算的会计信息安全研究.doc
- c语言百钱买百鸡问题.doc
- 毕业论文-基于KVM的虚拟化平台构建.doc
- 基于单片机的车牌检测.doc
- 通信工程师现代电信技术测试试题.docx
- 计算机使用安全管理制度(1).doc
- 基于移动群智感知的大数据分析课程实验体系研究与探讨(1).docx
- 网站商业计划书模板参考(1).docx
- 物联网网络层安全培训课件(1).pptx
- 基于PLC的智能家居系统设计.docx
- 油田档案信息化建设探讨(1).docx
- 基于PLC的传送带设计(刘保坤).doc
- 电气自动化(单片机方面)毕业论文.doc