linux IIC子系统分析(二)—— linux 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子系统的注册顺序分析。

猜你喜欢

转载自blog.csdn.net/li_wen01/article/details/51657040
今日推荐