换了微雪的ov5647,怎么用上60fps

我来帮你分析这个问题。从日志看,系统识别到了 OV5647 的 60fps 配置,但 pipeline 初始化失败了。

先搜索一下社区中相关的解决方案:

问题定位

从你的日志和设备树信息来看,问题已经很明确了:

核心结论

OV5647 能被识别(Found sensor name:ov5647-640x480-60fps on mipi rx csi 0),但 ISP/VSE 流水线初始化失败(hbn_vnode_set_attr failed, ret(-10)),这是典型的设备树缺少 cam_mclk(摄像头主时钟)配置问题。


关键证据

从你的设备树输出来看:

  • :white_check_mark: vcon@0、vcon@2 有 gpio_oth、lpwm_chn、pinctrl-0 配置
  • :cross_mark: 但没有看到任何 mclk 或 clock 相关的摄像头时钟配置
  • :white_check_mark: CSI 节点有时钟配置(csi@3d070000/clocks),但这是 CSI Host 自身的时钟,不是给传感器的 mclk

对比社区已解决的案例(topic/35411),正常工作的设备树应该有类似:

/proc/device-tree/soc/cam/vcon@0/cam_mclk = <...>

解决方案

方案 A:联系官方获取 dtbo 补丁(推荐)

这个问题不是你能通过软件配置解决的,需要官方提供设备树覆盖补丁。请:

  1. 准备以下信息:

    # 1. 系统版本
    uname -a
    cat /etc/issue
    
    # 2. 板卡型号(查看 PCB 丝印或购买记录)
    # RDK X5 V1.0 还是 V2.0?
    
    # 3. 摄像头购买渠道
    # 是否官方配件列表中的 OV5647?购买链接?
    
    # 4. 完整 dmesg 日志
    dmesg | grep -E "csi|mipi|mclk|vin|isp|vse|ov5647" > ~/dmesg_full.log
    
  2. 在社区发帖或联系官方支持:

  3. 官方会提供 dtbo 补丁,使用方法类似:

    # 假设官方提供 ov5647_mclk.dtbo
    sudo cp ov5647_mclk.dtbo /boot/overlays/
    echo "dtoverlay=ov5647_mclk" | sudo tee -a /boot/firmware/config.txt
    sudo reboot
    

方案 B:临时验证 30fps 模式

先确认硬件连接是否正常,排除 60fps 带宽问题:

cd /app/cdev_demo/vio2display
sudo ./vio2display -w 1280 -h 960 2>&1 | grep -E "Found|ERROR|Frame|fps"
  • 如果 30fps 能工作 → 说明是 60fps 模式的时钟/带宽配置问题
  • 如果 30fps 也报 -10 → 确认是 mclk 缺失问题

方案 C:尝试其他 MIPI 接口

如果你的板子有多个 MIPI 接口,可以尝试换到 mipi_host1 或 mipi_host2:

从你的日志看,摄像头当前在 csi 0(mipi_host0),但设备树显示 vcon@0 和 vcon@2 都有 pinctrl 配置。可以尝试:

# 修改 vio2display 源码或使用参数指定 pipe
# 通常需要修改 srcampy.Camera().open_cam(pipe_id, ...)

补充说明

  1. 为什么 I2C 能读到但 mclk 缺失?

    • RDK X5 的 MIPI CSI 不走标准 V4L2 路径,I2C 探测成功只说明物理连接正常
    • cam_mclk 是专门给传感器提供工作时钟的,缺失会导致 ISP/VSE 无法初始化
  2. OV5647 60fps 的特殊性

    • 640x480@60fps 需要更高的 MIPI 带宽和时钟频率
    • 如果 mclk 配置不正确,高帧率模式会优先失败
  3. 社区已有先例

    • topic/35411:imx219 报相同错误,官方提供 dtbo 补丁解决
    • topic/35527:RDK X5 的 MIPI CSI 配置特殊性说明

下一步行动

  1. 先测试 30fps 模式,确认是否只是 60fps 有问题
  2. 在社区原帖或新帖中补充信息,联系官方获取 dtbo 补丁
  3. 不要自行修改设备树,RDK X5 的设备树编译需要专门的工具和签名

这个问题不是你的操作问题,是板级 BSP 配置缺失,需要官方支持。