Linux设备模型

it2022-05-05  158

嵌入式系统常见的硬件拓扑

硬件拓扑描述Linux设备模型中的四个重要概念中的三个:Bus、Class、Device(Driver)

Bus(总线):CPU和一个或多个设备之间信息交互的通道,所有的设备都连接在总线上

Class(分类):类似面向对象中的Class(类),集合了具有相似功能或属性的设备并抽象出一套可以在多个设备之间共用的数据结构和接口函数。所以拥有相同class的设备驱动程序可以直接从Class中继承。

Device(设备):系统中所有的的硬件设备,描述它的名字、属性、从属的Bus、从属的Class等信息。

Driver(驱动):硬件设备的驱动程序,包含了设备初始化、电源管理相关的接口实现。

注:在计算机中有这样一类设备,它们通过各自的设备控制器,直接和CPU连接,CPU可以通过常规的寻址操作访问它们。这种连接方式并不属于传统意义上的总线连接。但设备模型应具备普适性,所以Linux虚构了一条Platfrom Bus供这些设备挂靠。

Linux设备模型的核心思想:

1、用Device和driver两个数据结构来描述硬件设备,统一了编写设备驱动的格式。

2、使用Device和driver两个数据结构实现硬件设备的即插即用(热插拔)

在Linux内核中,只要任何Device和Driver具有相同名字,内核就会执行Driver结构中的初始化函数(probe),该函数初始化设备。

对于大多数热插拔的设备而言,Driver一直存在于内核中。当设备没有插入时,其Device结构不存在,所以Driver也就不会进行初始化操作。当设备插入时,内核会创建一个Device结构(名字与Driver一样),此时就会触发Driver的执行。这就是即插即用。

3、通过“Bus——>Device”类型的树状结构解决设备之间的依赖。启动某一个设备前,内核会检测该设备是否依赖其他设备或总线,如果依赖,则会检查所依赖的对象是否启动,如果不依赖,则会先启动它,直到启动该设备的条件都具备了。而驱动开发人员需要做的就是在编写设备驱动时,告知内核该设备的依赖关系。

4、使用Class结构,在设备模型中引入面向对象的概念,这样可以最大限度的抽象共生,减少驱动开发过程中的重复劳动

 

 

 

 


最新回复(0)