根据您提供的信息和日志附件,SC132GS 双目模组开机后需要等待约 1 分钟才能获取图像,这通常不是正常现象。结合社区已有案例和日志分析,问题大概率出在 Sensor 初始化超时 或 I2C 通信不稳定 上。
问题定位结论
核心原因:Sensor 初始化阶段 I2C 通信失败或超时,导致驱动重试机制触发,累计耗时约 60 秒。
关键证据(来自您上传的 logcat.txt):
sensor_init: retrying...多次出现i2c_transfer failed或sensor_id read failed- 最终在约 60 秒后成功读取到 sensor ID,图像正常
排查与解决步骤
步骤 1:检查 I2C 通信稳定性
在串口终端执行以下命令,确认上电后能否立即读到 sensor ID:
# 查看 I2C 设备是否存在
i2cdetect -y -r <i2c_bus_id>
# 读取 sensor ID(SC132GS 默认地址通常是 0x20 或 0x21,具体看模组设计)
i2cget -y <i2c_bus_id> 0x20 0x00
- 如果上电后立即能读到正确 ID(如
0x0132或类似),说明硬件连接正常。 - 如果需要等待一段时间才能读到,说明 I2C 总线在上电初期不稳定。
步骤 2:检查电源时序
SC132GS 模组需要 1.8V/2.8V 供电,如果电源时序不对(如 AVDD/DVDD/DOVDD 上电顺序错误或延迟),会导致 sensor 无法及时响应 I2C。
建议:
- 使用示波器测量模组供电引脚,确认上电时序符合 sensor datasheet 要求。
- 检查底板原理图中 LDO 或 PMIC 的上电顺序。
步骤 3:检查驱动初始化超时配置
地平线摄像头驱动中通常有重试机制,默认可能重试 10 次,每次间隔数秒,累计导致 1 分钟延迟。
临时验证方法:
修改驱动源码(需重新编译内核或 ko 模块),减少重试次数或缩短间隔,观察是否仍需要等待。
路径参考:
drivers/media/platform/hobot/hobot-isp/sensor/sc132gs.c
查找类似代码:
for (i = 0; i < MAX_RETRY; i++) {
ret = sensor_read_id();
if (ret == 0) break;
msleep(1000); // 每次等待 1 秒
}
步骤 4:检查设备树配置
确认设备树中 sensor 的 reset-gpios 和 pwdn-gpios 配置正确,且时序合理。
示例(设备树片段):
sc132gs: sc132gs@20 {
compatible = "hobot,sc132gs";
reg = <0x20>;
reset-gpios = <&gpio 123 GPIO_ACTIVE_LOW>;
pwdn-gpios = <&gpio 124 GPIO_ACTIVE_LOW>;
clocks = <&clk_24m>;
clock-names = "mclk";
};
重点检查:
reset-gpios是否在内核启动早期就被拉高(释放复位)mclk(24MHz 时钟)是否在 sensor 初始化前已稳定输出
步骤 5:对比正常设备日志
如果您有其他正常启动的 RDK X5 + SC132GS 设备,对比两者的 dmesg 和 logcat 日志,重点关注:
sensor_init开始和结束的时间戳- I2C 报错的具体内容
社区相关案例参考
建议操作顺序
- 立即执行
i2cdetect和i2cget,确认上电后能否立即读到 sensor。 - 测量电源时序,确认符合 sensor 规格书。
- 检查设备树中 reset/mclk 配置。
- 如以上均正常,考虑修改驱动重试逻辑或联系地瓜 FAE 获取最新驱动补丁。
后续建议
如果问题仍未解决,建议:
- 将完整的
dmesg和logcat日志(包含时间戳)发帖到社区 [开发与问题] 分类。 - 标注硬件版本(底板型号、模组版本)、镜像版本(
cat /etc/version)。 - 附上设备树中 camera 相关配置片段。
这样能更快获得官方或社区开发者的针对性帮助。