关键发现:I2C 正常,但 MIPI 驱动缺失
从你的扫描结果确认:
| 总线 | 检测结果 | 含义 |
|---|---|---|
| i2c-4 | 0x33, 0x50 |
传感器 + EEPROM |
| i2c-6 | 0x32 |
副传感器(双目) |
| i2c-5/7 | - |
结论:I2C 通信完全正常,但系统没有 GC130W 的驱动配置,导致 MIPI 链路无法初始化。
问题根因
┌─────────────────────────────────────────┐
│ I2C 通 (0x32/33/50 能检测到) │
│ ↓ │
│ 设备树无 GC130W 的 CSI endpoint 配置 │
│ ↓ │
│ dmesg 显示 "No endpoint found for csi" │
│ ↓ │
│ /dev/video* 只有 vscam 虚拟设备 │
└─────────────────────────────────────────┘
GC130W 不在 RDK X5 官方支持列表中,需要自行适配驱动。
解决方案:自定义 Sensor 适配流程
步骤 1:准备 Sensor 配置资料
需要向格科微官方索取 GC130W 的以下资料:
| 资料 | 用途 | 必需 |
|---|---|---|
| Datasheet | 了解引脚定义、电压要求 | |
| I2C 寄存器初始化序列 | 配置 sensor 工作模式 | |
| MIPI 时序参数 | Lane 数、数据速率、分辨率 | |
| 时钟要求 | MCLK 频率(通常 24MHz) |
参考 GC4663 配置文件格式:
cat /opt/tros/humble/lib/mipi_cam/config/GC4663_calibration.yaml
步骤 2:添加 Sensor 配置到系统
# 1. 在配置目录创建 GC130W 的校准文件
cd /opt/tros/humble/lib/mipi_cam/config/
sudo cp GC4663_calibration.yaml gc130w_calibration.yaml
# 2. 编辑配置文件,修改 sensor 名称和参数
sudo nano gc130w_calibration.yaml
关键配置项参考:
sensor_name: "gc130w"
i2c_address: 0x33 # 根据实际检测结果
mipi_lane: 2 # GC130W 通常是 2 lane
resolution:
width: 1280
height: 1088
framerate: 30
mclk_hz: 24000000 # 24MHz
步骤 3:编译 sensorlib 动态库
根据社区案例,需要编译 sensor 效果库:
# 参考社区教程:https://forum.d-robotics.cc/t/topic/27758
# 1. 获取 hobot-camera 源码
git clone <hobot-camera 仓库>
# 2. 在 drivers 目录添加 GC130W 驱动文件
# 参考 GC4663 或 SC132GS 的驱动实现
# 3. 编译生成 .so 文件
# 放到 /usr/lib/sensorlib/ 目录
注意:根据社区回复,sensor 效果库(.so 文件)官方不直接提供,需要:
- 自行编译(需要 SDK 和交叉编译环境)
- 或联系地平线技术支持获取
步骤 4:修改设备树(可能需要 Root 权限)
如果 sensor 未注册到设备树,需要添加 CSI endpoint:
# 查看当前设备树中 CSI 节点
find /proc/device-tree -name "*csi*" 2>/dev/null
# 可能需要修改设备树源文件 (.dts)
# 添加类似配置:
&csi0 {
status = "okay";
port {
endpoint {
remote-endpoint = <&gc130w_ep>;
data-lanes = <1 2>;
};
};
};
供电确认(重要)
虽然 I2C 通了,但请确认相机模组供电是否完整:
# 查看 CSI 接口相关设备树节点
cat /proc/device-tree/soc/cam* 2>/dev/null | head -50
# 或用万用表测量 CSI 接口供电引脚
# GC130W 供电要求:
# - 3.3V (AVDD) - 模拟供电
# - 1.8V (DOVDD) - 数字供电
# - GND
如果相机需要独立供电但未连接,可能导致 MIPI 链路不稳定。
官方资源与技术支持
| 资源 | 链接/说明 |
|---|---|
| 多媒体开发指南 | 开发者文档 |
| 添加新 sensor 案例 | 社区帖子 |
| 效果库生成说明 | S100 sensor 效果库 |
| 地平线技术支持 | 提供 dmesg、i2cdetect 输出和系统版本 |
建议操作顺序
1. 联系格科微获取 GC130W Datasheet 和寄存器配置
↓
2. 参考 GC4663 配置文件格式创建 gc130w_calibration.yaml
↓
3. 联系地平线技术支持询问是否有 GC130W 参考配置或效果库
↓
4. 如需自行编译,参考社区教程编译 sensorlib
↓
5. 测试:ros2 launch mipi_cam mipi_cam.launch.py
需要补充的信息
如果联系技术支持,请提供:
# 系统版本
cat /etc/version
# 完整 dmesg 输出(前 200 行)
dmesg | head -200
# I2C 检测结果(你已提供)
i2cdetect -r -y 4
i2cdetect -r -y 6
# 相机模组照片
# 显示 CSI 接口连接和排线方向
总结:I2C 正常说明硬件连接基本没问题,核心是 GC130W 不在官方支持列表,需要驱动适配。建议先联系地平线技术支持询问是否有 GC130W 的参考配置或效果库,这比自行适配效率高很多。