迅为RK3568开发板驱动开发指南-输入子系统

《iTOP-RK3568开发板驱动开发指南》 更新,本次更新内容对应的是驱动**(第十三篇 输入子系统)** 视频,帮助用户快速入门,大大提升研发速度。

第13篇-输入子系统 目录

第1篇 驱动基础篇

第2篇 字符设备基础

第3篇 并发与竞争

第4篇 高级字符设备进阶

第5篇 中断

第6篇 平台总线

第7篇 设备树

第8篇 设备树插件

第9篇 设备模型

第10篇 热插拔

第11篇 pinctrl子系统

第12篇 GPIO子系统

第13篇 输入子系统

驱动基础-进阶篇

未完待续,持续更新中...

初识 input 子系统

137.1 什么是输入子系统?

在 Linux 中,input 子系统是专门为处理输入类设备而设计的一个子系统或框架。它提供了一套通用的接口和机制,用于驱动开发人员编写和管理输入设备的驱动程序。输入设备包括键盘、鼠标、触摸屏、游戏手柄等,具体示意图如下所示:

使用 input 子系统的主要目的是规范和简化输入设备驱动的开发过程,以提高驱动的通用性和兼容性。它通过将输入设备的共同功能和处理逻辑提取出来,编写成通用的代码,将差异化的代码留给具体的设备驱动开发人员,这种分工合作的方式使得驱动开发人员可以更专注地处理设备特定的细节,从而大大降低工程师的开发难度。

在不使用输入子系统的情况下,可能会使用不同的代码来表示相同的动作。例如,一个同学可能使用数字 1 来表示按键按下,数字 0 来表示按键松开;而另一个同学可能使用数字 2来表示按键按下,数字 3 来表示按键松开。这样的情况下,应用程序很难适配所有不同的驱动程序,从而导致程序的兼容性和移植性较差。

而在使用输入子系统后就可以解决这个问题。例如,当不同厂家的键盘连接到计算机上时,它们的驱动程序都是按照输入子系统框架来编写的。这意味着所有厂家的驱动程序都使用相同的代码规范来表示按键动作,例如使用 1 表示按下,使用 0 表示松开。这样一来,无论是哪个厂家的键盘,都可以在任意计算机上正常使用。

使用输入子系统的另一个好处是驱动开发人员不需要自己实现文件操作集函数。输入子系统已经提供了一套标准的接口和函数,开发人员只需要按照这些接口进行开发,而无需关心底层的文件操作细节。这样可以大大降低开发的难度和复杂度。

综上使用 input 子系统的作用如下所示:

1 )兼容性 : 输入子系统提供了一个统一的框架和接口,使得不同厂家的输入设备都可 以按照相同的规范进行驱动开发。无论是键盘、鼠标还是其他输入设备,只要符合输入子系统定义的接口和事件格式,都可以在 Linux 系统中正常工作。这样一来,工程师不需要针对每个厂家的设备编写和维护不同的驱动代码,大大提高了设备的兼容性。

2 )统一的驱动编程方式: 输入子系统定义了一套通用的驱动编程方式,工程师只需要按照输入子系统的规范进行开发即可。输入设备的驱动模块需要实现相应的接口函数,如初始化函数、事件处理函数等。这些接口函数的实现方式是相同的,不论是键盘驱动还是鼠标驱动,都可以按照统一的方式进行开发。这样一来,工程师可以更加专注于设备特定的细节,而无需关心通用的驱动框架,简化了开发过程。

3 )统一的应用操作接口: 输入子系统通过提供一组统一的应用操作接口,如

/dev/input/eventX,使得应用程序可以方便地与输入设备进行交互。应用程序可以通过读取这些设备节点,获取输入事件的信息,并进行相应的处理。无论是哪种类型的输入设备,应用程序都可以使用相同的方式进行访问和操作。这样一来,应用程序的开发人员不需要关心底层输入设备的细节,可以更加专注于应用程序的逻辑开发。

更多关注北京迅为电子了解详细教程

相关推荐
2202_754421544 小时前
一个计算频率的模块
驱动开发·fpga开发
嵌入(师)1 天前
嵌入式驱动开发详解1(系统调用)
驱动开发
昵称p1 天前
杂项驱动开发
驱动开发·gpio子系统·杂项驱动开发
7yewh1 天前
嵌入式硬件杂谈(四)-高速板PCB设计 高速信号全面讲解 蛇形线 等长线 差分对 阻抗对
驱动开发·嵌入式硬件·mcu·物联网·硬件工程·pcb工艺·精益工程
lishing62 天前
Linux驱动开发(9):pinctrl子系统和gpio子系统--led实验
linux·运维·驱动开发
lishing62 天前
Linux驱动开发(7):使用设备树实现RGB 灯驱动
linux·驱动开发
TeYiToKu2 天前
笔记整理—linux驱动开发部分(13)块设备
linux·c语言·驱动开发·笔记·嵌入式硬件·arm
网易独家音乐人Mike Zhou2 天前
【Linux驱动开发】irq中断配置API及中断应用 阻塞休眠和非阻塞的驱动操作
linux·c语言·驱动开发·stm32·单片机·mcu·iot
believe、悠闲2 天前
GetVolumeInformation函数使用记录
c++·windows·驱动开发
不怕犯错,就怕不做2 天前
修复kernel编译栈帧大小异常问题error: the frame size of 1928 bytes is larger than 1024 bytes
linux·arm开发·驱动开发