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等有实际的总线,它是抽象出来的,为平台上一些设备来服务

GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐