发布者:上海IT外包来源:http://www.lanmon.net点击数:1760
蓝盟IT小贴士,来喽!
所有人都认为自己能更加努力吗?
事情到了最后,除非达到目的,否则总是将失败的原因归类为“没有更加努力”。
但是,对努力最大的错误认识是,时间越长,意味着过程越痛苦,我越努力。
请考虑一下。 有更合理的努力方法吗?
以下是正文。
一、什么是设备模型?
二、设备模型的三个核心概念
三、bus、device、driver是怎么关联的?
四、bus、设备、驱动器的最简单的例子
五、总结
六、相关参考
一、什么是设备模型?
Linux设备模型是一种旨在集成管理所有设备驱动的模型。
就像一座大型建筑物
kobject、kset、attribute等作为基本的建筑材料,
构建支撑世界的bus、device、driver三个组件
最后,使用sysfs在各种底层建筑材料之间建立互联级别的关系,并向外部提供与建筑中的设施交互的文件接口。
device model有什么作用?
可以将device的硬件描述和driver分离,提高driver的代码复用率
可以对设备进行分类。
可以遍历设备和驱动器。
能够更好地表现设备拓扑关系
可以通过sysfs访问设备。
热插拔设备
.
为了控制篇幅,本文着重于与驱动工程师关系最密切的bus、device、driver 3三个组件。
二、设备模型的三个核心概念
device model有三个核心概念。
巴士
戴维斯
河边。
什么是bus
bus代表I2C、SPI、Usb等总线。
bus是Linux设备驱动模型这一建筑的核心框架,系统内的设备和驱动依赖于其周围。
启动系统后,可以通过/sys/bus确认系统当前有哪些总线。
三、bus、device、driver是怎么关联的?
device model最核心的工作是维持这三种抽象的实例,并建立它们之间的关联关系。
bus如何管理设备和驱动程序?两个klist成员将此总线上的所有驱动程序和设备作为链表进行链接。
struct kset *drivers_kset和struct kset *devices_kset是一个kset,用于存储在向系统注册当前新总线时动态生成的该总线上的所有驱动程序和设备。
在内核中,对象用kobject表示,kset是kobject set的缩写内核对象的集合。
以内核kobject和kset等数据结构为素材,为了实现面向对象,构筑了device model的框架。
文/上海蓝盟 IT外包专家
分享到: