驱动世界里的宏伟建筑
|
,我是老吴。 是否每一个上进的人都会觉得自己还可以再努力一点? 事情到了最后,只要没达成目的,总能把失败的原因归为 "没有再努力一点"。 但是,对努力的最大错误认知就是:时间越长,过程越痛苦,代表我越努力。 想一想,是否有更合理的努力方式? 以下是正文:
一、什么是 device model? Linux 的 device model 是一个旨在统一管理所有设备驱动的模型。 它犹如一栋规模宏大的建筑: 以 kobject、kset、attribute 等作为基本的建筑材料, 构造出支撑驱动世界的 bus、device、driver 三大组件, 最后通过 sysfs 在各种基础的建筑材料之间建立彼此的互联层次关系,并向外界提供了与建筑内设施进行互动的文件接口。 evice model 有什么作用? 可以将 device 的硬件描述 和 driver 进行分离,提升 driver 的代码复用率; 可以对 device 进行分类; 可以遍历 device 和 driver; 可以更好地呈现设备的拓扑关系; 可以通过 sysfs 访问设备; 可以让设备支持热插拔; ... 为了控制篇幅,本文将重点放在与驱动工程师关系最紧密的 bus、device、driver 3 个 组件。 二、device model 的 3 个核心概念 device model 里有 3 个核心的概念:
什么是 bus? bus 代表一种总线,例如 I2C、SPI、Usb 等。 bus 是 Linux 设备驱动模型这种建筑的核心框架,系统中的设备和驱动都依附在其周围。 启动系统后,可以通过 /sys/bus 可以查看系统里当前有哪些总线。 bus 由 struct bus_type 来描述: 需要一下子了解各个成员的作用,用到的时候再说明。 重点关注成员:
注册 bus 的 api: (编辑:阜新站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

