2. Qualcomm座舱软硬件架构基础

在座舱持续集成与量产交付体系中,所有构建、刷写、测试与发布动作最终都要落到具体的芯片与软件分区上。理解 SA8155、SA8295 这类座舱 SoC 的硬件资源划分、Hypervisor 虚拟化机制以及 QNX+Android 双系统分区布局,是判断“一个变更会影响哪些模块、需要刷哪些分区、如何回滚”的前提。本节从硬件资源出发,逐层向下讲到分区概念,为后续 CI 流水线设计建立物理与逻辑基础。

一、SA8155 与 SA8295 的硬件资源差异

SA8155(高通第三代骁龙座舱平台,SM8155)与 SA8295(第四代,SM8295)在座舱域控制器中承担的角色相似,但资源规模与制程不同。SA8155 采用 7nm 工艺,典型配置为 8 核 Kryo 485 CPU(1+3+4 三簇结构)、Adreno 640 GPU、Hexagon 690 DSP,并集成多路显示控制器与音频 DSP,通常支持 4~6 路 4K 显示输出。SA8295 升级到 5nm,CPU 为 Kryo 695 八核,GPU 为 Adreno 695,AI 算力从约 8 TOPS 提升到约 30 TOPS,显示与摄像头接入能力更强,可支撑更多屏、更高分辨率以及舱驾融合场景。

对 CI 而言,这些差异直接体现为构建产物与测试矩阵的不同:同一份 Android 镜像不能跨芯片直接复用,内核、设备树、GPU 固件、DSP 固件、显示配置都随平台变化。因此流水线中必须把“芯片平台”作为构建与刷写的一级维度,而不是把 SA8155 与 SA8295 当作可互换目标。

二、Hypervisor 虚拟化:把一颗 SoC 切成多个“虚拟机”

座舱 SoC 需要同时运行仪表、中控、副驾娱乐等不同安全等级的系统。Hypervisor(高通平台通常为 QHEE/Hypervisor 方案)运行在 EL2 层,负责 CPU 核、内存、中断、外设的隔离与分配。它把物理资源抽象成若干虚拟机(VM),每个 VM 拥有独立的 vCPU、内存区间和虚拟设备。典型划分是:一个运行 QNX 的实时 VM 负责仪表与安全相关功能,一个或多个运行 Android 的 VM 负责信息娱乐,二者通过 Hypervisor 提供的虚拟通道(如 virtio、共享内存)通信。

虚拟化的关键约束在于资源是“静态或半静态分配”的:CPU 核按簇绑定,内存按 GB 级切分,GPU 与显示控制器按 pipe 分配。这意味着 CI 中任何涉及资源分配表(如 VM 配置、内存 map、显示 pipe 归属)的改动,都属于高风险变更,必须触发全量刷写与双系统联调测试,而不能只测单个系统。

三、QNX+Android 双系统架构与启动链

上电后,引导链通常为:PBL(Primary Boot Loader)→ XBL(eXtensible Boot Loader)→ Hypervisor → 各 VM 的引导加载程序 → QNX 与 Android 内核。QNX 作为实时系统先启动,负责仪表渲染、CAN 信号处理与部分安全功能;Android 随后启动,承载应用生态与多媒体。两者通过 Hypervisor 的共享内存与虚拟网络进行数据交换,例如车速、挡位等信号由 QNX 侧采集后转发给 Android 侧应用。

这种架构对 CI 的直接影响是:构建产物必须按“VM 归属”分类。QNX 侧的镜像、Android 侧的 super 分区、以及两者共享的 Hypervisor 与 XBL,属于不同的刷写单元。流水线需要能独立构建、独立版本化,并在集成阶段组合成一套完整的刷机包。

四、分区概念:从物理分区到逻辑分区

座舱存储通常采用 UFS,分区表由 GPT 描述。物理分区包括 xbl、abl、hyp、tz、boot、dtbo、vbmeta、super、userdata、persist 等。其中 super 是 Android 动态分区容器,内部再划分为 system、vendor、product、system_ext 等逻辑分区;QNX 侧则常见 qnx、qnxfs 或独立的安全分区。persist、modemst 等分区保存校准与持久化数据,量产刷写时通常不擦除,否则会导致校准丢失。

分区与 CI 的对应关系可以概括为:构建产物 → 分区镜像 → 刷写单元 → 测试范围。例如只改 Android 应用层,可能只需更新 super 内的 product 逻辑分区;改内核则涉及 boot 与 dtbo;改 Hypervisor 配置则涉及 hyp 与 XBL,风险等级最高。下面用一张分区与双系统映射图,把硬件资源、Hypervisor、两个 VM 与关键分区的关系集中呈现。

SA8155 / SA8295 座舱 SoC:硬件资源 → Hypervisor → 双系统 → 分区映射 SoC 硬件资源(SA8155:7nm / SA8295:5nm) CPU 8核 Kryo 1+3+4 三簇 GPU Adreno 640 / 695 DSP Hexagon 音频 / AI 显示控制器 多路 4K pipe UFS 存储 + 外设 CAN / 以太网 / PCIe Hypervisor(EL2)— 资源隔离与分配:vCPU 绑定 / 内存切分 / 中断路由 / 虚拟设备 静态或半静态分配:CPU 按簇、内存按 GB、GPU 与显示按 pipe 归属 QNX 实时 VM(安全域) 仪表渲染 · CAN 信号采集 · 安全功能 实时性优先,先于 Android 启动 qnx / qnxfs 分区 共享内存 / virtio 通道 Android 信息娱乐 VM 应用生态 · 多媒体 · 语音交互 后于 QNX 启动,依赖 Hypervisor 转发信号 super 动态分区 userdata / persist 信号 转发 UFS 物理分区(GPT)与刷写单元 引导与虚拟化 xbl · abl · hyp · tz Android 相关 boot · dtbo · vbmeta · super QNX 相关 qnx · qnxfs · 安全分区 持久化 / 校准 persist · modemst(量产不擦) super 内部逻辑分区 system · vendor · product · system_ext 高风险变更 hyp / xbl / VM 资源分配表

五、从架构到 CI 的落地判断

把上述结构映射到持续集成,可以得到几条明确的工程规则。第一,构建阶段按“平台 + VM + 分区”三维组织产物:SA8155 与 SA8295 各自独立构建,QNX 与 Android 各自独立出包,最终由集成任务组合成完整刷机包。第二,刷写阶段区分“全量刷写”与“增量刷写”:涉及 xbl、hyp、tz、vbmeta 的变更必须全量刷写并重新校验启动链;仅涉及 super 内 product 逻辑分区的变更可走增量。第三,测试阶段按分区影响面选择用例:改 QNX 侧需跑仪表实时性与 CAN 信号用例,改 Android 侧需跑应用兼容与多媒体用例,改 Hypervisor 配置则必须跑双系统并发与资源隔离用例。

在 CI 配置中,建议为每个分区镜像维护一份“影响面标签”,例如 hyp:critical、super.product:app-only、persist:no-flash。流水线根据标签自动决定刷写范围与测试集,避免每次变更都全量刷写导致效率低下,也避免该全量时漏刷导致启动失败。