title: I2C(一)框架
date: 2019/1/28 17:58:42
toc: true
I2C(一)框架
引入
我们首先从硬件连接的角度来抽象一下

整体框架
整体分为以下几个部分:
- core描述总线,提供统一管理
adapt,I2c_linet,i2c_driver的接口,提供统一传输接口i2c_transfer,i2c_master_send,i2c_master_recv,具体的硬件操作由adapt提供 adapt描述I2c控制器,具体的时序控制i2c_clinet描述外设地址信息等,i2c_driver描述外设具体的控制逻辑,具体设备驱动i2c_dev这是一个不指定具体设备地址的字符设备驱动程序,提供app直接控制总线时序,主设备号都为89,次设备号为适配器编号

数据结构
linux使用I2C 总线平台来管理,所谓总线,也和我们以前的platform总线一样,左边是dev,右边是driver,这里左侧挂接了适配器dev和clinet.dev,通过dev.type可以区分

总线框架都会有一个匹配后probe的过程,linux2.6和linux3.4的match并不相同,具体以后分析代码可以看下.
文件结构

流程简述
- 将适配器加入链表
- 将
clinet加入链表 - 将
driver驱动加入链表 - 一个
adapt上有若干个clinet依附,一个clinet会有一个i2C_driver对应着的