第7章--触摸屏驱动移植-Linux系统移植(第2版)-教学课件.ppt
《第7章--触摸屏驱动移植-Linux系统移植(第2版)-教学课件.ppt》由会员分享,可在线阅读,更多相关《第7章--触摸屏驱动移植-Linux系统移植(第2版)-教学课件.ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第7章 触摸屏驱动移植7.1 触摸屏概述7.2 S3C2440 ADC接口使用7.3 2.6内核触摸屏驱动源码分析(s3c2410_ts.c源码分析)7.4 Linux内核输入子系统介绍7.5 触摸屏驱动移植和内核编译7.1 触摸屏概述7.1.1 触摸屏工作原理7.1.2 触摸屏的主要类型7.1.1 触摸屏工作原理触摸屏简单地说就是一种特殊的输入设备。为了操作方便,人们用触摸屏取代鼠标或者键盘。触摸屏由触摸检测部件和触摸屏控制器组成;触摸检测部件安装在显示器屏幕前面,用来检测用户触摸的位置,接受后送触摸屏控制器;而触摸屏控制器的主要作用是从触摸点检测装置上接收触摸信息,并将它转换成为触点坐标,
2、再送给CPU处理,它同时能接收CPU发来的命令并加以执行。7.1.2 触摸屏的主要类型按技术原理来区别触摸屏,可分为以下5个基本种类:矢量压力传感式触摸屏;电阻式触摸屏;电容式触摸屏;红外线式触摸屏;表面声波式触摸屏。2电容式触摸屏电容式触摸屏的构造主要是在玻璃屏幕上镀一层透明的薄膜层,再在导体层外加上了一块保护玻璃,双玻璃设计能够很好地保护导体层及感应器。3红外线式触摸屏 这种触摸屏由装在触摸屏外框上的红外线发射与接收感测元件构成,在屏幕表面上形成红外线探测网,任何触摸物体都可以改变触点上的红外线而实现触摸操作。红外触摸屏不受电流、电压和静电干扰,适宜某些恶劣的环境条件。4表面声波触摸屏表面
3、声波是一种沿着介质表面传播的机械波。这种触摸屏由触摸屏、声波发生器、反射器和声波接收器组成,其中,声波发生器能发送一种高频声波跨越屏幕的表面,当手指触到屏幕时,触点上的声波就被阻止,由此确定触点坐标的位置。7.2.1 S3C2440触摸屏接口概述S3C2440具有8通道模拟输入的10位CMOS模数转换器(ADC),它将输入的模拟信号转换为10位的二进制数字码。在2.5MHz的A/D转换器时钟下,最大转化速率可以达到500KSPS。A/D器支持片上采样和保持功能,并支持掉电模式。7.2.2 S3C2440触摸屏接口操作1S3C2440触摸屏控制器工作模式2S3C2440触摸屏接口专用寄存器2S3
4、C2440触摸屏接口专用寄存器S3C2440触摸屏接口涉及的专用寄存器比较少,主要有ADCCON、ADCTSC、ADCDAT0和ADCDAT1。下面分别对它们进行介绍。(1)ADCCON控制寄存器。(2)ADC触摸屏控制寄存器ADCTSC。(3)ADCDAT0和ADCDAT1寄存器(4)ADC起始廷迟寄存器(ADCDLY)1s3c2410ts_probe分析s3c2410ts_probe是一个探测函数,在这个函数中完成了硬件资源获取、GPIO口的初始化、中断申请和注册驱动程序等操作。2touch_timer_fire分析touch_timer_fire()函数主要实现以下功能:stylus d
5、own的时候,touch_timer_fire()函数在中断函数stylus_updown里被调用,此时缓存区没有数据,ts.count的值为0,所以只是简单地设置A/D转换的模式,然后开启A/D转换。当ADC中断函数stylus_action()把缓冲区填满时,作为中断后半段函数稍后被调用,此时ts.count等于shift,算出其平均值后,交给事件处理层(Event Handler)处理,主要是填写缓冲然后唤醒等待输入数据的进程。stylus抬起,等到缓冲区填满后(可能会包含一些无用的数据)被调用,这时判断出stylus up,报告stylus up事件,重新等待stylus down。4
6、stylus_action分析static irqreturn_t stylus_action(int irq,void*dev_id,struct pt_regs*regs)unsigned long data0;/用于保存X坐标的值unsigned long data1;/用于保存Y坐标的值data0=readl(base_addr+S3C2410_ADCDAT0);/读X坐标的值data1=readl(base_addr+S3C2410_ADCDAT1);/读Y坐标的值ts.xp+=data0&S3C2410_ADCDAT0_XPDATA_MASK;/X坐标的值累加ts.yp+=data
7、1&S3C2410_ADCDAT1_YPDATA_MASK;/Y坐标的值累加ts.count+;/计数器递增 if(ts.count (1inputcore-eventhandler-userspace 的顺序到达用户空间传给应用程序。按键、触摸屏、键盘、鼠标等输入都可以利用Input接口函数来实现设备驱动。在Linux内核中,Input设备用input_dev 结构体描述。7.4.2 输入设备结构体要了解输入设备子系统,就得先了解内核中输入设备的定义,这里先给出内核中input_dev的定义,然后再对其中重要的成员进行描述。2ID和name字段在注册输入设备前,驱动程序应该设置dev-nam
8、e。ID字段包含了总线ID(PCI、USB,.),供应商ID和设备的设备ID。总线ID在input.h文件中定义。供应商和设备ID在pci_ids.h、usb_ids.h和相似的头文件中被定义。这些字段应该在注册输入设备前被驱动程序设置。ID和name字段可以通过evdev接口传递给用户空间使用。3keycode、keycodemax、keycodesize字段这3个字段可以用于所有输入设备,被用来报告将产生的数据作为扫描码。如果不是所有的扫描码可以被自动识别所辨别,它们可能需要通过用户空间应用程序设置。这样keycode数组被用来映射扫描码到输入系统的键码。keycodemax包含了数组的大
9、小。keycodesize表示数组中数据的大小(单位为bytes)。4evbit、keybit、relbit、absbit字段这几个字段是用于设置输入设备的事件类型,EV_KEY是最简单的事件类型,用作按键的事件类型。这个事件通过下面函数报告给输入系统:input_report_key(struct input_dev*dev,int code,int value)1硬件设备的注册init_input_dev(&ts.dev);ts.dev.evbit0=ts.dev.evbit0=BIT(EV_SYN)|BIT(EV_KEY)|BIT(EV_ABS);ts.dev.keybitLONG(BT
10、N_TOUCH)=BIT(BTN_TOUCH);input_set_abs_params(&ts.dev,ABS_X,0,0 x3FF,0,0);input_set_abs_params(&ts.dev,ABS_Y,0,0 x3E8,0,0);input_set_abs_params(&ts.dev,ABS_PRESSURE,0,1,0,0);sprintf(ts.phys,ts0);/填写设备名称/*以上是输入设备的名称和ID,这些信息是输入设备的身份信息了*/ts.dev.private=&ts;ts.dev.name=s3c2410ts_name;ts.dev.phys=ts.phys;
11、ts.dev.id.bustype=BUS_RS232;ts.dev.id.vendor=0 xDEAD;ts.dev.id.product=0 xBEEF;ts.dev.id.version=S3C2410TSVERSION;2注册input handlerstatic struct input_handler evdev_handler=.event=evdev_event,.connect=evdev_connect,.disconnect=evdev_disconnect,.fops=&evdev_fops,.minor=EVDEV_MINOR_BASE,.name=evdev,.id
12、_table=evdev_ids,;static int _init evdev_init(void)return input_register_handler(&evdev_handler);7.4.5 编写输入设备驱动需要完成的工作从上面这个例子可以看出,通过Input子系统,具体的输入设备驱动只需要完成如下工作:1在模块加载函数中告知Input子系统它可以报告的事件设备驱动通过set_bit()告诉Input子系统它支持哪些事件,如下所示。set_bit(EV_KEY,button_dev.evbit);set_bit(BTN_0,button_dev.keybit);2在模块加载函数中
13、注册输入设备设备驱动可以通过input_register_device()注册一个输入设备,函数原型如下:input_register_device(&button_dev);3在键被按下/抬起、触摸屏被触摸/抬起/移动、鼠标被移动/单击/抬起时,通过input_report_xxx()函数报告发生的事件及对应的键值/坐标等状态主要的事件类型包括EV_KEY(按键事件)、EV_REL(相对值,如光标移动,报告的是相对最后一次位置的偏移)和EV_ABS(绝对值,如触摸屏、操纵杆,它们工作在绝对坐标系统)。4在模块卸载函数中注销输入设备注销输入设备的函数如下:void input_unregist
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 触摸屏 驱动 移植 Linux 系统 教学 课件
限制150内