首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
linux内核中i2c子系统框架
📅 2026/11/2 19:04:35
✍️ 爱科研究院
👁 阅读 3,247
目录前言内核框架1)重要的数据结构2)框架部分总结前言我们都知道Linux作为应用最为广泛的操作系统之一它源码开放可修改开放性高丰富的硬件生态适配性和可移植性强等等有点。关于硬件的可移植性离不开Linux中丰富的子系统框架但是为啥相同的内核代码可以适配不同的硬件呢今天我们就以i2c子系统为例来唠唠这个事儿。内核框架1)重要的数据结构i2c子系统框架可以分为三层核心层i2c-core控制器层adapteralgorithm还有驱动层driverclient其中核心层是统一抽象层为特异性硬件提供统一的接口和统一管理控制器层则是直接控制硬件i2c控制器的层次它根据芯片上的i2c控制器的各种差异而不同驱动则是需要驱动工程师编写适配一定i2c从设备的业务代码。它们各有一个结构体来描述(1)i2c_adapter它就是总线控制器一个i2c控制器例如一个芯片的i2c1i2c2就是由两个adapter描述的它的存在主要是描述硬件信息和用来提供时序实现底层写寄存器的工作(2)i2c_algorithm它是i2c控制器的一个成员具体的算法是在里面实现例如寄存器读写初始化硬件提供时序等等。(3)i2c_client它代表一个总线上挂的从设备(4)i2c_driver代表从设备驱动写业务代码(5)i2c_msg它比较特殊代表i2c传输数据最小数据单元它描述要写的地址方向数据长度还有要读写的缓冲区也就是一段START地址数据2)框架部分只说数据结构无法将它们与我们之前学习的驱动总线设备模型联系起来很突兀的感觉这时候就需要研究研究。(具体函数实现需要看内核源码有兴趣可自行去网上搜集本例是来自rk3x的控制器源码)(1)i2c_rk3x_probe这个函数里填充了i2c_adapter的各种参数完成对i2c控制器的注册(2)of_i2c_register_devices这里面遍历设备树节点主要目标是把设备树信息读取出来把总线上的设备变成client从设备它重要的是循环中一个函数of_i2c_register_device它其实是下面两个函数的封装我们下面再讲。(3)of_i2c_get_board_info顾名思义就是获取设备树信息的它获取的是reg和compatible信息(4)i2c_new_device根据adapter和上面获得的info俩参数来创建client也就是从设备其实到这里我们就已经比较明白了这个就是我们驱动匹配的总线设备信息我们写的i2cdriver就是匹配这些创建的client至于后面iio等更上层的封装我们以后再细说总结总之呢这就是Linux的魅力也是难点所在一大堆结构体嵌套函数从这个文件跳到另一个文件内核极其庞大想要全部通读内核是不现实的我们要有框架性思维选择性的阅读内核代码了解具体一个简单工作从上层到底层的工作流程这样学习是真实有效的。
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/11/2 19:04:35
P1481 魔族密码
2026/11/2 19:04:35
寒地窄带通信工程实践:黑龙江哈尔滨对讲机选型、组网与合规运维总结
2026/11/2 19:04:35
把统计表和图里的结果用一句话写清楚:可直接套用的“结果段三步法”与图注模板
2026/11/2 21:57:41
Java gRPC 实战:从 proto 设计到流式调用完整指南
2026/11/2 21:57:41
分位数随机森林(QRF)原理与实践:从概率预测到工业应用
2026/11/2 21:57:41
PyMe工具:一键打包AI生成Python代码为可执行文件
2026/11/2 21:57:41
遥感卫星参数不是查表清单:重访周期、幅宽与产品分级的工程约束
2026/11/2 21:57:41
读者-写者问题的进程同步实验与实现方案
2026/11/2 21:52:40
OpenClaw小龙虾高效处理技术解析
2026/11/2 1:03:35
工业SPI隔离方案:K64主控+MAX14431从设计到排查
2026/11/2 1:03:35
SPI隔离器MAX14431与PIC18F8722实现工业级稳定通信的实战指南
2026/11/2 1:03:35
雷达信号调制技术解析:从LFM到相位连续调频波形设计
2026/11/2 2:42:45
面向复杂光照与角度的宠物面部识别鲁棒性增强策略
2026/11/2 2:42:47
DRV8818PWPR与R7FA8M1AHECBD工业步进驱动实战指南
2026/11/2 2:42:50
STM32与DRV8818双极步进电机驱动方案:从选型到调试全流程解析
2026/11/2 2:42:45
面向复杂光照与角度的宠物面部识别鲁棒性增强策略
2026/11/2 2:42:47
DRV8818PWPR与R7FA8M1AHECBD工业步进驱动实战指南
2026/11/2 2:42:50
STM32与DRV8818双极步进电机驱动方案:从选型到调试全流程解析