linux IIC子系统分析(二)—— linux i2c 架构概述
I2C总线因为它及简单的硬件连接和通讯方式,在现在的很多设备上它是一种不可或缺的通讯总线。如果用当单片机直接操作I2C,其实很简单,只要正确把握IIC的操作时序就可以了。但是在linux系统中,I2C子系统结构是比较复杂的,因为它涉及到很多linux内核相关的知识,理解起来十分费劲。(一)I2C架构概述Linux 的I2C体系架构分为3个组成部分:(1)I2C核心:I2C核心提供了I2C总线驱动和
I2C总线因为它及简单的硬件连接和通讯方式,在现在的很多设备上它是一种不可或缺的通讯总线。如果用当单片机直接操作I2C,其实很简单,只要正确把握IIC的操作时序就可以了。但是在linux系统中,I2C子系统结构是比较复杂的,因为它涉及到很多linux内核相关的知识,理解起来十分费劲。
(一)I2C架构概述
Linux 的I2C体系架构分为3个组成部分:
(1)I2C核心:I2C核心提供了I2C总线驱动和总线设备注册,注销,通信方法。还提供了与适配器无关的代码以及探测代码等。
(2)I2C总线驱动:I2C总线驱动是对I2C硬件体系结构中适配器驱动的实现。(IIC使用的是平台设备驱动模型)
(3)I2C设备驱动:I2C设备驱动是对设备端的实现(客户驱动),比如EEPROM设备。
(二)linux中I2C驱动架构图
Hardware 是我们的硬件设备,调试设备的时候我们经常在这用示波器来跟踪I2C通讯波形。
根据I2C架构概述的介绍,可以知道:
I2C核心:I2C核心层
I2C总线驱动(platform bus):硬件实现控制层,访问抽象层
I2C设备驱动(device driver):driver层
注意:在我们linux I2C子系统中,有使用到平台设备驱动机制。使用平台设备驱动的主要目是:将硬件/平台相关的东西分离出来,以提高程序的可移植性。
接下来按照linux i2c子系统的注册顺序进一步分析I2C子系统架构,总共分为下面几篇文章
《 linux IIC子系统分析(一)——AT24C02 芯片简介》
《linux IIC子系统分析(三)——I2c子系统初始化顺序分析》
《 linux IIC子系统分析(四)——I2c bus初始化》
《linux IIC子系统分析(五)——I2C plaform device 初始化》
《linux IIC子系统分析(六)——I2c plaform driver 初始化》
《 linux IIC子系统分析(七)——实例分析通过i2c-dev操作I2C设备》
《 linux IIC子系统分析(八)——实例分析通过sysfs访问I2c设备》
《linux IIC子系统分析(九)——实例分析通过设备节点访问I2c设备》
(三)(四)(五)(六)介绍I2C总线驱动
(七)(八)(九)实例介绍三种不同的方式驱动i2C 设备
说明:
1.分析的内核版本是linux2.6.32.2
2.开发板为友善之臂的mini2440, 用的是ARM9(S3C2440A)处理器
3.链接的IIC设备是EEPROM(AT24C02)
4.按照内核I2C子系统的注册顺序分析。
---------------------------------------2022.08.20:21:19更新----------------------------------------
由于各种原因,后续文章内容将更新到公众号,本平台将不再做更新。
CSDN上相关文章的测试工程代码,也统一放到了公众号上,可以免费免积分下载
可以通过主页上的二维码,也可以通过搜索微信公众号 liwen01 进入公众号
liwen01 2022.08.20
---------------------------------------2022.08.20:21:19更新----------------------------------------
更多推荐
所有评论(0)