加入收藏 | 设为首页 | 会员中心 | 我要投稿 阜新站长网 (https://www.0418zz.com.cn/)- 管理运维、AI硬件、数据集成、云备份、负载均衡!
当前位置: 首页 > 站长资讯 > 评论 > 正文

驱动世界里的宏伟建筑

发布时间:2021-03-28 11:57:58 所属栏目:评论 来源:互联网
导读:,我是老吴。 是否每一个上进的人都会觉得自己还可以再努力一点? 事情到了最后,只要没达成目的,总能把失败的原因归为 没有再努力一点。 但是,对努力的最大错误认知就是:时间越长,过程越痛苦,代表我越努力。 想一想,是否有更合理的努力方式? 以下是正

,我是老吴。

是否每一个上进的人都会觉得自己还可以再努力一点?

事情到了最后,只要没达成目的,总能把失败的原因归为 "没有再努力一点"。

但是,对努力的最大错误认知就是:时间越长,过程越痛苦,代表我越努力。

想一想,是否有更合理的努力方式?

以下是正文:

  • 一、什么是 device model?
  • 二、device model 的 3 个核心概念
  • 三、bus、device、driver 是如何关联的?
  • 四、bus、device、driver 最简单示例
  • 五、小结
  • 六、相关参考

一、什么是 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
  • device
  • driver

什么是 bus?

bus 代表一种总线,例如 I2C、SPI、Usb 等。

bus 是 Linux 设备驱动模型这种建筑的核心框架,系统中的设备和驱动都依附在其周围。

启动系统后,可以通过 /sys/bus 可以查看系统里当前有哪些总线。

bus 由 struct bus_type 来描述:

需要一下子了解各个成员的作用,用到的时候再说明。

重点关注成员:

  • int (*match)(struct device *dev, struct device_driver *drv),用于判断挂在该 bus 上的设备和驱动是否匹配的回调函数;
  • int (*probe)(struct device *dev),如果 bus 具有探测设备的能力,则会提供该回调函数;
  • struct subsys_private *p,用于管理 bus 上的设备和驱动的数据结构;

注册 bus 的 api:

(编辑:阜新站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读