基于触摸屏驱动的Linux内核输入子系统研究

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

收稿日期:2008-06-23

基金项目:国家“863”高技术研究发展计划(2007AA01Z141)作者简介:华 明(1982-),男,福建邵武人,硕士研究生,研究方向为嵌入式系统;徐造林,硕士,副教授,研究方向为嵌入式系统、计算机应用。

基于触摸屏驱动的Linux 内核输入子系统研究

华 明,徐造林

(东南大学计算机科学与工程学院,江苏南京210096)

摘 要:Linux 是目前最为优秀的开源系统软件之一,其完全开放的特性和优良的性能表现使其在程序开发领域广受欢迎,而其不断完善的功能和极好的适应性更使其成为嵌入式领域的首选。根据应用的需要Linux 推出了内核输入子系统的开发平台,极大地方便了嵌入式领域的驱动开发。触摸屏是较常使用的外部输入设备之一,尤其是在嵌入式领域里得到了广泛的应用。文中分析了在Linux 2.6内核输入子系统下触摸屏驱动程序设计,并对比传统的驱动设计方法;得出了基于Linux 输入子系统的驱动程序设计优点。关键词:Linux ;嵌入式;输入子系统;触摸屏;驱动程序

中图分类号:TP311 文献标识码:A 文章编号:1673-629X (2009)03-0005-04

Linux K ernel Input Sub -System R esearch B ased on Touch Screen Driver

HUA Ming ,XU Zao 2lin

(Computer Science and Engineering College ,S outheast University ,Nanjing 210096,China )

Abstract :Linux is one of the most excellent open source system software ,it is widely popular because of its complete open characteristic and fine performance ,its continually improved functions and good flexibility make it be the preferred program in the embedded area.Ac 2cording with the development of application ,Linux issues its kernel input sub -system ,it makes most benefits for driver design in em 2bedded area.Touch screen is one of the most normal input devices ,and it is especially important in embedded area.By analyzing a touch screen driver program under Linux -2.6input sub -system and comparing it to the normal driver program design way ,show the advan 2tages of Linux sub -system.

K ey w ords :Linux ;embedded ;input sub -system ;touch screen ;driver program

0 引 言

输入功能是一个系统最常用也是最基本的系统功能之一,人与系统的交互必须通过输入、输出功能来完成。常用的输入设备有鼠标、键盘、触摸屏等等,系统开发中对输入设备的处理具有许多相同的特性,鉴于对输入设备的处理方法有很多类似之处,Linux2.4内核以后专门为输入设备定义了一个统一的驱动程序接口—输入子系统(Input sub -system ),由此增强了对系统输入功能的管理并方便了驱动程序的开发。

由于输入子系统的优越性,这种设备程序接口得到了很好的应用,并且在Linux2.6内核中得到普及和完善,Linux2.6内核对输入子系统做了很大的扩充增

加了对更多设备的支持(如触摸屏、键盘等)。但目前为止介绍输入子系统的相关资料却较为缺乏。

文中介绍基于Linux 2.6内核输入子系统的触摸屏驱动开发方法,并通过对比传统的输入设备驱动开发方法,得出基于Linux 输入子系统的驱动程序设计优点。

1 Linux 内核与输入子系统

Linux 输入子系统由输入子系统核心层(In put Core )、驱动层和事件处理层(Event Handler )三部份组

成。其关系如图1所示。

其中Input Core 即Input Layer 由Linux 内核中

driver/input/input.c 及相关头文件实现,其对下提供了

设备驱动的接口,对上提供了Event Handler 层的编程接口。输入子系统的主要数据结构如表1所示。

输入子系统支持的输入事件如下:

EV -RST 0x00Reset

第19卷 第3期2009年3月 计算机技术与发展COMPU TER TECHNOLO GY AND DEV ELOPMEN T

Vol.19 No.3Mar. 2009

图1 Linux输入子系统结构图表1 输入子系统的主要数据结构

数据结构用途定义位置具体数据结构的分配和初始化

Struct input-dev 驱动层物理In2

put设备的基本

数据结构

Input.h

通常在具体的设备

驱动中分配和填充

具体的设备结构

Struct Evdev Struct Mousedev Struct K eyb2 dev...Event Handler

层逻辑Input

设备的数据结

Evdev.c

Mousedev.c

K eybdev.c

Evdev.c/Mouedev.c

...中分配

Struct Input-handler Event Handler

的结构

Input.h

Event Handler层,定

义一个具体的

Event Handler

Struct Input-handle 用来创建驱动

层Dev和Han2

dler链表的链

表项结构

Input.h

Event Handler层中

分配,包含在

Evdev/Mousedev...

EV-KEY0x01按键

EV-REL0x02相对坐标

EV-ABS0x03绝对坐标

EV-MSC0x04其它

EV-L ED0x11L ED

EV-SND0x12声音

EV-REP0x14Repeat

EV-FF0x15力反馈

输入子系统向应用程序和底层驱动分别提供了一个统一的接口,向输入子系统注册后的输入设备只要捕捉到输入事件并把事件的状态向子系统报告便完成了驱动程序设计的任务,对获取的事件的管理则已经由输入子系统完成,而上层应用程序也可以通过输入子系统的标准接口获取底层驱动捕获的输入事件,大大提高了驱动程序的通用性。

关于Linux输入子系统的更多原理及应用操作可参考文献[1,2]。2 基于AD7873的触摸屏设计原理

触摸屏按其技术原理可分为五类:矢量压力传感式、电阻式、电容式、红外线式和表面声波式,其中电阻式触摸屏在嵌入式系统中用的较多。电阻式触摸屏结构简单、成本低廉、透光效果好、工作环境和外界完全隔离、不怕灰尘和水汽,可以用任何物体来触摸,可用来写字画画,同时,电阻式触摸屏具有高解析度、高速传输反应、一次校正、稳定性高、不漂移等特点,因此,电阻触摸屏应用广泛,尤其适合工业控制领域及办公室内使用。电阻式触摸屏的物理结构和触摸原理如图2所示。

图2 电阻式触摸屏工作原理

通过触摸笔的按压,可以导通触摸屏电路。电阻式触摸屏工作的实质是对X Y两个方向电阻分压的测量。只需要利用模/数转换(A/D)和电子开关来实现这个测量过程。利用普通的A/D转换器件或者集成在嵌入式处理器片上的A/D实现对触摸屏的测量,建议使用触摸屏专用的控制芯片,如AD7873, ADS7843和UCB1400等进行连接,这样可以提高触摸控制的精确性和编程的规范。笔者所实践的项目采用了AD7873芯片。

AD7873电阻触摸屏数字转换器专门针对电池供电的设备进行了优化,适用于触摸屏设备,如PDA、手持设备、监视器、POS终端和传呼机等。该数字转换器在一个12位逐次逼近式比较寄存器(SAR)ADC架构上集成了用于驱动触摸屏的低通阻抗开关。AD7873还添加其他功能,包括一个测量温度范围为-40℃到85℃的片上温度传感器,直接电池和触摸压力测量计,以及一个2.5V的板上基准电压。这些器件在不使用内部基准电压,并以大于125kSa/s的吞吐率运行时的最大功耗为<1.4mW。它们还带有10keV到12keV 的模拟输入ESD保护,增强了抗ESD能力,以避免关键的内部系统元件损坏。两种低功耗数字转换器均使用单2.2V到5.25V的电源工作。为了延长电池寿命,AD7873的内部基准电压在不使用时可以关闭,且

6

・ 计算机技术与发展 第19卷

相关文档
最新文档