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生成到最终在面板上显示,经历了以下关键流水线阶段:

  1. 数据源: GPU/CPU将渲染好的帧数据写入系统内存(DDR)中的FrameBuffer。
  2. VOP读取与合成: VOP通过内部DMA引擎从DDR读取多个图层的像素数据,在内部进行Alpha混合、缩放(Scale)、色彩空间转换(CSC),最终输出并行RGB/DPI接口数据。
  3. DSI Host协议封装: DSI Host接收VOP的并行数据,按照MIPI DSI协议打包成数据包(Long Packet/Short Packet),并插入同步信号(HSA, HBP, HACT等)。
  4. DPHY串行传输: DPHY将DSI Host的并行数据转换为高速差分串行信号(Data Lane & Clock Lane),通过PCB走线传输到显示面板。
  5. 面板接收与显示: 面板端的DSI Receiver解串数据,恢复像素时钟和RGB数据,驱动屏幕显示。
瑞芯微显示子系统数据流架构 瑞芯微显示子系统数据流架构图 DDR 内存 FrameBuffer VOP 合成 / 缩放 / CSC DSI Host 协议打包 DPHY 串行化 MIPI 面板 控制单元 CRU / GRF / PMUGRF DMA读 并行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为显示子系统提供所有必需的时钟。时钟配置错误是导致显示无输出或时序异常的最常见原因之一。

典型的显示时钟树路径如下:

  1. 源时钟: 通常来自外部晶振(如24MHz)或PLL(如GPLL, CPLL)。
  2. VOP像素时钟 (dclk_vop0/dclk_vop1): 由CRU分频得到,频率等于面板的像素时钟(PCLK)。例如,1080p@60Hz的PCLK约为148.5MHz。
  3. DSI Host时钟 (dsi_clk): 用于DSI Host内部逻辑,通常与像素时钟相关或由独立PLL提供。
  4. DPHY参考时钟 (mipidphy_ref_clk): 用于DPHY内部的PLL,用于产生高速串行时钟。其频率与Lane速率相关。
显示子系统CRU时钟树 显示子系统CRU时钟树结构 PLL (GPLL/CPLL) CRU 分频器 CRU 分频器 CRU 分频器 dclk_vop (像素时钟) dsi_clk (Host时钟) mipidphy_ref_clk → VOP → DSI Host → DPHY
时钟调试技巧: 在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 提供数据流运行的基础环境和动力。