嵌入式Linux设备驱动开发之:设备驱动概述
11.1.5设备驱动程序与外界的接口
每种类型的驱动程序,不管是字符设备还是块设备都为内核提供相同的调用接口,因此内核能以相同的方式处理不同的设备。Linux为每种不同类型的设备驱动程序维护相应的数据结构,以便定义统一的接口并实现驱动程序的可装载性和动态性。Linux设备驱动程序与外界的接口可以分为如下3个部分。
n 驱动程序与操作系统内核的接口:这是通过数据结构file_operations(在本书后面会有详细介绍)来完成的。
n 驱动程序与系统引导的接口:这部分利用驱动程序对设备进行初始化。
n 驱动程序与设备的接口:这部分描述了驱动程序如何与设备进行交互,这与具体设备密切相关。
它们之间的相互关系如图11.2所示。
图11.2设备驱动程序与外界的接口
11.1.6设备驱动程序的特点
综上所述,Linux中的设备驱动程序有如下特点。
(1)内核代码:设备驱动程序是内核的一部分,如果驱动程序出错,则可能导致系统崩溃。
(2)内核接口:设备驱动程序必须为内核或者其子系统提供一个标准接口。比如,一个终端驱动程序必须为内核提供一个文件I/O接口;一个SCSI设备驱动程序应该为SCSI子系统提供一个SCSI设备接口,同时SCSI子系统也必须为内核提供文件的I/O接口及缓冲区。
(3)内核机制和服务:设备驱动程序使用一些标准的内核服务,如内存分配等。
(4)可装载:大多数的Linux操作系统设备驱动程序都可以在需要时装载进内核,在不需要时从内核中卸载。
(5)可设置:Linux操作系统设备驱动程序可以集成为内核的一部分,并可以根据需要把其中的某一部分集成到内核中,这只需要在系统编译时进行相应的设置即可。
(6)动态性:在系统启动且各个设备驱动程序初始化后,驱动程序将维护其控制的设备。如果该设备驱动程序控制的设备不存在也不影响系统的运行,那么此时的设备驱动程序只是多占用了一点系统内存罢了。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)linux相关文章:linux教程
评论