系统架构设计:多屏显示架构与硬件接口规划

多屏系统,说白了就是让几块屏幕各司其职,又不打架。我见过不少项目,硬件选型时没想清楚,结果软件团队天天在调同步、修撕裂。今天咱们就把这块掰开揉碎了讲。

多屏显示架构:IVI + 仪表 + HUD + 后排娱乐

先看一个典型的四屏架构。我习惯把它分成「主控域」和「显示域」两层来思考。

核心原则:仪表和HUD属于安全域,IVI和后排娱乐属于信息域。安全域必须独立渲染、独立刷新,不能受信息域卡顿影响。

高通8295 四屏显示架构 高通 SA8295P DPU0 - 仪表 DPU1 - IVI DPU2 - HUD DPU3 - 后排 DSI x4 DP 1.4 eDP 1.4 DP 1.4 仪表屏 1920x720 60fps 安全 IVI 中控 1920x1080 60fps 娱乐 HUD 1280x720 60fps 安全 后排娱乐 1920x1080 30fps 视频 关键设计点 仪表/HUD 使用独立 DPU 渲染管线,不受 IVI 卡顿影响 后排娱乐可降帧至 30fps 以节省带宽,不影响主屏体验

硬件接口规划:DSI / DP / eDP

接口选型这块,我踩过不少坑。8295 的显示接口资源很丰富,但怎么分配,得看屏幕规格和走线距离。

接口类型 带宽 最大分辨率 传输距离 推荐场景
DSI (4-lane) ~12 Gbps 1920x1080@60fps < 30cm 仪表屏、HUD(短距、低延迟)
DP 1.4 ~32.4 Gbps 4K@60fps < 3m IVI 中控、后排娱乐(长距、高分辨率)
eDP 1.4 ~21.6 Gbps 2560x1600@60fps < 50cm HUD 或副驾屏(内嵌、低功耗)

我的经验:仪表屏尽量用 DSI,延迟最低。IVI 用 DP 走长线,方便布局。HUD 如果距离近,eDP 是个好选择,省一路 DSI 资源给其他屏。

操作系统选择与 Hypervisor 方案

多屏系统最头疼的问题是什么?是「一个系统崩了,所有屏都黑了」。Hypervisor 就是来解决这个问题的。

我建议的方案是这样的:

  • 安全域(仪表 + HUD):运行在独立的 Linux 或 QNX 上,通过 Hypervisor 隔离。我习惯用 QNX,ASIL-B 认证好过。
  • 信息域(IVI + 后排娱乐):运行在 Android Automotive 上,享受生态和开发效率。
  • Hypervisor:推荐用 BlackBerry QNX Hypervisor 或 ACRN。8295 的虚拟化硬件支持很好,IOMMU 和 SMMU 都能用上。

避坑指南:我曾经在一个项目里,把仪表和 IVI 放在同一个 Linux 上,用容器隔离。结果 IVI 的 GPU 驱动崩了,仪表直接黑屏。后来改成 Hypervisor 硬隔离,再也没出过这个问题。

显示同步与帧率管理

多屏同步,说白了就是让仪表和 IVI 的画面不要「错位」。8295 的 DPU 支持硬件 VSync 同步,但需要软件配合。

我总结了几条经验:

  1. 仪表和 HUD 必须使用硬件 VSync:软件同步延迟不可控,安全域不能用。
  2. IVI 和后排娱乐可以软件同步:允许 1-2 帧的延迟,不影响体验。
  3. 帧率不要一刀切:仪表 60fps 保证流畅,后排娱乐 30fps 省带宽,IVI 动态调整。

核心指标:仪表屏的帧渲染延迟必须控制在 16ms 以内,否则会出现「画面撕裂」。我见过一个项目,仪表帧率掉到 45fps,驾驶员投诉说「指针在抖」。

带宽预算与内存规划

多屏系统最容易被低估的就是带宽。8295 的内存带宽是 68GB/s,听起来很多,但四屏同时跑起来,很容易吃满。

我建议做这样的预算:

屏幕 分辨率 色深 帧率 带宽需求
仪表 1920x720 24bit 60fps ~2.5 Gbps
IVI 1920x1080 30bit 60fps ~3.7 Gbps
HUD 1280x720 24bit 60fps ~1.3 Gbps
后排娱乐 1920x1080 24bit 30fps ~1.9 Gbps
合计 ~9.4 Gbps

我的建议:留 30% 的余量,也就是实际带宽需求控制在 7 Gbps 以内。8295 的显示引擎有 4 个 DPU,每个 DPU 独立处理,不会互相抢占带宽。

总结一下关键点

  • 架构:安全域和信息域必须物理隔离,Hypervisor 是首选。
  • 接口:DSI 给短距低延迟屏,DP 给长距高分辨率屏,eDP 给内嵌屏。
  • 同步:安全域用硬件 VSync,信息域可以软件同步。
  • 带宽:做好预算,留余量,别让内存带宽成为瓶颈。