RDK X5 I2C 相关驱动 / 库完整分类说明

先划核心结论: RDK X5系统镜像预装没有开箱即用、通用 Python 专用 I2C 芯片上层驱动库(无内置 OLED、温感、EEPROM 封装库);仅分三大类 I2C 相关驱动:

  1. 底层通用总线驱动(i2c-hobot 内核驱动 + Python i2cdev 裸接口)(所有 I2C 设备通用,只收发原始 RAW 字节,无芯片专用逻辑)
  2. 内核内置专用 I2C 设备驱动(C 内核驱动,用户态无需 Python 封装,挂载后生成系统设备节点)
  3. 官方配套外设开源专用 I2C 驱动仓库(IMU、音频 Codec、摄像头 Sensor 等配套模组,需手动下载编译)

一、底层通用 I2C 总线驱动(所有 I2C 芯片共用,无设备专属逻辑)

1. 内核层:i2c-hobot 硬件控制器驱动

路径:drivers/i2c/busses/i2c-hobot.c地瓜 作用:控制 SoC 内部硬件 I2C 控制器,提供 /dev/i2c-0 ~ /dev/i2c-5 字符设备,标准 Linux i2c-dev 子系统。 能力:只完成 SCL/SCL 时序、START/STOP/ACK,不识别任何 I2C 外设寄存器、协议

2. 用户态 Python 通用裸接口库:i2cdev(地平线自研)

python

运行

from i2cdev import I2C

仅提供 2 个 RAW 底层接口:

  • write(data):单 / 多字节原始发送
  • read(length):读取指定长度原始字节 定位:总线通用读写原语,不属于任何芯片专用驱动,之前的测试代码全部基于此库,需要开发者自己封装寄存器读写、芯片初始化逻辑CSDN博...。

二、内核预装、原生支持的专用 I2C 设备驱动(C 内核驱动,无需 Python 库)

这类驱动编译进内核,设备树配置挂载后自动生成系统节点,应用层可通过标准文件 IO/IOCTL 访问,无配套 Python 封装

1. 存储类 I2C

  • AT24 系列 EEPROM(at24c02/at24c64/at24c256):at24.c,设备树挂载后 /sys/bus/i2c/devices/xxx/eeprom 直接读写存储CSDN博...
  • DS1307/DS3231 RTC 实时时钟:内核 rtc 驱动,读取系统时间,I2C 地址 0x68

2. 电容触控 I2C 芯片

  • FT5x06(FT5406)电容触控屏驱动:I2C 地址 0x38,DSI 触摸屏配套,输入子系统上报触摸坐标

3. MIPI 摄像头 Sensor(I2C 寄存器配置通道)

内核内置 I2C 图像传感器驱动,通过 I2C 总线配置 Sensor 寄存器:

  • OV5647、IMX219、IMX477、GC0308 驱动文件:ov5647.ko、对应 imx 系列内核模块,I2C 仅做寄存器配置,图像数据流走 MIPI 而非 I2C

4. 音频 Codec(I2S 音频,I2C 做寄存器配置)

  • ES8326(板载自带 Codec,开箱即用)
  • ES7210、ES8156(微雪 Audio HAT 配套) ES8311 内核支持,但无预设设备树配置,需手动修改 DTS 启用

5. 通用 ADC / 温感内核基础框架

支持 SMBus 标准 I2C 传感器(TMP102、ADS1115),依赖 Linux hwmon 子系统,需自行编写设备树挂载。

三、官方开源配套外设专用 I2C 驱动库(机器人配套模组,需手动下载编译)

地平线 Github 提供配套外设专用驱动仓库,全部基于底层i2c-dev封装完整芯片逻辑(寄存器初始化、数据换算、姿态解算等),属于真正的芯片专用 I2C 驱动

1. rdk_imu IMU 惯性传感器库(最常用)

仓库:https://github.com/D-Robotics/rdk_imu 支持芯片:

  • BMI088(6 轴 IMU,官方配套 IMU 模组默认 I2C 接口)
  • MPU9250 九轴陀螺仪加速度计 特性:
  • 完整封装 I2C 寄存器读写、量程配置、采样率设置
  • 内置姿态解算、校准工具(imu_calibrate.py
  • 提供 C 库与 Python 绑定,开箱读取加速度、角速度、欧拉角

2. rdk_x5_driver 综合外设驱动仓库

包含 MCP2515(I2C 配置 CAN 控制器)、各类电机驱动配套 I2C IO 扩展芯片封装,机器人底盘配套使用

四、第三方通用 I2C Python 库(社区可用,系统不预装,pip 自行安装)

RDK X5 Ubuntu 系统可手动安装通用嵌入式 I2C 器件库,不属于地平线官方原生驱动:

  1. adafruit-blinka + Adafruit 系列传感器库(OLED SSD1306、TMP102、ADS1115、PCF8574 IO 扩展)
  2. smbus2:Linux 标准 SMBus 封装,替代 i2cdev 实现寄存器读写
  3. minimalmodbus:I2C 转 Modbus 传感器配套

五、关键区分:总线通用 i2cdev vs 专用芯片驱动对照表

表格

类别 i2cdev 通用总线库 rdk_imu/BMI088 专用驱动 内核 at24 EEPROM 驱动
归属 地平线预装 Python 底层库 官方开源,手动下载编译 内核内置 C 驱动
I2C 能力 仅原始单字节 RAW 收发 封装寄存器读写、初始化、数据换算 直接文件读写存储
是否芯片专用 ❌ 通用,无任何芯片逻辑 ✅ 绑定 BMI088/MPU9250 ✅ 仅适配 AT24 系列
业务能力 无,需用户手动组合时序 直接输出姿态、加速度物理值 直接读写存储字节
适用场景 自定义开发、非标 I2C 芯片 官方配套 IMU 模组快速开发 板载 EEPROM 存储

六、总结回答两个核心问题

1. RDK X5 有哪些专用 I2C 芯片 / 设备驱动程序库

  1. 官方开源专用库(手动部署):rdk_imu(BMI088、MPU9250 IMU)、rdk_x5_driver(MCP2515 等);
  2. 内核预装专用 C 驱动(无 Python 封装):AT24 EEPROM、DS1307 RTC、FT5406 触控、OV5647/IMX 摄像头 Sensor、ES8326 音频 Codec;
  3. 无系统预装的通用 Python 专用库(SSD1306、温感、ADC 等都需要第三方 pip 安装或自行封装)。

2. RDK X5 专用 I2C 总线驱动库?

唯一官方预装总线层库:Python i2cdev,底层内核配套i2c-hobot控制器驱动;它是通用总线接口,不属于任何一款 I2C 芯片的专用驱动

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐