



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux输入子系统前面章节讲解按键设备驱动,实际上,在Linux系统中,一种更值得推荐的实现这类设备驱动的方法是利用input子系统。Linux系统提供了input子系统,按键、触摸屏、鼠标都可以利用input接口函数来实现设备驱动。l input子系统体系结构设备描述:在Linux内核中,input设备用input_dev结构体描述,使用input子系统实现输入设备驱动的时候,驱动的核心工作是向系统报告按键、触摸屏、鼠标等输入事件(event,通过input_event结构体描述),不再需要关心文件操作接口,因为input子系统那个已经完成了文件操作接口。驱动报告的事件经过InputCore和Eventhandler最终到达用户空间。设备注册/注销:注册输入设备的函数为:int input_register_device(struct input_dev *dev)注销输入设备的函数为:void input_unregister_device(struct input_dev *dev)驱动实现事件支持设备驱动通过set_bit()告诉input子系统它支持哪些事件,如下所示:set_bit(EV_KEY, button_dev.evbit)struct iput_dev有两个成员,一个是evbit,一个是keybit。分别用来表示设备所支持的事件类型和按键类型。事件类型:EV_RST Reset EV_REL 相对坐标EV_MSC 其它EV_SND 声音EV_FF 力反馈EV_KEY 按键EV_ABS 绝对坐标EV_LED LEDEV_REP Repeat驱动实现报告事件:用于报告EV_KEY、EV_REL、EV_ABS事件的函数分别为:void input_report_key(struct input_dev *dev, unsigned int code, int value)void input_report_rel(struct input_dev *dev, unsigned int code, int value)void input_report_abs(struct input_dev *dev, unsigned int code, int value)code:事件的代码。如果事件的类型是EV_KEY,该代码code为设备键盘代码。代码值0-127为键盘上的按键代码,0x110-0x116为鼠标上按键代码,其中0x110(BTN_LEFT)为鼠标左键,0x111(BTN_RIGHT)为鼠标右键,0x112(BTN_MIDDLE)为鼠标中键。其代码含义参看include/linux/input.h文件value:事件的值。如果事件的类型是EV_KEY,当按键按下时值为1,松开时值为0input_sync()用于事件同步,它告知事件的接收者:驱动已经发出一个完整的报告。例如:在触摸屏设备驱动中,一次坐标及按下状态的整个报告过程如下: input_report_abs(input_dev, ABS_X, x); /X坐标 input_report_abs(input_dev, ABS_Y,y); /Y坐标 input_report_abs(input_dev, ABS_PRESSURE,pres); /压力 input_sync(input_dev); /同步l 实例分析/*在按键中断中报告事件*/static void button_interrupt(int irq, void *dummy, struct pt_regs *fp) input_report_key(&buton_dev, BTN_0, intb(BUTTON_PORT0)); input_report_key(&buton_dev, BTN_0, intb(BUTTON_PORT1)); input_sync(&button_dev);static int _ _init button_init(void)/*申请中断*/ if(request_irq(BUTTON_IRQ, button_interrupt, 0, “button”, NULL) return EBUSY;set_bit(EV_KEY, button_dev.evbit); /支持EV_KEY事件set_bit(BTN_0, button_dev.keybit) ; /设备支持两个键set_bit(BTN_1, buton.dev.keybit);input_register_device(&button_dev); /注册input设备应用程序:struct input_event struct timeval time; /按键时间 _u16 type; /类型 _u16 code; /要模拟成什么按键 _s32 value; /是按下还是释放struct input_event ev_mouse2;fd=open(”/dev/input/event3”, O_RDWR);while(1)count=read(fd, ev_mouse, sizeof(struct input event);for(i=0; i(int)count/sizeof(input_event); i+) if(EV_REL= = ev.mousei.type) printf(“time:%ld.%d”,ev_mousei.time.tv_sec, ev_mousei.time.tv_usec);Prinf(“type:%d code:%d: %d value:%dn”, ev_mousei.type, ev_mousei.code, ev_mousei.value); if(EV_KEY= =ev_mousei.type) printf(”time:%d.%d”, ev_mousei.time.tv_sec, ev_mousei.tv_usec); printf(”type:%d code :%d value:%dn”, ev_mousei.type, ev_mousei.code, ev_mousei.value);实验:1、 将按键驱动程序按照input驱动模式改写2、 改写相应的按键访问应用程序 触摸屏驱动设计原理概述:触摸屏分为电阻式、电容式、声表明波式和红外线扫描等类型,使用最多的是4线电阻式触摸屏。S3C2440触摸屏由横向电阻比和纵向电阻线组成,由nYPON、YMON、nXPON、XMON四个控制信号控制4个MOS管(S1、S2、S3、S4)的通断。控制器:S3C2440触摸屏控制器有2种处理模式:1、 X/Y位置分别转换模式。触摸屏控制器包括两个控制阶段,X坐标转换阶段和Y坐标转换阶段。2、 X/Y位置自动转换模式。触摸屏控制器将自动转换X和Y坐标。工作流程:1、 select separate X/Y Position conversion mode or auto(sequential)X/Y position conversion mode to get X/Y position 2、 Set Touch screen interface to waiting interrupt mode3、 If interrupt occurs, then appropriate conversion (separate X/Y Position conversion mode or auto (sequential) X/Y position conversion mode )is activated.4、 After get the proper value about X/Y position, return to waiting for interrupt mode.中断等待:When Touch screen controller is in waiting for interrupt mode, it waits for stylus down. The controller, generates interrupt(INT_TC)signals when the Stylus is down on touch screen panel. After an i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业自动化与机器人技术的关系
- 工业领域的环保科技创新
- 工作压力下的团队合作挑战与对策
- 工业设计创新与技术美学
- 工业风餐厅空间设计
- 工程中的绿色制造技术探讨
- 工厂自动化设备的保养策略
- 工厂安全生产管理与监控系统
- 工程机械的智能化管理研究
- 工程机械的发展现状及趋势
- 中国古茶树资源状况白皮书2025
- 牙科技术入股合作协议书
- 2025甘肃省农垦集团限责任公司人才招聘524人易考易错模拟试题(共500题)试卷后附参考答案
- 温泉水项目可行性分析报告(模板参考范文)
- 2024年海关总署在京直属事业单位招聘笔试真题
- T/CCIAS 010-2023鸡精调味料生产技术规范
- 广州市天河区2024-2025学年八年级英语沪教版下册期末模拟练习题【含答案解析】
- 2025年微观经济学与宏观经济学专业考试试卷及答案
- 逆境事件对企业在全球价值链系统韧性的影响
- 2025届广东省广州市天河七年级生物第二学期期末复习检测模拟试题含解析
- 2024年宁夏医科大学总医院招聘真题
评论
0/150
提交评论