2、多屏异显技术基础:显示子系统架构、显示控制器、显示接口(DSI、DP、HDMI)
好,咱们正式开始啃这块硬骨头。多屏异显,说白了就是让一块芯片同时驱动好几块屏幕,而且每块屏幕显示的内容还不一样。听起来很酷,对吧?但底层原理其实没那么玄乎。今天我就带你从显示子系统架构开始,一步步拆解。
2.1 显示子系统架构:谁在管这些屏幕?
先看一张宏观的图(嗯,脑子里想象一下)。整个显示子系统,就像一条流水线。从应用处理器(AP)生成图像数据,到最终在屏幕上亮起来,中间要经过好几个关卡。
我个人习惯把这条流水线分成三层:
- 应用层(Source):Android 或 Linux 的图形栈(SurfaceFlinger、Wayland 等)负责合成图层。这里产出的是帧缓冲区(Framebuffer)。
- 显示控制器层(Display Controller):这是今天的重点。它负责从内存中取数据,做格式转换、叠加、缩放,然后送给接口。
- 显示接口层(Display Interface):物理传输通道。DSI、DP、HDMI 就是干这个的。
高通 8155 的显示子系统,内部集成了多个显示控制器(通常叫 DPU,Display Processing Unit)。每个 DPU 可以独立控制一条显示通道。这就是多屏异显的硬件基础——硬件上就支持并行处理。
核心要点:多屏异显不是靠软件“分时复用”模拟出来的,而是硬件层面就有多个独立的显示流水线。这一点很重要,决定了你的系统实时性。
2.2 显示控制器:图像数据的“交通警察”
显示控制器,我更喜欢叫它“图像交通警察”。它负责指挥数据从内存到屏幕的整个流程。高通 8155 的 DPU 功能非常强大,我挑几个关键模块说说。
2.2.1 图层混合(Layer Blending)
车载系统里,一个屏幕上的内容往往是多个图层叠加的。比如:导航地图是底层,悬浮的仪表盘指针是上层,警告图标又是最上层。DPU 内部有硬件混合器(Hardware Composer),可以直接把这些图层合成一个最终画面。
我在项目中遇到过一个问题:用软件方式混合图层,CPU 占用率飙升,导致导航卡顿。后来改成硬件混合,CPU 占用直接降了 30%。所以,能用硬件做的事,千万别让 CPU 干。
2.2.2 缩放与旋转(Scaling & Rotation)
不同屏幕的分辨率可能不一样。中控屏可能是 1920x720,仪表屏可能是 1280x480。DPU 内置了缩放引擎,可以实时把图像缩放到目标分辨率。它还支持 90 度、180 度、270 度旋转。
嗯,这里要注意:旋转操作是有性能开销的。如果你要支持竖屏和横屏切换,最好提前规划好旋转策略。
2.2.3 时序发生器(Timing Generator)
屏幕刷新需要精确的时序信号(VSYNC、HSYNC、DE 等)。DPU 内部有时序发生器,负责生成这些信号。多屏异显时,每个屏幕的时序是独立的。也就是说,你可以让中控屏跑 60Hz,仪表屏跑 30Hz,互不干扰。
避坑指南:我曾经调试过一个诡异的花屏问题,折腾了两天。最后发现是仪表屏的时序参数配错了,导致像素时钟频率偏差了 0.1%。所以,时序参数一定要严格按照屏幕规格书来配,别想当然。
2.3 显示接口:数据怎么传过去?
控制器处理完数据,接下来就要通过物理接口送给屏幕了。车载领域,主流接口就三种:DSI、DP、HDMI。我一个个说。
2.3.1 DSI(Display Serial Interface)
DSI 是 MIPI 联盟的标准,主要用于连接 LCD 屏幕。它采用差分信号传输,抗干扰能力强。高通 8155 支持 DSI 和 DSI-2(带宽更高)。
DSI 有两种工作模式:
- 命令模式(Command Mode):屏幕自带帧缓冲,AP 只发更新指令。适合静态画面,省电。
- 视频模式(Video Mode):AP 实时发送每一帧数据。适合动态画面,延迟低。
车载仪表盘通常用命令模式,因为画面变化不频繁,省电且稳定。中控屏用视频模式,因为导航、视频等需要实时刷新。
警告:DSI 的走线长度和阻抗匹配非常敏感。我见过一个项目,因为 FPC 排线长了 5cm,导致信号质量下降,屏幕出现水波纹。所以,硬件设计时一定要和 Layout 工程师确认走线规则。
2.3.2 DP(DisplayPort)
DP 接口在车载领域越来越流行,尤其是高分辨率屏幕(4K、8K)。它带宽高,支持多流传输(MST),一根线可以传多路视频。
高通 8155 集成了 DP 控制器,支持 eDP(嵌入式 DisplayPort,用于笔记本屏幕)和标准 DP。eDP 在车载中控和仪表盘上用得比较多,因为它功耗低、接口简单。
我个人习惯:如果项目需要 4K 分辨率或者高刷新率(120Hz),优先考虑 DP 接口。DSI 在 4K 下带宽有点吃紧。
2.3.3 HDMI(High-Definition Multimedia Interface)
HDMI 大家最熟悉了,电视、显示器都在用。车载上主要用于后排娱乐屏或者外接设备(比如手机投屏)。
HDMI 的优势是普及率高,几乎任何设备都有。但缺点也很明显:
- 线缆粗,不适合车内狭小空间。
- 没有锁扣,容易松动。
- 功耗比 DSI 和 DP 高。
所以,HDMI 在车载里通常只作为辅助接口,不会作为主显示链路。
2.4 多屏异显的接口组合策略
实际项目中,怎么选接口?我列个表,方便你参考。
| 屏幕类型 | 推荐接口 | 原因 |
|---|---|---|
| 仪表盘(1280x480) | DSI(命令模式) | 低功耗、稳定、画面变化少 |
| 中控屏(1920x720) | DSI(视频模式)或 eDP | 需要实时刷新,带宽适中 |
| 副驾屏(1920x1080) | eDP 或 DP | 分辨率高,可能需要独立刷新率 |
| 后排娱乐屏(4K) | DP 或 HDMI | 带宽要求高,HDMI 兼容性好 |
你想想看,如果三个屏幕都用 DSI,那 8155 的 DSI 接口数量可能不够。所以,通常是一个 DSI 接仪表,一个 eDP 接中控,一个 DP 或 HDMI 接后排。这就是典型的“混合接口”方案。
2.5 小结:从架构到接口,一条线串起来
今天的内容,说白了就是三句话:
- 显示子系统:AP → 显示控制器 → 显示接口 → 屏幕。
- 显示控制器:负责图层混合、缩放、时序生成。多屏异显的硬件基础。
- 显示接口:DSI 适合小屏低功耗,DP 适合高分辨率,HDMI 适合外接设备。
下一章,我会带你深入高通 8155 的 DPU 寄存器配置,手把手教你点亮一块屏幕。到时候,咱们直接上代码。
课后思考:如果你的项目需要同时驱动一块 4K 中控屏和一块 720p 仪表屏,你会怎么分配接口?为什么?