2. 瑞芯微平台显示子系统架构
瑞芯微平台的显示子系统是一个高度模块化、流水线化的硬件架构,旨在高效地将应用处理器生成的图形帧数据,通过MIPI DSI接口传输到外部显示面板。理解其核心组件(VOP、DSI Host、DPHY)以及配套的控制单元(GRF、PMUGRF、CRU)和整体数据流,是进行驱动参数配置与调试的基础。
2.1 核心组件与功能概述
显示子系统由以下几个关键IP模块构成,它们协同工作,完成从内存到像素点的数据转换与传输。
| 模块 | 全称 | 核心功能 | 驱动对应 |
|---|---|---|---|
| VOP | Video Output Processor | 从内存读取帧数据,进行图层合成、缩放、色彩转换,并生成标准的并行像素接口时序(如RGB、LVDS、MIPI DPI)。 | rockchip-vop |
| DSI Host | Display Serial Interface Host Controller | 将VOP输出的并行像素数据,按照MIPI DSI协议转换为高速串行数据包,并管理命令模式与视频模式。 | dw-mipi-dsi-rockchip |
| DPHY | MIPI D-PHY | 物理层收发器,负责高速时钟和数据的串行化/解串行化,提供电气特性匹配(如电压摆幅、偏置电流)。 | phy-rockchip-mipi-dphy |
| GRF | General Register Files | 通用寄存器块,用于配置模块间的信号路由、IO复用、上下拉、驱动能力等。 | pinctrl / syscon |
| PMUGRF | Power Management Unit GRF | 电源域相关的通用寄存器,控制显示相关模块的电源开关、隔离、复位以及低功耗模式下的IO状态。 | pinctrl / syscon |
| CRU | Clock & Reset Unit | 时钟树与复位控制器,为VOP、DSI Host、DPHY提供精确的像素时钟、总线时钟和参考时钟,并管理模块复位。 | clk-rockchip |
调试要点: 在调试显示问题时,首先应通过CRU确认各模块时钟是否使能且频率正确,然后检查GRF/PMUGRF中IO复用和电源状态是否配置到位。硬件问题往往首先暴露在时钟和电源域。
2.2 整体数据流与SVG架构图
数据从GPU/CPU生成到最终在面板上显示,经历了以下关键流水线阶段:
- 数据源: GPU/CPU将渲染好的帧数据写入系统内存(DDR)中的FrameBuffer。
- VOP读取与合成: VOP通过内部DMA引擎从DDR读取多个图层的像素数据,在内部进行Alpha混合、缩放(Scale)、色彩空间转换(CSC),最终输出并行RGB/DPI接口数据。
- DSI Host协议封装: DSI Host接收VOP的并行数据,按照MIPI DSI协议打包成数据包(Long Packet/Short Packet),并插入同步信号(HSA, HBP, HACT等)。
- DPHY串行传输: DPHY将DSI Host的并行数据转换为高速差分串行信号(Data Lane & Clock Lane),通过PCB走线传输到显示面板。
- 面板接收与显示: 面板端的DSI Receiver解串数据,恢复像素时钟和RGB数据,驱动屏幕显示。
2.3 VOP:视频输出处理器
VOP是显示子系统的核心处理单元,负责从内存中获取帧数据并进行必要的图形处理。其主要特性包括:
- 多图层支持: 通常支持Win0、Win1、Win2等多个窗口(Layer),每个窗口可以独立配置格式、位置、大小和Z序。
- Alpha混合: 支持全局Alpha和逐像素Alpha混合,实现透明叠加效果。
- 缩放引擎: 内置高质量的缩放滤波器,支持从低分辨率到高分辨率的缩放。
- 色彩管理: 支持Gamma校正、CSC(色彩空间转换,如YUV转RGB)和Dithering(抖动处理)。
- 输出接口: 输出标准并行接口,如RGB888、RGB666,以及用于连接内部DSI Host的DPI接口。
关键寄存器与调试: VOP的配置主要集中在
WINx_CTRL、WINx_SRC_ACT_INFO、WINx_DST_ACT_INFO 和 SYS_CTRL 等寄存器。调试时,通过 ioctl 或 debugfs 读取这些寄存器可以确认图层配置是否生效。
2.4 DSI Host:协议控制器
DSI Host是连接VOP并行世界与MIPI串行世界的桥梁。它负责将VOP的像素流转换为符合MIPI DSI规范的协议包。
- 工作模式:
- Video Mode(视频模式): 实时传输像素流,类似传统的模拟信号。适用于大多数实时显示场景。
- Command Mode(命令模式): 通过发送命令和数据包来更新面板的帧缓冲区。适用于智能屏或低刷新率场景。
- 时序生成: 在Video Mode下,DSI Host需要根据VOP的时序参数(HSA, HBP, HFP, VSA, VBP, VFP)插入对应的Blank包(HFP包、HBP包等),以生成符合面板要求的同步序列。
- 数据包格式: 支持Short Packet(用于命令和同步事件)和Long Packet(用于像素数据)。
2.5 DPHY:物理层接口
DPHY是MIPI标准的物理层实现,负责高速信号的收发。其配置直接影响信号质量和传输稳定性。
- Lane配置: 支持1 Clock Lane + 1~4 Data Lanes。Lane数量越多,传输带宽越大。
- 高速模式(HS): 用于传输像素数据,差分信号摆幅约200mV,速率可达1Gbps/Lane以上。
- 低功耗模式(LP): 用于传输控制命令和进入省电状态,单端信号摆幅约1.2V。
- 关键参数:
hs_clk_rate: 高速时钟频率。lane_rate: 每Lane的数据传输速率。hsterm: HS模式下终端匹配电阻配置。hsslew: HS模式下的压摆率控制。
信号完整性警告: DPHY工作在GHz级别频率,PCB走线阻抗控制(通常要求差分100Ω ±10%)、等长布线(Lane间skew < 0.15mm)和参考平面完整性至关重要。错误的DPHY配置或不良的PCB设计是导致显示雪花、闪屏、无显示的常见硬件原因。
2.6 GRF 与 PMUGRF:系统控制与电源管理
这两个模块虽然不直接处理像素数据,但它们是连接各个IP的“神经系统”和“电源开关”。
- GRF (General Register Files):
- IO复用: 配置MIPI DSI的时钟线和数据线对应的GPIO引脚功能。
- 驱动能力: 调整IO引脚的驱动电流强度,以适应不同的PCB负载。
- 上下拉控制: 在未使用或低功耗状态下,配置内部上下拉电阻以节省功耗或防止浮空。
- PMUGRF (Power Management Unit GRF):
- 电源域控制: 控制VOP、DSI Host、DPHY所在电源域的开关(Power Gate)。
- 隔离控制: 在电源域关闭时,隔离输出信号,防止漏电。
- 低功耗状态: 配置MIPI接口在睡眠状态下的IO电平状态。
2.7 CRU时钟树:显示子系统的脉搏
CRU为显示子系统提供所有必需的时钟。时钟配置错误是导致显示无输出或时序异常的最常见原因之一。
典型的显示时钟树路径如下:
- 源时钟: 通常来自外部晶振(如24MHz)或PLL(如GPLL, CPLL)。
- VOP像素时钟 (dclk_vop0/dclk_vop1): 由CRU分频得到,频率等于面板的像素时钟(PCLK)。例如,1080p@60Hz的PCLK约为148.5MHz。
- DSI Host时钟 (dsi_clk): 用于DSI Host内部逻辑,通常与像素时钟相关或由独立PLL提供。
- DPHY参考时钟 (mipidphy_ref_clk): 用于DPHY内部的PLL,用于产生高速串行时钟。其频率与Lane速率相关。
时钟调试技巧: 在Linux内核中,可以通过
/sys/kernel/debug/clk/clk_summary 查看所有时钟的使能状态和频率。对于显示问题,重点检查 dclk_vop0、dsi_clk 和 mipidphy_ref_clk 是否与预期一致。如果时钟频率为0或明显错误,通常是CRU配置或PLL锁定失败导致。
2.8 关键配置参数与数据流总结
下表总结了从VOP到DPHY的关键配置参数及其在数据流中的角色:
| 配置阶段 | 关键参数 | 所属模块 | 数据流角色 |
|---|---|---|---|
| 1. 时序配置 | htotal, vtotal, hsync_len, vsync_len, pixel_clock | VOP / DSI Host | 定义帧的尺寸和同步信号,决定数据流速率。 |
| 2. 图层配置 | win_id, format, act_info, dsp_info, z_order | VOP | 决定从DDR读取哪些数据以及如何合成。 |
| 3. DSI协议配置 | video_mode, lane_num, format (RGB888/666), burst_mode | DSI Host | 决定数据如何被打包和传输。 |
| 4. DPHY物理配置 | hs_clk_rate, lane_rate, hsterm, hsslew | DPHY | 决定信号质量和传输速率。 |
| 5. 时钟与电源配置 | clk_enable, clk_rate, power_domain_on, io_mux | CRU / PMUGRF / GRF | 提供数据流运行的基础环境和动力。 |