当前位置: 首页 > news >正文

RV1126 imx335 sensor调试

根据media-ctl -p -d /dev/media0`输出:

[root@ATK-DLRV1126:/]# ls -l /tmp/test.nv12 -rw-r--r-- 1 root root 0 Jan 1 08:00 /tmp/test.nv12 [root@ATK-DLRV1126:/]# media-ctl -p -d /dev/media0 Media controller API version 4.19.111 ​ Media device information ------------------------ driver rkcif model rkcif_mipi_lvds serial bus info hw revision 0x0 driver version 4.19.111 ​ Device topology - entity 1: stream_cif_mipi_id0 (1 pad, 4 links) type Node subtype V4L flags 0 device node name /dev/video0 pad0: Sink <- "rockchip-mipi-csi2":1 [ENABLED] <- "rockchip-mipi-csi2":2 [] <- "rockchip-mipi-csi2":3 [] <- "rockchip-mipi-csi2":4 [] ​ - entity 5: stream_cif_mipi_id1 (1 pad, 4 links) type Node subtype V4L flags 0 device node name /dev/video1 pad0: Sink <- "rockchip-mipi-csi2":1 [] <- "rockchip-mipi-csi2":2 [ENABLED] <- "rockchip-mipi-csi2":3 [] <- "rockchip-mipi-csi2":4 [] ​ - entity 9: stream_cif_mipi_id2 (1 pad, 4 links) type Node subtype V4L flags 0 device node name /dev/video2 pad0: Sink <- "rockchip-mipi-csi2":1 [] <- "rockchip-mipi-csi2":2 [] <- "rockchip-mipi-csi2":3 [ENABLED] <- "rockchip-mipi-csi2":4 [] ​ - entity 13: stream_cif_mipi_id3 (1 pad, 4 links) type Node subtype V4L flags 0 device node name /dev/video3 pad0: Sink <- "rockchip-mipi-csi2":1 [] <- "rockchip-mipi-csi2":2 [] <- "rockchip-mipi-csi2":3 [] <- "rockchip-mipi-csi2":4 [ENABLED] ​ - entity 17: rockchip-mipi-csi2 (5 pads, 17 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev2 pad0: Sink [fmt:SRGGB10_1X10/2616x1964 field:none crop.bounds:(12,12)/2592x1944 crop:(12,12)/2592x1944] <- "rockchip-mipi-dphy-rx":1 [ENABLED] pad1: Source [fmt:SRGGB10_1X10/2616x1964 field:none crop.bounds:(12,12)/2592x1944 crop:(12,12)/2592x1944] -> "stream_cif_mipi_id0":0 [ENABLED] -> "stream_cif_mipi_id1":0 [] -> "stream_cif_mipi_id2":0 [] -> "stream_cif_mipi_id3":0 [] pad2: Source [fmt:SRGGB10_1X10/2616x1964 field:none crop.bounds:(12,12)/2592x1944 crop:(12,12)/2592x1944] -> "stream_cif_mipi_id0":0 [] -> "stream_cif_mipi_id1":0 [ENABLED] -> "stream_cif_mipi_id2":0 [] -> "stream_cif_mipi_id3":0 [] pad3: Source [fmt:SRGGB10_1X10/2616x1964 field:none crop.bounds:(12,12)/2592x1944 crop:(12,12)/2592x1944] -> "stream_cif_mipi_id0":0 [] -> "stream_cif_mipi_id1":0 [] -> "stream_cif_mipi_id2":0 [ENABLED] -> "stream_cif_mipi_id3":0 [] pad4: Source [fmt:SRGGB10_1X10/2616x1964 field:none crop.bounds:(12,12)/2592x1944 crop:(12,12)/2592x1944] -> "stream_cif_mipi_id0":0 [] -> "stream_cif_mipi_id1":0 [] -> "stream_cif_mipi_id2":0 [] -> "stream_cif_mipi_id3":0 [ENABLED] ​ - entity 23: rockchip-mipi-dphy-rx (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev3 pad0: Sink [fmt:SRGGB10_1X10/2616x1964@10000/300000 field:none crop.bounds:(12,12)/2592x1944] <- "m00_f_imx335 1-001a-1":0 [ENABLED] pad1: Source [fmt:SRGGB10_1X10/2616x1964@10000/300000 field:none crop.bounds:(12,12)/2592x1944] -> "rockchip-mipi-csi2":0 [ENABLED] ​ - entity 28: rkcif-mipi-luma (0 pad, 0 link) type Node subtype V4L flags 0 device node name /dev/video4 ​ - entity 31: m00_f_imx335 1-001a-1 (1 pad, 1 link) type V4L2 subdev subtype Sensor flags 0 device node name /dev/v4l-subdev4 pad0: Source [fmt:SRGGB10_1X10/2616x1964@10000/300000 field:none crop.bounds:(12,12)/2592x1944] -> "rockchip-mipi-dphy-rx":0 [ENABLED] ​

一、整体架构分析

media拓扑显示当前系统运行在CIF直出模式,ISP(Image Signal Processor)没有集成到当前media链路中。这解释了为什么video5无法输出数据——ISP pipeline没有正确连接。

二、各实体详细解析

1. sensor实体:m00_f_imx335 1-001a-1

- entity 31: m00_f_imx335 1-001a-1 (1 pad, 1 link) device node name /dev/v4l-subdev4 pad0: Source [fmt:SRGGB10_1X10/2616x1964@10000/300000 field:none crop.bounds:(12,12)/2592x1944] -> "rockchip-mipi-dphy-rx":0 [ENABLED]

内核代码位置drivers/media/i2c/imx335.c

  • 这是Sony IMX335 CMOS图像传感器驱动

  • 输出格式:SRGGB10_1X10(10-bit RAW Bayer数据)

  • 分辨率:2616x1964(实际有效区域2592x1944,左右各裁剪12像素)

  • 帧率:10000/300000 = 30fps(通过公式计算:10000/300000 = 1/30)

  • I2C地址:1-001a(表示I2C总线1,设备地址0x1a)

功能解析:将光信号转换为RAW Bayer数据,通过MIPI接口输出。

2. MIPI D-PHY实体:rockchip-mipi-dphy-rx

- entity 23: rockchip-mipi-dphy-rx (2 pads, 2 links) device node name /dev/v4l-subdev3 pad0: Sink [fmt:SRGGB10_1X10/2616x1964@10000/300000 field:none] <- "m00_f_imx335 1-001a-1":0 [ENABLED] pad1: Source [fmt:SRGGB10_1X10/2616x1964@10000/300000 field:none] -> "rockchip-mipi-csi2":0 [ENABLED]

内核代码位置drivers/phy/rockchip/phy-rockchip-mipi-rx.c

  • RV1126平台专用的MIPI D-PHY物理层驱动

功能解析

  • 处理MIPI信号的物理层,负责时钟恢复和数据对齐

  • 支持最高4-lane MIPI输入,每lane速率可达2.5Gbps

  • 作为sensor和CSI-2协议解析器之间的桥梁

3. MIPI CSI-2实体:rockchip-mipi-csi2

- entity 17: rockchip-mipi-csi2 (5 pads, 17 links) device node name /dev/v4l-subdev2 pad0: Sink [fmt:SRGGB10_1X10/2616x1964 field:none crop.bounds:(12,12)/2592x1944 crop:(12,12)/2592x1944] <- "rockchip-mipi-dphy-rx":1 [ENABLED] pad1-4: Source -> stream_cif_mipi_id0-3 (分别对应video0-3)

内核代码位置drivers/media/platform/rockchip/mipi-csi2/mipi-csi2.c

  • RV1126的MIPI CSI-2主机控制器驱动

功能解析

  • 解析MIPI协议,提取图像数据

  • 关键特性:支持将一路MIPI输入分发到4个虚拟通道(VC)

    • pad1 -> stream_cif_mipi_id0 (video0) [ENABLED]

    • pad2 -> stream_cif_mipi_id1 (video1) [ENABLED]

    • pad3 -> stream_cif_mipi_id2 (video2) [ENABLED]

    • pad4 -> stream_cif_mipi_id3 (video3) [ENABLED]

  • crop操作裁剪了边界像素(左右各12像素)

4. CIF流实体:stream_cif_mipi_id0-3

- entity 1: stream_cif_mipi_id0 (1 pad, 4 links) device node name /dev/video0 pad0: Sink <- "rockchip-mipi-csi2":1 [ENABLED] - entity 5: stream_cif_mipi_id1 device node name /dev/video1 pad0: Sink <- "rockchip-mipi-csi2":2 [ENABLED] ...

内核代码位置drivers/media/platform/rockchip/cif/

  • rkcif驱动是Rockchip Camera Interface的缩写

功能解析:根据rkcif驱动的版本历史:

  • v0.1.3:支持RV1126 vicap + mipi单通道

  • v0.1.4:支持vicap-full lvds接口

  • v0.1.7:支持dvp和mipi/lvds同时运行,添加subdev作为ISP接口

当前配置:4个video节点对应4个MIPI虚拟通道,但都配置为直接输出RAW数据,未经过ISP处理

5. 亮度统计实体:rkcif-mipi-luma

- entity 28: rkcif-mipi-luma (0 pad, 0 link) device node name /dev/video4

内核代码位置drivers/media/platform/rockchip/cif/cif_luma.c

功能解析

  • v0.1.3版本添加的luma设备节点

  • 提供图像的亮度统计信息,用于自动曝光(AE)和自动白平衡(AWB)算法

  • 注意:这是CIF驱动的辅助节点,不是ISP的输出

三、为什么ISP没有出现在media拓扑中?

从你的/sys/kernel/debug/pm_genpd/pm_genpd_summary输出看到:

/devices/platform/ffb50000.rkisp active

说明ISP硬件已上电,但结合media-ctl输出,可以推断:

  1. ISP驱动未注册到media0:RV1126通常有多个media设备

    # 查看所有media设备 ls /dev/media* # 可能有 media0 (rkcif), media1 (rkisp0), media2 (rkisp1) 等
  2. 参考搜索到的资料:正点原子RV1126开发板中,ISP相关实体通常注册在/dev/media1/dev/media2

  3. rkisp_mainpath节点存在:你的/dev/video5rkisp_mainpath,但它在另一个media设备中:

    # video5的Media Driver Info显示 Media Driver Info: Driver name : rkisp # 注意这里是rkisp,不是rkcif Model : rkisp0

四、解决方案——找到ISP的media设备

# 1. 列出所有media设备 ls -la /dev/media* ​ # 2. 查看每个media设备的拓扑 for m in /dev/media*; do echo "=== $m ===" media-ctl -p -d $m | head -20 done ​ # 3. 查找包含rkisp_mainpath的media设备 for m in /dev/media*; do echo "Checking $m..." media-ctl -p -d $m 2>/dev/null | grep -q "rkisp_mainpath" && echo "Found in $m" done

根据搜索结果,RV1126的典型配置是:

  • /dev/media0:rkcif驱动(你当前查看的)

  • /dev/media1:rkisp0(第一个ISP实例)

  • /dev/media2:rkisp1(第二个ISP实例)

  • /dev/media3:rkispp0(第一个ISPP实例)

  • /dev/media4:rkispp1(第二个ISPP实例)

五、正确的数据流向应该是

根据搜索结果,完整的ISP pipeline应该是:

sensor (imx335) → MIPI D-PHY → CSI-2 → ISP → ISPP → mainpath (video5) (v4l-subdev3) (v4l-subdev2) (rkisp) (rkispp) (/dev/video5)

当前状态:

sensor (imx335) → MIPI D-PHY → CSI-2 → CIF direct (video0-3) ↳ ISP (suspended) → ISPP → video5

六、结论

系统有两个独立的media pipeline:

  1. /dev/media0:CIF直出通道(当前查看的),提供RAW数据

  2. 其他media设备:ISP处理通道,提供处理后的图像

/dev/video5属于ISP通道,需要找到正确的media设备并配置链路才能工作。之前v4l2-ctl --stream-mmap失败是因为ISP链路未正确连接,而非设备不存在。

http://www.jsqmd.com/news/497989/

相关文章:

  • 三相风光储LCL并网直流微电网仿真系统探究
  • 防火墙做不到的事:一张图讲清网闸的“物理隔离”到底是什么?
  • 文献检索如何限制学科领域?避免跨领域噪音
  • OpenCL 编程系列(二)《OpenCL 编程抽象与语法》
  • 拿来即用!AI短剧智能创作系统源码完整源码部署教程
  • Redis Cluster 高可用架构设计
  • 解决 MyBatis-Plus 逻辑删除踩坑:delete 关键字导致 SQL 语法错误
  • 问卷设计“独行侠”VS“智能搭档”:书匠策AI开启科研新篇章
  • TLS加密流程
  • openclaw(小龙虾)能够帮我实现复杂的业务系统吗
  • Comsol 探索变质量注浆理论:压力与沉积颗粒、渗透率的奇妙关联
  • 百考通AI:让毕业论文写作更高效、更省心
  • Git急救指南:误操作全攻略
  • FunASR:几行代码搞定语音识别全流程的开源工具包,GitHub已获15.2k Star!
  • 毕设程序java中天健身房 基于SpringBoot架构的健身会所智慧运营平台 Java驱动的体育场馆数字化服务系统
  • 为何抗体定制服务是解决特定研究需求的关键策略?
  • AI写论文有妙招!4款AI论文生成工具,解决毕业论文写作难题!
  • 问卷设计:从“手工匠人”到“书匠策AI智造”的华丽转身
  • 【Unity IL2CPP 项目逆向分析教程】从 Il2CppDumper 到 Ghidra
  • 解锁本科论文新姿势:Paperxie AI 初稿写作,把繁琐交给工具,把创意留给自己
  • 五星实测!2026年高效智能项目管理软件排行榜TOP10
  • 计算机毕业设计springboot新能源汽车服务管理系统 基于SpringBoot的新能源汽车全生命周期服务平台 基于SpringBoot的绿动出行汽车服务综合管理系统
  • OpenAI Codex CLI 通过 LiteLLM 代理接入指南
  • 基于stc单片机电动车多用户充电设计(有完整资料)
  • 高频正弦注入法抑制MMC驱动永磁同步电机变频中子模块电容电压波动
  • 量化交易入门
  • 大规模驱动企业 AI:Elastic 与 NVIDIA cuVS 集成
  • Python数据分析项目实战(025)——NumPy数据分析综合案例
  • 告别 Java 内卷苦海!Java 程序员转型大模型开发的 “躺赢” 密码,这波血赚
  • AI 智能体 vs AI 助手:核心差异与商业应用场景解析!