2、瑞芯微ISP与VIPP架构:RK ISP图像信号处理流程、VIPP作用、MIPI CSI与ISP/VIPP的硬件连接拓扑
2.1 RK ISP 图像信号处理流程
瑞芯微 ISP(Image Signal Processor)是 SoC 内部负责将 CMOS 传感器原始 RAW 数据转换为高质量 YUV/RGB 图像的关键硬件模块。其处理流程遵循经典的 ISP Pipeline 架构,主要包含以下阶段:
核心要点:RK ISP 的 Pipeline 是 全硬件流水线,每个模块在单帧时间内并行处理,延迟固定,不占用 CPU 资源。
| 阶段 | 模块 | 功能描述 | 输出数据格式 |
|---|---|---|---|
| 1 | DPCC(坏点校正) | 检测并插值修复传感器死点/亮点 | RAW10/12 |
| 2 | BLC(黑电平校正) | 减去光学黑电平偏移,恢复真实暗区 | RAW10/12 |
| 3 | LSC(镜头阴影校正) | 补偿镜头边缘亮度衰减(Lens Shading) | RAW10/12 |
| 4 | AWB Gain(自动白平衡增益) | 对 R/G/B 通道施加独立增益,校正色温 | RAW10/12 |
| 5 | Demosaic(去马赛克) | 将 Bayer 模式插值重建为全彩色 RGB | RGB888 |
| 6 | CCM(颜色校正矩阵) | 3x3 矩阵变换,校准 sensor 色彩空间到 sRGB | RGB888 |
| 7 | Gamma(伽马校正) | 非线性映射,适配显示设备亮度响应 | RGB888 |
| 8 | YUV Conversion(色彩空间转换) | RGB → YUV 转换,分离亮度与色度 | YUV420/NV12 |
| 9 | Sharpen/Denoise(锐化降噪) | 边缘增强与空域/时域降噪 | YUV420 |
| 10 | WDR(宽动态融合) | 多帧 HDR 合成,扩展动态范围 | YUV420 |
ISP 处理流程的硬件拓扑示意如下:
2.2 VIPP(Video Input Pre-Processor)作用
VIPP 是位于 MIPI CSI 接收控制器与 ISP 之间的硬件预处理单元,主要解决 多路复用、格式转换、裁剪缩放 等前端适配问题。其核心功能如下:
- 多路输入复用:支持同时接入最多 4 路 MIPI CSI 虚拟通道(Virtual Channel),通过 VIPP 内部 MUX 选择一路送入 ISP。
- 数据格式转换:将 MIPI 接收到的 RAW8/RAW10/RAW12 统一打包为 ISP 所需的 RAW 格式,并处理 CSI-2 的 ECC/CRC 校验。
- 裁剪与缩放:支持硬件级 ROI 裁剪(Crop)和 1/2、1/4 下采样(Scale Down),减少 ISP 处理负载。
- 帧同步与缓冲:提供内部 Line Buffer,消除 MIPI 传输中的行抖动,输出稳定的帧同步信号(VSYNC/HSYNC)。
- 统计信息采集:实时统计输入帧的亮度直方图、FPS、数据量,供驱动层做自适应调节。
调试提示:VIPP 的裁剪/缩放参数必须在 Stream-On 之前 配置,否则会导致 ISP 输入尺寸不匹配,产生花屏或帧错位。
VIPP 内部数据流架构:
2.3 MIPI CSI 与 ISP/VIPP 的硬件连接拓扑
在瑞芯微 SoC(如 RK3588、RK3568)中,MIPI CSI 接口、VIPP 和 ISP 之间的硬件连接遵循 分层拓扑 结构。典型连接方式如下:
| 层级 | 硬件模块 | 接口/协议 | 说明 |
|---|---|---|---|
| 1 | Camera Sensor | MIPI CSI-2(1/2/4 Lane) | 输出 RAW 数据,含 VC 标签 |
| 2 | MIPI D-PHY RX | D-PHY v1.2 / v2.0 | 物理层接收,时钟恢复,串转并 |
| 3 | MIPI CSI-2 Controller | CSI-2 v1.3 / v2.0 | 协议层解析,ECC/CRC 校验,VC 分离 |
| 4 | VIPP | AXI4-Stream | 多路复用、格式转换、裁剪缩放 |
| 5 | ISP | AXI4 / APB | 图像信号处理 Pipeline |
| 6 | DDR / VOP | AXI4 | 存储或显示输出 |
硬件连接拓扑图:
驱动调试注意:在 RK 平台设备树中,VIPP 与 ISP 的绑定关系通过
rockchip,vipp 属性指定。若拓扑中 VIPP 输出与 ISP 输入格式不匹配(如 VIPP 输出 RAW10 但 ISP 配置为 RAW12),会导致 ISP 无法正确解析数据,表现为帧率异常或图像偏色。
2.4 关键驱动配置示例
以下为 RK3588 设备树中 VIPP 与 ISP 的典型绑定配置:
// RK3588 设备树片段:VIPP 与 ISP 连接
isp@ff4b0000 {
compatible = "rockchip,rk3588-isp";
reg = <0xff4b0000 0x10000>;
interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
rockchip,vipp = <&vipp0>; // 绑定 VIPP0
port {
isp0_in: endpoint {
remote-endpoint = <&vipp0_out>;
data-lanes = <1 2 3 4>;
};
};
};
vipp0: vipp@ff4c0000 {
compatible = "rockchip,rk3588-vipp";
reg = <0xff4c0000 0x1000>;
rockchip,isp = <&isp0>; // 反向绑定 ISP
port {
vipp0_out: endpoint {
remote-endpoint = <&isp0_in>;
};
};
};
调试技巧:使用
cat /sys/kernel/debug/vipp/status 可查看 VIPP 当前输入 VC、帧率、裁剪区域等实时状态,是定位 MIPI 数据流问题的第一入口。