1.常见通信方式
2.I2C总线
2.1 I2C总线硬件连接
2.2 I2C软件架构
2.3 I2C子系统实现流程
(1)i2c adapter创建i2c client;
(2)i2c adapter中的i2c client与i2c driver通过i2c core完成注册匹配;
(3)i2c driver传递上层应用的数据至i2c client;
(4)i2c client通过i2c adapter找到对应的i2c algorithm,并传送数据;
(5)i2c控制器产生SCL和SDA。
3. I2C设备树实现
其中节点i2c_4表示采用的是第4组i2c控制器(每组控制器有SCL和SDA),采用了两组i2c控制器:i2c_4和 i2c_5,其中i2c_4的地址为78b8000,i2c_5的地址为78b9000。
i2c_4表示适配器节点,其地址为0x78b8000(在mdm9607芯片上),wcd9xxx_codec表示具体设备(也是一个芯片)节点,其地址是0x0d(在设备芯片上)。
3.1 查看设备节点
1)在/sys/firmware/devicetree/base(快捷目录/proc/device-tree)目录下:是以目录结构呈现的dtb文件。 根节点对应base目录, 每一个节点对应一个目录, 每一个属性对应一个文件;
2)在/sys/devices/platform目录下:展现的是现在的所有注册的的平台设备。如果设备下面有of_node,就证明这个platform_device是通过设备树传参来创建的;若是没有of_node的一个链接文件,那么它就不是通过设备树文件创建的,可能是内核编译的时候创建或者通过安装模块创建。
3.2 例子
(1)所有设备树在/proc/device-tree目录下,而i2c挂接在soc下,故在/proc/device-tree /soc下可看到节点名字:
通过cat compatible可查看设备名称属性: