当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于Linux系统的触摸屏驱动方案

引言

触摸屏作为一种输入设备,具有坚固耐用、反应速度快、节省空间、易于交流等优点,提供简单、方便、自然的人机交互方式,目前被广泛应用于工业控制、电子查询、消费性电产品领域。

Linux作为是目前最流行的操作系统之一,在桌面系统、服务器领域有大量用户,具有源代码开放,支持的硬件丰富、高可移植等优点,在嵌入式领域也备受青睐。Linux根据不同设备,将驱动程序分为字符设备驱动、块设备驱动、网络设备驱动三种,Linux输入子系统u是对字符类型输入设备驱动实现方式的抽象,是对分散的、多种不同类别的输入设备进行统一处理的内核驱动模型。输入子系统具高效、无Bug和可重用等优点。本文对基于Linux输入子系统的触摸屏驱动进行深入的讨论。

1  硬件平台

S3C2440是三星公司推出的采用ARM920t内核的MCU,集成了丰富的外围设备,其中包括4线电阻式触摸屏控制器和8通道多路复用ADC。

触摸屏由触摸检测部件和触摸屏控制器构成,对应S3C2440平台的四线电阻触摸屏的外接电路和S3C2440芯片自带的A/D转换控制部分。四线电阻触摸屏的外接电路控制上下两层导电层的通断情况以及如何取电压,取电压之后由S3C2440芯片中的A/D将模拟量转换成数字量。S3C2440芯片的A/D转换器有8个输入通道,转换结果为10bit数字,转换过程在芯片内部自动实现,转换的结果从寄存器中取值,再进行一定的转后可直接得到触摸点的坐标。S3C2440提供的ADC和触摸屏接口如图1所示,触摸屏直接与引脚XP,XM,YP和YM连接,对触摸屏两个导电层的通断通过XP,XM,YP和YM4个引脚控制。通过读写指定的特殊寄存器,S3C2440的触摸屏控制器将自动控制触摸屏接口打开或关闭,按指定操作模式完成触点数据的采集。

2  输入子系统体系结构简介

设备驱动程序在Linux内核中占很重要地位,设备驱动以内核模块方式实现,可动态加载和卸载。Linux设备驱动的实现只需根据内核提供的一组相关数据结构和驱动接口标准,完成关键数据结构初始化和回调函数的编写。对字符设备驱动内核提供cdev数据结构和file_operatiONs结构体及操作方法,实现字符设备驱动只需完成cdev的初始化、file_operations中操作函数的实现并向内核注册。

Linux输入子系统是对物理形态各异的功能相似的输入设备的抽象,是内核中字符设备驱动接口的封装。输入子系统由设备驱动层、核心层和事件处理层构成。设备驱动层提供对硬件各寄存器的读写访问和将底层硬件对用户输入访问的响应转换为标准的输入事件,通过核心层提交给事件处理层;核心层对设备驱动层提供编程接口,对事件处理层的也提供编程接口;事件处理层为用户空间的应用程序提供了统一访问设备的接口和驱动层提交来的事件处理。基于输入子系统设计驱动时要实现设备驱动层的驱动和事件处理层的驱动,而输入子系统在事件处理层为触摸屏提供标准的事件接口,所以只要须完成设备驱动层的驱动,即硬件寄存器的操作和提交输入事件信息。基于输入子系统的设备驱动层驱动的实现过程如下:

1)驱动模块加载函数中设置输入设备支持输入子系统的事件;Linux内核用input_dev代表一个输入设备,对于触摸屏通过对input_dev实例的evbit[0]的设置来支持同步(EN_SYN)、按键(EN_KEY)和绝对坐标(EV_ABS)事件。

2)通过内核提供的input_regiSTer_device0函数向输入子系统注册输入设备。

3)输入设备发生输入操作时提交所发生的事件及对应键值或坐标等状态信息。触摸屏使用输入子系统提供的通用输入事件驱动程序Evdev,将事件信息打包成Input_event类型进行报告。

3  Linux触摸屏驱动的实现

3.1 触摸屏触点数据采集

S3C2440触摸屏控制器有四种工作模式,通过读写ADCTSC、ADCDA、ADCDATl和ADCDLY寄存器完成触摸屏控制器工作模式的选择和触摸屏触点数据采集。由于触摸动作时间的随机性,驱动设计时选择中断工作方式。设置ADCTSC寄存器为0xD3使触摸屏控制器进入等待中断模式,设置ADCDLY采样延迟时间。当触摸屏被按下,触摸屏控制器将产生INT_TC中断:在ⅡTC中断处理程序中,设置ADCTSC寄存器为0x0C,触摸屏控制器切换为自动X/Y坐标转换模式,将自动转换触点对应的x,y坐标值,并分别写入ADCDAT0寄存器和ADCDTA1寄存器,发出INTADC中断表示ADC转换完成;进入INT_ADC中断处理程序读取ADCDAT0寄存器和ADCDTA1寄存器中坐标数据并进行相应转换,数据采集后重新设置ADCTSC寄存器为0xD3使触摸屏控制器进入等待中断模式,等待触摸屏被按下。

3.2 驱动初始化模块

Linux驱动程序以内核模块方式加载运行。实现驱动加载函数s3c2440ts_init()并通过module_init(s3c2440ts_init)向内核注册。在驱动加载函数主要完成:启用ADC所需要的时钟、映射10地址、初始化ADC和触摸屏控制器相关的寄存器、申请INT_TS和INT_ADC中断、初始化输入设备、将输入设备注册到输入子系统。关键代码如下:

[!--empirenews.page--]

3.3 中断处理程序及事件报告

用户对触摸屏进行按下、抬起和拖动等操作时,触发中断INT_TS,内核进入到中断处理函数tc_irq0进行中断处理。tcirq0中,通过ADC—LOCK锁机制保证只有一个驱动程序使用ADC的中断线,通过读取ADCDAT0和ADCDAT1寄存器,判断触摸操作的状态,触摸笔按下时调用ts_timer_fireO进行数据转换。当数据转换完成时产进INT_ADC中断,内核进入中断处理函数adc—irqO,adc_irq()完成触点信息采集并调用ts_timer_fire()进行事件报告。事件报告流程如图2所示。

ts_timer_fire0是主要完成触点坐标信息向应用层报告。updown、count为静态全局变量,updown触点状态,count代表1个jiffies时间内ADC转换的次数,count为0,设置自动X/Y轴坐标转换模式,转换完成后产生相应的INT_ADC中断通知转换完毕。count不为0,input_report_abs()函数向输入子系统报告X,Y绝对坐标事件,inputreport_key()触摸屏对应按键被按下事件,输入子系统使用inputsync()将报告的事件组成一个evdev包,通过/dev/input/eventX发送出去,应用程序通过读取/dev/input/eventX即可获得事件信息。关键代码如下:

4  结论

随着信息技术的快速发展,嵌入式技术与人们的生活越来越紧密,触摸屏作为一种新型输入设备因具有轻便、占用空间少、方便灵活等优点,应用逐渐普及,甚至在工业领域也得到了大量的应用,提高了我国工控自动化的水平。要充分发挥触摸屏的优点,嵌入式中驱动设计至关重要。嵌入式Linux中基于输入子系统实现触摸屏驱动时,利用了Linux输入子系统提供标准事件接口,简化了驱动设计,驱动设计的重点变成了触摸屏控制器相关的硬件操作及功能实现,充分体现Linux内核代码的高可重性,对其他类型输入设备驱动程序的设计有一定参考作用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭