-
数学推导在卷积神经网络中的输入子系统
资源介绍
第5章 按键驱动
本章导读
按键是嵌入式系统中最简单和普通的输入设备,用于接收外部事件。在 Linux 系统中,
通常采用中断方式来接收该事件。本章介绍 Linux系统的按键驱动编写,相对于 GPIO驱动
而言,多了中断这部分内容。
本章也以两种方式来编写按键驱动,首先是传统的字符设备方式编写,重在理解 Linux
驱动的中断处理这部分内容;然后将按键纳入 Linux 输入子系统,按照输入子系统的方式,
重新实现按键功能。读者既可以对比两种驱动编写方式的优劣,也可以加深对 Linux设备驱
动的理解。两种方式都提供用户态应用测试程序。
在了解输入子系统前,首先要了解输入子系统为用户层提供的接口。在上册的“特殊硬
件接口编程”章节的“按键应用层编程”小节详细讲述了输入子系统的应用层接口和使用方
法。在阅读本章前,需要仔细阅读这些内容。
5.1 输入子系统
Linux 内核的输入子系统为鼠标、键盘、触摸屏、游戏杆等输入设备提供了驱动框架。
当程序员要为自己的输入设备编写驱动程序时,只需要实现从设备获取输入事件即可。至于
输入事件如何处理,用户接口如何实现,都由输入子系统完成。这大大减轻了输入驱动程序
的编码工作,也提高了驱动程序的稳健性。
同时输入子系统为所有输入设备都为应用层提供了标准的接口,这大大提高了驱动程序
的易用性。
输入子系统的驱动代码在内核的 目录下。
5.1.1 输入子系统构成
输入子系统的实现需要满足以下需求:
(1) 输入子系统要为每个输入设备都在/dev/目录下生成一个设备文件,以方便应用程序
读取指定输入设备产生的事件;
(2) 对于每一个输入设备,在输入子系统只需要实现其事件获取即可,至于事件如何处
理、如何到达设备文件则不需要考虑;
(3) 在 Linux 输入设备的可以分为事件类(如 USB 鼠标、USB 键盘、触摸屏等)、MOUSE
类(特指 PS/2 接口的输入设备)、游戏杆等类型,为这些输入设备而实现的设备文
件的接口必须有所差别。因此输入子系统需要为不同类型的输入设备实现正确的设
备文件接口。
为实现这些目的,输入子系统输入通过以下部分实现:
设备驱动 1.
为实现目的(1),输入子系统为每个输入设备都实现一个设备驱动,如图 5.1 所示。每
个设备驱动都可以动态注册到输入子系统,或从输入子系统中注销。
- 上一篇: linux设备驱动程序(中文第三版)+源码
- 下一篇: linux常用的60个命令