以前写的一些输入设备的驱动都是采用字符设备处理的.问题由此而来,Linux开源社区的大神们看到了这大量输入设备如此分散不堪,有木有可以实现一种机制,可以对分散的.不同类别的输入设备进行统一的驱动,所以才出现了输入子系统. 输入子系统引入的好处: (1)统一了物理形态各异的相似的输入设备的处理功能.例如,各种鼠标,不论PS/2.USB.还是蓝牙,都被同样处理. (2)提供了用于分发输入报告给用户应用程序的简单的事件(event)接口.你的驱动不必创建.管理/dev节点以及相关的访问方法.因此它能够…
一.设备驱动程序 在上一篇随笔中已经分析,linux输入子系统分为设备驱动层.核心层和事件层.要利用linux内核中自带的输入子系统实现一个某个设备的操作,我们一般只需要完成驱动层的程序即可,核心层和事件层内核已经帮我们做好了.因此这篇随笔主要介绍按键操作设备驱动层的代码. 1.1设备驱动入口函数 在设备驱动入口函数中我们需要做的事:(1)分配一个input_dev 结构体 (2)设置这个input_dev 结构体 (3)调用input_register_device注册这个input_dev…
混杂设备也是一种字符设备,主设备号固定为10.相对于普通字符设备驱动,它不需要自己去生成设备文件. 1.声明使用的头文件 #include <linux/miscdevice.h> 2.定义一个混杂设备: static struct miscdevice miscDevice = {  .minor = MISC_DYNAMIC_MINOR,      //自动分配从设备号  .name = "设备名称",  .fops = &dev_fops,          …
转自:https://www.cnblogs.com/crmn/articles/6696819.html 按键事件信息之上报绝对事件信息之上报相对事件信息之上报功能键驱动编写多点触控事件的上报 只产生数据的一类设备,站在内核角度叫输入设备,内核对输入设备实现的一套函数接口==>内核输入子系统产生的数据:发生的事件对产生数据的特点进行分类:绝对事件:绝对坐标等相对事件:相对坐标等按键事件同步事件这些事件须上报到应用层 input子系统简介: 输入设备(如按键,键盘,触摸屏,鼠标等)是典型的字符设…
注:本系列转自: http://www.ourunix.org/post/290.html input子系统介绍         输入设备(如按键,键盘,触摸屏,鼠标,蜂鸣器等)是典型的字符设备,其一般的工作机制是底层在按键,触摸等动作发生时产生一个中断(或驱动通过timer定时查询),然后cpu通过SPI,I2C或者外部存储器总线读取键值,坐标等数据,放一个缓冲区,字符设备驱动管理该缓冲区,而驱动的read()接口让用户可以读取键值,坐标等数据.         在Linux中,输入子系统是由…
的在Linux驱动之输入子系统简析已经分析过了输入子系统的构成,它是由设备层.核心层.事件层共同组成的.其中核心层提供一些设备层与事件层公用的函数,比如说注册函数.反注册函数.事件到来的处理函数等等:事件层其实在Linux内核里面已经帮我们写好了很多有关的事件:而设备层就跟我们新添加到输入系统的具体设备相关了.这里以JZ2440开发板上的4个按键作为输入子系统的按键:它定义的功能分别为:KEY_L.KEY_S.KEY_ENTER.KEY_LEFTSHIFT.这几个值是在include\linux…
NQian 记录成长~ 首页 新随笔 联系 订阅 管理 随笔 - 305  文章 - 0  评论 - 254 12.Linux之输入子系统分析(详解)   在此节之前,我们学的都是简单的字符驱动,涉及的内容有字符驱动的框架.自动创建设备节点.linux中断.poll机制.异步通知.同步互斥/非阻塞.定时器去抖动. 其中驱动框架如下: 1)写file_operations结构体的成员函数: .open()..read()..write() 2)在入口函数里通过register_chrdev()创建…
Linux输入子系统(Input Subsystem) 1.1.input子系统概述 输入设备(如按键,键盘,触摸屏,鼠标等)是典型的字符设备,其一般的工作机制是低层在按键,触摸等动作发生时产生一个中断(或驱动通过timer定时查询),然后cpu通过SPI,I2C或者外部存储器总线读取键值,坐标等数据,放一个缓冲区,字符设备驱动管理该缓冲区,而驱动的read()接口让用户可以读取键值,坐标等数据. 在Linux中,输入子系统是由输入子系统设备驱动层.输入子系统核心层(Input Core)和输入…
版权声明:本文为博主原创文章,转载请标注出处:   在此节之前,我们学的都是简单的字符驱动,涉及的内容有字符驱动的框架.自动创建设备节点.linux中断.poll机制.异步通知.同步互斥/非阻塞.定时器去抖动. 其中驱动框架如下: 1)写file_operations结构体的成员函数: .open()..read()..write() 2)在入口函数里通过register_chrdev()创建驱动名,生成主设备号,赋入file_operations结构体 3)在出口函数里通过unregister…
linux输入子系统(linux input subsystem)从上到下由三层实现,分别为:输入子系统事件处理层(EventHandler).输入子系统核心层(InputCore)和输入子系统设备驱动层. 对于输入子系统设备驱动层而言,主要实现对硬件设备的读写访问,中断设置,并把硬件产生的事件转换为核心层定义的规范提交给事件处理层. 对于核心层而言,为设备驱动层提供了规范和接口.设备驱动层只要关心如何驱动硬件并获得硬件数据(例如按下的按键数据),然后调用核心层提供的接口,核心层会自动把数据提交…