linux设备驱动模型 - 驱动框架

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/l289123557/article/details/68214907

linux驱动模型框架如图所示

这里写图片描述

1. kernfs

驱动最终是提供给用户层使用,那么其中的接口就是通过kernfs文件系统来注册,kernfs是一个通用的内核虚拟文件系统

2. sysfs/kobject

sysfs是设备驱动文件系统,设备之间的各种关系会在在/sys目录下层层表现出来,sysfs典型的目录结构如下

/sys # ls
block
bus
class
dev
devices
firmware
fs
kernel
module
power

一个硬件平台上是由多种多样的设备的,那么为了能把这些设备都抽象出来统一由sysfs管理,linux内核就定义一个kobject结构体,/sys下的每个目录都是通过kobject来抽象的,kset既是一个kobject,也是同类型kobject的一个集合,kobject和sysfs自然的绑定在一起,这样能方便组织驱动中的各种联系

3. device - bus - driver

这部分是核心,驱动模型中会分设备与驱动,两个是独立的,不同的设备可以共用同一个驱动,在bus上,分别挂多种设备与驱动,而设备与驱动的匹配要通过bus来进行

4. 总线设备层

上面是抽象出不同总线设备驱动的概念,基于此就可以根据不同的总线来设计独有的总线模型,最通用的就是platform总线,它是一个特殊的总线,因为不像usb/i2c等有实际的总线,它是抽象出来的,为平台上一些设备来服务

猜你喜欢

转载自blog.csdn.net/l289123557/article/details/68214907
今日推荐