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 等新平台,功能更强、管线更灵活。
2.2 VOP 与 DPU 核心差异
| 特性 |
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 平台上,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 加密。
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 常见分辨率带宽需求参考
| 分辨率 |
帧率 |
像素格式 |
单图层带宽 |
双图层带宽 |
| 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 |
常见陷阱: RK3588 的 DDR 带宽虽然高达 64bit LPDDR4x @ 4266MHz(约 34 GB/s),但 CPU、GPU、NPU、编解码器共享同一内存控制器。当多模块同时高负载时,显示管线可能因带宽抢占而出现间歇性黑屏或撕裂。务必使用 cat /proc/meminfo 和 dmesg | grep dma 检查带宽压力。
2.5 显示管线数据流与调试切入点
从应用程序到 HDMI 物理输出的完整数据流如下:
- 应用层: DRM/KMS 提交 framebuffer → 调用
drmModeAtomicCommit。
- 内核 DRM 核心: 校验参数 → 分配 VOP/DPU 管线。
- VOP/DPU 驱动: 配置 Win 层地址、格式、缩放 → 启动 DMA 读取。
- HDMI TX 驱动: 接收像素流 → 配置时序 → 启动 TMDS 编码。
- PHY 驱动: 配置 PLL 频率 → 驱动 TMDS 信号输出。
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 层逐级排查,并时刻关注带宽是否满足当前显示配置的需求。