上一章节我们了解到什么是内核模块,模块的加载卸载详细过程以及内核模块的使用等内容。 本章,我们将学习驱动相关的概念,理解字符设备驱动程序的基本框架,并从源码上分析字符设备驱动实现和管理。 主要内容有如下五点:
-
Linux设备分类;
-
字符设备的抽象,字符设备设计思路;
-
字符设备相关的概念以及数据结构,了解设备号等基本概念以及file_operations、file、inode相关数据结构;
-
字符设备驱动程序框架,例如内核是如何管理设备号的;系统关联、调用file_operation接口,open函数所涉及的知识等等。
-
设备驱动程序实验。
1. Linux设备分类
linux是文件型系统,所有硬件都会在对应的目录(/dev)下面用相应的文件表示。 在windows系统中,设备大家很好理解,像硬盘,磁盘指的是实实在在硬件。 而在文件系统的linux下面,都有对于文件与这些设备关联的,访问这些文件就可以访问实际硬件。 像访问文件那样去操作硬件设备,一切都会简单很多,不需要再调用以前com,prt等接口了。 直接读文件,写文件就可以向设备发送、接收数据。 按照读写存储数据方式&#x