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
对应着的