Rockchip显示子系统关键概念解析

DTS中"帧率"的计算公式

一个模式mode的帧率原来并不是直接以一个字段的形式写到timing里的,而是靠时钟去计算 计算公式如下:

$$ \begin{aligned} \text{Htotal} &= (\text{hsync\_len} + \text{hfront\_porch} + \text{hback\_porch} + \text{hactive}) \\ \text{Vtotal} &= (\text{vsync\_len} + \text{vfront\_porch} + \text{vback\_porch} + \text{vactive}) \\ \text{FrameRate} &= \frac{\text{ClkFreq}}{ \text{Htotal} \times \text{Vtotal} } \end{aligned} $$

VOP

  • rk是用vop来管理输出的硬件端口的

  • vp=video port

  • vop=video output processor

    • 定义: VOP是从存储器帧缓冲区到显示设备的显示接口,是显示单元用来显示图像Buffer,显示到屏幕。(From sdk-beside-docs/cn/Linux/Graphics/Rockchip_Developer_Guide_Linux_Graphics_CN.pdf)
  • vop和vp rk的soc都有自己的vop, 首先vop就有两个版本: vop和vop2

    我们的rk3568使用的就是vop2,这个是soc的设定,不由得我们去修改.

    具体的使用哪一个版本的VOP要去查阅rk3568的技术参考手册,我这里的文件名叫: Rockchip RK3568 TRM Part2 V1.1-20210301.pdf

    再来说vp, 每一个soc的vop都有数量不等的vp.

    例如,rk3568有3个vp, rk3588有4个vp. 具体得看手册的介绍.如下图:

    从上面的图可以看出, 每一个vp可以接的接口类型还不一样.

dts

  • &lvds-代表lvds控制器这个硬件IP(或者等价的逻辑概念上的硬件电路)

  • &vp2-代表vop里的vp2这个IP

  • &panel

    • 这不是一个物理上存在的硬件IP,但应该把它当作逻辑设备.它也是一个节点.
    • 可以认为它是一个c++上的类的概念,用来阐述最终屏幕的具体配置.
  • 它们都代表着pcb上的独立(逻辑)硬件电路集成块, 不要只是把它们当成一个普通的dts中的标识符


  • ports: 这是每个设备上的“端口集合”或“接线板”。一个设备可以有多个接线板。

  • port@n:

    • 这是某个接线板上的一个“端口(Port)”。可以把它想象成HDMI接口、USB接口。一个端口可以包含多个信号端点。
    • port@1是表示这是一个输出的端口(Port)
    • port@0表示这是一个输入的端口(Port)
  • endpoint: 这是端口上的一个“端点(Endpoint)”,代表一个具体的信号流向。可以把它想象成HDMI接口上的一个具体引脚或一组引脚。它是连接的最小单元。

参考:

  • 最系统的对显示模块的介绍-sdk-beside-docs/cn/Common/DISPLAY/DRM/Rockchip_Developer_Guide_DRM_Display_Driver_CN.pdf
  • lvds屏幕最相关的介绍-sdk-beside-docs/cn/Common/DISPLAY/LVDS/Rockchip_Developer_Guide_LVDS_CN.pdf