2. 瑞芯微显示子系统架构:VOP/DPU/HDMI TX控制器层级关系、内存带宽与显示管线

2.1 显示子系统整体层级关系

瑞芯微平台显示子系统采用“内存 → VOP/DPU → 显示控制器 → PHY → 物理接口”的经典分层架构。VOP(Video Output Processor)或 DPU(Display Processing Unit)负责从系统内存(DDR)读取帧缓冲数据,经过合成、缩放、旋转等处理后,将像素流发送给下游的显示控制器(如 HDMI TX、MIPI DSI、eDP 等)。HDMI TX 控制器则负责将像素流编码为 TMDS 信号,最终通过 PHY 驱动物理接口输出。

关键概念: VOP 与 DPU 是瑞芯微平台的两代显示处理核心。VOP 用于 RK3288/RK3399 等较老平台,DPU 用于 RK3568/RK3588 等新平台,功能更强、管线更灵活。
瑞芯微显示子系统层级架构 系统内存 (DDR) VOP / DPU HDMI TX 控制器 HDMI PHY 数据流向 DDR → VOP/DPU 合成 → HDMI TX 编码 → PHY 驱动输出

2.2 VOP 与 DPU 核心差异

调试提示: 在 RK3588 平台上,DPU 的智能管线可以动态绑定到任意物理输出接口。如果 HDMI 无输出,首先检查 DPU 的管线分配是否正确,使用 cat /sys/kernel/debug/dri/0/state 查看当前管线绑定状态。

2.3 HDMI TX 控制器内部结构

HDMI TX 控制器是连接 DPU 与物理层的桥梁,主要包含以下功能模块:

  • 视频前端: 接收 DPU 输出的像素流,支持 RGB/YUV 格式转换、色彩空间转换(CSC)。
  • 数据使能(DE)生成: 根据 H/V 同步信号生成有效数据窗口。
  • TMDS 编码器: 将 8bit 像素数据编码为 10bit TMDS 字符,包含 DC 平衡和最小化转换。
  • 音频插入: 在消隐区插入 I2S/SPDIF 音频数据包。
  • InfoFrame 打包: 生成 AVI/Audio/VSIF/DRM 等 InfoFrame 数据包。
  • HDCP 引擎: 可选 HDCP 1.4/2.3 加密。
HDMI TX 控制器内部模块 视频前端 DE 生成 TMDS 编码 音频插入 HDCP InfoFrame PHY 接口 调试关注点 TMDS 编码异常 → 花屏 / 无图;InfoFrame 错误 → 显示器不识别分辨率;HDCP 失败 → 黑屏

2.4 内存带宽与显示管线

显示子系统对内存带宽的需求由分辨率、帧率、像素格式、图层数量共同决定。带宽不足时会导致画面撕裂(tearing)、掉帧、甚至黑屏。

2.4.1 带宽计算公式

所需带宽 (MB/s) = 水平像素 × 垂直像素 × 帧率 × 每像素字节数 × 图层数 × 1.1(余量系数)

示例:4K@60Hz, RGB888, 2 个图层
= 3840 × 2160 × 60 × 3 × 2 × 1.1
≈ 3,280 MB/s ≈ 3.2 GB/s

2.4.2 常见分辨率带宽需求参考

特性 VOP (RK3288/RK3399) DPU (RK3568/RK3588)
管线数量 固定 2~3 条(Win0/Win1/Win2) 可配置 4~8 条智能管线
最大分辨率 4K@60Hz (单通道) 8K@60Hz / 4K@120Hz
AFBC 支持 仅部分支持 完整 AFBC 1.2/1.3
HDR 处理 无 HDR10/HLG/Dolby Vision
输出接口 单路 RGB/LVDS/MIPI 多路并行输出(HDMI/DP/eDP/MIPI)
常见陷阱: RK3588 的 DDR 带宽虽然高达 64bit LPDDR4x @ 4266MHz(约 34 GB/s),但 CPU、GPU、NPU、编解码器共享同一内存控制器。当多模块同时高负载时,显示管线可能因带宽抢占而出现间歇性黑屏或撕裂。务必使用 cat /proc/meminfo 和 dmesg | grep dma 检查带宽压力。

2.5 显示管线数据流与调试切入点

从应用程序到 HDMI 物理输出的完整数据流如下:

  1. 应用层: DRM/KMS 提交 framebuffer → 调用 drmModeAtomicCommit。
  2. 内核 DRM 核心: 校验参数 → 分配 VOP/DPU 管线。
  3. VOP/DPU 驱动: 配置 Win 层地址、格式、缩放 → 启动 DMA 读取。
  4. HDMI TX 驱动: 接收像素流 → 配置时序 → 启动 TMDS 编码。
  5. PHY 驱动: 配置 PLL 频率 → 驱动 TMDS 信号输出。
显示管线数据流与调试切入点 应用层 DRM DRM 核心 VOP/DPU HDMI TX PHY 各层调试工具 drmModeAtomicCommit → drm_info / modetest → cat /sys/kernel/debug/dri/0/state → cat /sys/kernel/debug/dw-hdmi/regs → i2c dump

2.6 带宽瓶颈定位方法

当怀疑带宽不足导致 HDMI 输出异常时,按以下步骤排查:

  • 步骤 1: 使用 cat /sys/kernel/debug/dri/0/bandwidth 查看当前显示管线申请的带宽。
  • 步骤 2: 使用 perf stat -e ddr_bandwidth 或 rk_bandwidth 工具测量实际 DDR 带宽占用。
  • 步骤 3: 检查 dmesg 中是否有 bandwidth insufficient 或 underflow 关键字。
  • 步骤 4: 尝试降低帧率或关闭多余图层,观察问题是否消失。
实战案例: RK3588 在 4K@60Hz + HDR + 3 图层场景下出现间歇性黑屏。通过 cat /sys/kernel/debug/dri/0/bandwidth 发现申请带宽为 4.8 GB/s,而实际可用带宽仅 3.5 GB/s(受其他模块抢占)。解决方案:将其中一个图层改为 YUV420 格式,带宽降至 3.2 GB/s,问题解决。

2.7 本章小结

理解瑞芯微显示子系统的层级关系是 HDMI 调试的基础。VOP/DPU 负责像素合成与处理,HDMI TX 控制器负责编码与协议打包,内存带宽是贯穿整个管线的核心资源。调试时需从 DRM 层、驱动层、PHY 层逐级排查,并时刻关注带宽是否满足当前显示配置的需求。

分辨率 帧率 像素格式 单图层带宽 双图层带宽
1920×1080 60Hz RGB888 ~400 MB/s ~800 MB/s
3840×2160 60Hz RGB888 ~1.6 GB/s ~3.2 GB/s
3840×2160 60Hz YUV420 ~0.8 GB/s ~1.6 GB/s
7680×4320 30Hz YUV420 ~1.6 GB/s ~3.2 GB/s