本文共 1125 字,大约阅读时间需要 3 分钟。
linux 对 i2c 做了很多工作,使得 硬件信息和驱动分离,i2c控制器和i2c设备分离. 硬件信息 // 存在于设备树中 1.i2c控制器 硬件信息 2.i2c设备 硬件信息 驱动 1.i2c控制器 驱动 drivers/i2c/buses中 2.i2c设备 驱动 driver/xxx 中
I2C 框架 1. I2C 外设 1. dts // i2c device 的注册 2. 驱动 1. 代码位置 可以在driver下的任何位置 2. I2C core 1. 对上对下提供接口 1. 对上 i2c_add_driver , i2c_transfer i2c_master_send i2c_master_recv 3. 对下 i2c_register_adapter 2. 代码位置 drivers/i2c i2c-boardinfo.c i2c-core.c i2c-dev.c i2c-mux.c 3. I2C 控制器 1. GPIO模拟I2C 2. I2C 控制器 1. dts // i2c 控制器 device 的注册 , // platform 设备 2. 驱动 1. of_i2c_register_devices 3. 代码位置 drivers/i2c/busses/i2c-xxx.c
linux i2c 是基于 总线设备驱动模型的. i2c adapter(i2c控制器)是 platfrom设备 i2c adapter 的驱动 是 platform 驱动 i2c device(i2c设备)是 i2c设备 i2c device 的驱动 是 i2c驱动 一般系统中会有一个i2c adapter ,还有很多 i2c device 这些东西会匹配 i2c adapter (i2c控制器) 和i2c adapter的驱动 会开始匹配,组成i2c adapter 的ops(带硬件信息)(A) i2c device 和 i2c device 驱动匹配,组成 i2c device 的ops(带硬件信息)(B) 然后 A 和 B 匹配,形成 利用 i2c adapter 来操作 i2c device 的ops (带硬件信息)
转载地址:http://naigi.baihongyu.com/