Linux驱动之Input子系统要点分析

① Input_device与Input_handler的匹配过程

当Input_device与Input_handler->id中的位图信息全部一致,则匹配成功,然后调用Input_handler->connect函数,在该函数中创建相对应的设备访问节点

② 事件报告过程

底层驱动程序通过调用report_xxx函数向上层报告输入事件,经Input_core层对输入事件进行分类,并且分发到相应的Input_handle层(evdev.c tsdev.c consoledev.c mousedev.c等),调用Input_handle相对应的事件处理函数Handle

③ 设备节点的访问

对于系统调用访问设备节点,即访问注册设备时的file_operation函数集,对于不同的输入类型的设备在Input_handle层有不同的file_operation

时间: 2024-10-08 00:21:17

Linux驱动之Input子系统要点分析的相关文章

Linux驱动之输入子系统框架

    好记性不如烂笔头,整理一下笔记~ Linux驱动之输入子系统框架 输入子系统将该类驱动划分为3部分 1.核心层 input.c 2.设备层 Gpio_keys.c ... 3.事件处理层 Evdev.c 事件处理层为纯软件的东西,设备层涉及底层硬件,它们通过核心层建立联系,对外提供open write等接口. 1.我们首先来看,核心层 input.c如何向外界提供接口 在 input_init 中注册了字符设备驱动 register_chrdev(INPUT_MAJOR, "input&

Linux设备驱动之input子系统

作者:武汉华嵌嵌入式培训中心  讲师  李家凯 对于输入类设备如键盘.鼠标.触摸屏之类的Linux驱动,内核提供input子系统,使得这类设备的处理变得非常便捷.总体上来讲,input子系统由三部分组成: 事件驱动<-->input核心<-->设备驱动. 其中事件驱动负责与用户程序打交道,诸如设备节点/dev之类的,都由他负责,我们在写驱动时就不用实现这个了:设备驱动负责与硬件设备打交道,这里的交互很简单,只需要读取相关硬件的数据,然后抛给input核心就可以了: 举个例子,以按键

linux驱动之i2c子系统device注册driver注册简单分析

Linux 驱动设计主要是根据分层分离思想,i2c子系统分为i2cocre.adapter.及device_driver层,其实adapter也是个device,只不过是我们主控芯片的I2C控制接口而已,我们的主控芯片有几个I2C接口就有几个adapter; i2ccore这一层linux已经帮我们实现,主要的工做是类似platform总线的作用,负责drvier及设备的注册,相比platform多了个adapter的注册管理工作,以及i2c的数据发送接收等等算法,说算法有点夸大,其实就是按照i

设备驱动之input子系统

input子系统 相关链接: http://bbs.ednchina.com/BLOG_ARTICLE_255205.HTM //good http://blog.chinaunix.net/uid-14027506-id-200921.html //good

Linux驱动之输入子系统简析

输入子系统由驱动层.输入子系统核心.事件处理层三部分组成.一个输入事件,如鼠标移动.键盘按下等通过Driver->Inputcore->Event handler->userspace的顺序到达用户控件的应用程序. 系统框图 假设打开一个字符设备驱动程序/dev/event0,event代表的是输入子系统的设备文件,当应用程序调用C库的open函数后,open函数会进入系统调用,最后定位到drivers\input\input.c文件下(这个文件就是核心层)的.这个函数的功能主要是根据设

linux驱动之i2c子系统mpu6050设备驱动

以下是mpu6050简单的驱动实现,mpu6050是I2C接口的6轴传感器,可以作为字符设备注册到内核,本代码运行环境是3.4.2内核,4.3.2版本的编译链,12.04版本的Ubuntu,硬件环境是jz2440开发板: 按照之前分析的I2C驱动框架,mpu6050驱动主要是实现外设端的驱动,主要是注册外设到I2C总线,而外设端注册到I2C总线包括device及driver两个部分注册到I2C总线,采用分离的设计思想,详情见代码: device注册到I2C总线: #include <linux/

Linux驱动中的platform总线分析

copy from :https://blog.csdn.net/fml1997/article/details/77622860 概述 从Linux2.6内核起,引入一套新的驱动管理和注册机制:platform_device 和 platform_driver .Linux 中大部分的设备驱动,都可以使用这套机制,设备用 platform_device 表示:驱动用 platform_driver 进行注册. linux_platform_driver 机制和传统的device_driver机

Linux设备驱动之IIO子系统——IIO框架及IIO数据结构

由于需要对ADC进行驱动设计,因此学习了一下Linux驱动的IIO子系统.本文翻译自<Linux Device Drivers Development >--John Madieu,本人水平有限,若有错误请大家指出. IIO Framework 工业I / O(IIO)是专用于模数转换器(ADC)和数模转换器(DAC)的内核子系统.随着越来越多的具有不同代码实现的传感器(具有模拟到数字或数字到模拟,功能的测量设备)分散在内核源上,收集它们变得必要.这就是IIO框架以通用的方式所做的事情.自20

input子系统

以前,看过国嵌关于input子系统的视频课程,说实话,我看完后脑子里很乱,给我的印象好像是input子系统驱动是一个全新的驱动架构,疑惑相当多.前几天在网上,看到有很多人介绍韦东山老师的linux驱动课程很不错,于是,我就买了第二期的视频,看了韦老师讲解的input子系统视频课程后,我完全明白了整个input子系统的工作机制.为了方便以后查阅,对input子系统的整体框架总结如下: 典型的输入设备(如键盘.鼠标)的工作机制都是差不多的,都是在设备有动作时,向CPU产生一个中断,通知它读取相应的数