GS130W (GC130W) MIPI 摄像头在 RDK X5 上的连接与驱动适配

关键发现:I2C 正常,但 MIPI 驱动缺失

从你的扫描结果确认:

总线 检测结果 含义
i2c-4 :white_check_mark: 0x33, 0x50 传感器 + EEPROM
i2c-6 :white_check_mark: 0x32 副传感器(双目)
i2c-5/7 :cross_mark: 无相关设备 -

结论: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 了解引脚定义、电压要求 :white_check_mark:
I2C 寄存器初始化序列 配置 sensor 工作模式 :white_check_mark:
MIPI 时序参数 Lane 数、数据速率、分辨率 :white_check_mark:
时钟要求 MCLK 频率(通常 24MHz) :white_check_mark:

参考 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/ 目录

:warning: 注意:根据社区回复,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 的参考配置或效果库,这比自行适配效率高很多。