RDK S100接入GMSL摄像头的驱动开发流程?

根据您提供的信息和搜索结果,以下是关于在 RDK S100 上接入 GMSL 摄像头(集成 MAX96705 解串器)的驱动开发流程指导:


1. ar0820std 驱动框架是否完整?

答:
ar0820std 是一个示例驱动框架,用于演示如何适配基于 AR0820 传感器的摄像头。它并非完整的通用驱动,而是作为参考模板。对于您的 MAX96705 解串器 + 红外摄像头模组,需要做以下适配:

  • 硬件差异:MAX96705 是 GMSL 解串器,负责将高速串行数据转换为并行数据(如 MIPI 或 LVDS),而 ar0820std 是直接连接到 MIPI 接口的传感器驱动。
  • 因此,您不能直接使用 ar0820std,而应基于该框架进行扩展或重构,以支持解串器接口。
  • 关键点
    • 需要实现与 MAX96705 的通信(I2C 控制寄存器、状态读取等)。
    • 需要配置解串器的初始化参数(如通道选择、时钟源、输出格式等)。
    • 需要适配底层数据传输协议(如通过 DMA 或 V4L2 缓冲区接收数据)。

2. 需要修改哪些配置文件?

(1) 设备树 (DTS) 修改

根据官方文档《Camera点亮》章节,您需要修改设备树文件,主要涉及:

  • drobot-s100-pinctrl.dtsi
    确保 GPIO 引脚已正确配置为 gpio 模式,用于控制解串器的使能、复位、中断等信号。

  • vcon 节点配置(对应 RX 端口)
    vcon 节点中配置:

    • bus:I2C 总线编号(例如 I2C2 对应 RX0)
    • gpio_poc / gpio_des:解串器的电源控制和数据使能引脚
    • rx_phy:物理通道映射(如 2 0 表示使用 I2C2 和 RX0)
    • lpwm_chn:如果使用 PWM 控制,需配置对应的通道

    示例配置片段:

    &vin_vcon0 {
        bus = <2>;          // I2C2
        gpio_poc = <0>;     // 解串器 POC 控制引脚
        gpio_des = <0>;     // 解串器 DES 控制引脚
        sensor_err = <0>;
        lpwm_chn = <0 1 2 3>;
        rx_phy = <2 0>;     // 使用 I2C2 和 RX0
    };
    
  • 添加 MAX96705 的 I2C 地址配置
    在设备树中定义解串器的 I2C 地址(如 0x29),并在驱动中通过 I2C 读写寄存器进行初始化。

(2) 驱动代码修改

  • 创建新的驱动模块,继承或参考 ar0820std 的结构。

  • 实现以下功能:

    • 初始化 MAX96705 解串器(通过 I2C 写入寄存器)
    • 配置输出格式(如分辨率、像素格式、帧率)
    • 设置数据通道(如通道 0/1/2/3)
    • 处理中断或状态信号(如 INT 引脚)
  • 推荐路径
    drivers/media/i2c/ 下创建新文件,如 max96705.c,并注册为 V4L2 驱动。

(3) 系统配置文件

  • 修改 camera_config.h 或类似配置文件,添加新传感器的识别码和默认参数。
  • 如果系统有预设的 camera 配置表(如 sensor_list),需添加您的摄像头型号。

3. 测试例程推荐

(1) 基础测试:I2C 通信验证

  • 使用 i2cdetect 工具检测 MAX96705 的 I2C 地址是否被正确识别。

    i2cdetect -y 2
    

    如果看到 29 地址,则说明 I2C 通信正常。

  • 使用 i2cget 读取寄存器值,确认解串器状态:

    i2cget -y 2 0x29 0x00
    

(2) 驱动加载与调试

  • 编译并加载您的驱动模块:

    insmod max96705.ko
    dmesg | grep max96705
    
  • 查看内核日志,确认驱动是否成功初始化。

(3) 视频采集测试

  • 使用 v4l2-ctl 工具检查摄像头设备:

    v4l2-ctl --list-devices
    v4l2-ctl --device=/dev/video0 --all
    
  • 使用 ffplaygst-launch-1.0 进行视频流播放测试:

    gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! autovideosink
    
  • 如果视频流正常显示,说明驱动已成功移植。


4. 官方文档补充建议

虽然官方文档《Camera点亮》提到 ar0820std,但实际开发中建议结合以下资源:


总结

项目 建议
驱动框架 不直接使用 ar0820std,需基于其结构扩展,支持 GMSL 解串器
关键配置 设备树 (dts) 中配置 GPIO、I2C、RX 通道;驱动中实现 I2C 初始化和数据传输
测试方法 先验证 I2C 通信 → 加载驱动 → 使用 v4l2-ctlgst-launch 测试视频流
文档参考 官方《Camera点亮》+ MAX96705 数据手册 + 社区案例

如果您需要具体的驱动代码模板或设备树配置示例,可以进一步提供您的硬件连接图或传感器规格,我可以帮您生成定制化方案!

祝您开发顺利! :rocket: