2回答

0收藏

[评测分享] 【ALINX AXU2CGB试用】从 linux 驱动模型的角度看 iic 总线框架

#板卡评测 #板卡评测 3654 人阅读 | 2 人回复 | 2021-07-27

本帖最后由 robe.zhang 于 2021-7-27 20:48 编辑

【ALINX AXU2CGB试用】从 linux 驱动模型的角度看 iic 总线框架


Linux 驱动模型中有 bus,device,driver 三部分,这个是软件的抽象,软件中的概念,看很多地方喜欢拿这个概念和实体总线对比,个人感觉不能比较,为什么这么说,先看iic驱动吧:

Iic 主机使用的 platform driver,platform 平台驱动

Iic eeprom 从机使用的module,基础的模块去初始化驱动。

结果也看到了, eeprom 能工作,而且工作的好好的。

是不是有一大堆疑问:
1, iic 主机为什么不在 iic 总线上?可是偏偏还能工作?
2,iic 主机为什么在 platform 平台总线上?
3,iic 设备又为什么使用基础的模块去初始化驱动?

Linux 驱动模型中的 bus devicedriver ,看作是软件中实现设备支持的一种组织方式,本文叫它组织形式,这种形式分为 bus,device,driver,如果你自己写一个内核,你可以把这种形式分为狗窝,小狗,狗食,同样也可以。

Iic 主机设备被解析为platform 设备,与此匹配的驱动,也需要注册为 platform 驱动,因为都是 platform 平台,才是一个组织,才能适配。
所以iic主机的驱动,也必须注册为 platform驱动,不然不在一个组织形式中,找不到无法适配,驱动就不会工作,硬件也就不能工作。
现在Iic 主机驱动搞定了。

iic 从机设备被iic主机驱动解析为 iic 总线设备, eeprom 驱动也要注册为 iic 驱动,所以 eeprom 驱动要注册为 iic 驱动才可以工作。Module_init 仅仅是模块初始化接口,at24_init 初始化函数中注册了 iic 总线驱动,现在Iic 从机驱动也搞定了。

问题又来了:
1, iic 总线从哪来
2, iic 主机在哪里注册的
3, Iic 从机在软件层面怎么挂在 iic 主机上?

Iic 总线从哪来,系统初始化创建起来的。如笔者往期文章中有详细分析
【ALINXAXU2CGB试用】IIC 核心驱动框架源码分析
https://www.cirmall.com/bbs/thread-206787-1-1.html

iic 主机是在 platform driver驱动中又重新注册为 iic 主机的。Iic 主机有了
Iic 从机在软件层面上挂载到总线上,主要依赖设备树中的树形结构,同时也是iic 主机驱动解析过程实现的,在核心层实现。Iic 从机也挂在iic主机上了,此处也仅仅是组织形式,软件上并不像硬件总线需要两根线路实现连接。

说了这么多驱动模型,设备树结构,等等,都是抽象的概念,最好自己详细透彻的分析一下驱动,本文所有概念都会有自己独特的认知。

电路板上的Iic总线是实体总线,iic实体总线上挂着主机和从机,iic 实体总线是用来传输信号,实现主从机通信的。

然而驱动层面的总线也有 iic 总线, platform 总线,SPI总线等等,驱动的总线挂着device,还挂着 driver,是便于实现 device 和 driver 适配的一种组织形式。

所以驱动中总线的概念,和实体总线,不同类不要比较,这也是笔者不建议把这两类东西放一起比较的原因。

Linux 驱动中的《iic总线》,和硬件电路板中的《iic总线》,不是一个东西,不是一个概念,仅仅名字相同而已。





分享到:
回复

使用道具 举报

回答|共 2 个

倒序浏览

沙发

eefocus_3755449

发表于 2021-7-28 11:02:08 | 只看该作者

牛B!!一篇水贴,十句话有8句是错的,剩下两句还是歪理~
回复 支持 反对

使用道具 举报

板凳

robe.zhang

发表于 2021-7-29 20:51:32 | 只看该作者

eefocus_3755449 发表于 2021-7-28 11:02
牛B!!一篇水贴,十句话有8句是错的,剩下两句还是歪理~

你好,差距太大就看不懂了,好好学习吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条