RK3568驱动指南|第十三篇 输入子系统-第138章 输入子系统框架

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568 支持安卓 11 和 linux 系统,主要面向物联网网关、NVR 存储、工控平板、工业检测、工控盒、卡拉 OK、云终端、车载中控等行业。


【公众号】迅为电子

【粉丝群】824412014(加群获取驱动文档+例程)

【视频观看】嵌入式学习之Linux驱动(第十三篇 输入子系统_全新升级)_基于RK3568

【购买链接】迅为RK3568开发板瑞芯微Linux安卓鸿蒙ARM核心板人工智能AI主板


  1. 第138章 输入子系统框架

Input子系统可以分为事件处理层、设备驱动层、核心层三层,这三层在输入子系统中有着不同的作用和分工。

分层的好处在于提高代码的可重用性和可维护性,以及降低开发的难度。通过将输入子系统划分为不同的层次,每个层次可以专注于特定的功能和责任,减少了代码的冗余和重复编写。例如,在设备驱动层编写的通用代码可以被多个不同的驱动程序共享和复用,提高了开发效率。同时,分层的结构也使得不同层次之间的接口清晰明确,降低了开发过程中的耦合度,使得代码的维护和调试更加容易。

下面是对每个层次的详细解释:

  1. 事件处理层(Event Handling Layer)

事件处理层是输入子系统的最上层,可以处理输入设备产生的事件并将其传递给上层应用程序,并在操作系统中创建设备节点,以便应用程序可以通过设备节点与输入设备进行通信。它接收来自核心层的输入事件,并根据事件的类型和属性进行相应的处理。

2.核心层(Core Layer):

核心层的主要功能是作为匹配器位于事件处理层和设备驱动层之间。它起到协调和连接这两个层级的作用,以确保输入设备的事件能够正确地传递给相应的事件处理程序。

以下是核心层在输入子系统中的主要功能:

(1)事件匹配: 核心层负责将输入设备产生的原始输入数据与相应的事件处理程序进行匹配。它会解析原始输入数据,并根据预定义的规则和配置信息,确定应该将输入数据传递给哪个事件处理程序进行处理。

(2)设备管理和控制: 核心层负责维护输入设备的状态、属性和配置信息,并提供设备的注册、注销和管理功能。它与设备驱动层进行交互,接收来自设备驱动层的输入事件,并将其转化为抽象化的事件表示形式。核心层提供一致的接口,使得上层应用程序可以独立于具体的硬件设备进行操作。

(3)事件处理和分发: 核心层负责事件的处理和分发,将输入事件传递给对应的事件处理层。它通过事件队列的机制,接收和缓存来自设备驱动层的输入事件,并按照特定的规则将事件分发给对应的事件处理层或应用程序。这样,事件处理层可以通过核心层提供的接口,获取输入事件并进行相应的处理。

(4)抽象化接口和事件处理机制: 核心层为上层应用程序和事件处理层提供了一组抽象化的接口和事件处理机制。它提供了统一的事件表示形式,使得不同类型的输入设备(如键盘、鼠标、触摸屏等)的事件可以被表示和处理。通过核心层的接口,事件处理层可以注册事件监听器、订阅特定类型的事件,并获取输入设备的状态信息。

3.设备驱动层(Device Driver Layer)

设备驱动层是输入子系统的最底层,负责与硬件设备进行通信和交互。它的主要职责是将硬件设备的操作和功能抽象为统一的接口,以便核心层和事件处理层可以与之交互。设备驱动层的代码通常包括硬件的初始化、中断处理、数据传输等操作,以确保输入设备的正常工作。开发者在这一层编写驱动程序,以适配特定的硬件设备。

Linux源码中已经写好了核心层相关的代码,所以在后续编写输入子系统驱动的时候,核心层的代码是不需要编写的,而事件处理层在Linux中也为我们提供了一个模板,除了一些例如固定设备节点的需求外,一般不需要编写事件处理层的代码,而设备驱动层由于要面对不同的硬件,每个硬件的初始化方式又都都不同,所以设备驱动层的代码在编写输入子系统驱动的时候是需要填充的。

至此,关于输入子系统的框架就讲解完成了,会在下个小节对输入子系统要用到的数据结构进行介绍。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-09 23:58:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-09 23:58:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-09 23:58:04       82 阅读
  4. Python语言-面向对象

    2024-03-09 23:58:04       91 阅读

热门阅读

  1. const关键字不同使用场景

    2024-03-09 23:58:04       43 阅读
  2. DOM

    DOM

    2024-03-09 23:58:04      41 阅读
  3. MongoDB聚合运算符;$dateToParts

    2024-03-09 23:58:04       53 阅读
  4. WPF 单击移动窗口 MouseLeftButtonDown 事件

    2024-03-09 23:58:04       45 阅读
  5. 每天一个数据分析题(一百八十九)

    2024-03-09 23:58:04       48 阅读
  6. Kafka 之 AdminClient 配置

    2024-03-09 23:58:04       41 阅读