因为IIC设备种类丰富,如果为每一一个 IIC设备写一个驱动程序,那么Linux内核中关于IIC设备的驱动将非常庞大。这种设计方式不符合软件工程中的代码复用规则,所以需要对IIC设备驱动中的代码进行层次化组织。
实现分层后,多个设备(client)可以共用一个驱动(driver),多个驱动可以共用一个适配器(adapter)
——————————————————————————————————————————————————
概述
——————————————————————————————————————————————————
这里简单地将IIC设备驱动的层次分为设备层、总线层。理解这两个层次的重点是理解4个数据结构,这4个数据结构是
- i2c_ driver:IIC设备驱动
- i2c_ client:IIC设备
- i2c_ algorithm:适配器驱动程序,描述了适配器和设备之间通信的方法
- i2c_ adapter:适配器,完成IIC总线控制器相关的通信
i2c_ driver、 2c_ client 属于设备层; i2c_ algorithm、 i2c_ adapter 属于总线层。如图所示。
- 设备层关系到实际的IIC设备,如芯片AT24C08就是一个IIC设备。
- 总线层包括CPU中的IIC总线控制器和控制总线通信的方法