3. 座舱ADAS软件架构与量产验证对象

R-Car 座舱 ADAS 量产验证的第一个工程难点,不是“测什么功能”,而是“在哪一层测、由谁负责、证据归谁”。同一颗 SoC 上同时运行 Hypervisor、QNX、Android、Linux、AUTOSAR AP/CP、ADAS 中间件与功能安全岛,若验证边界不清,就会出现三类典型问题:安全功能被放到非安全分区验证、跨虚拟机通信故障被误判为应用 Bug、以及安全岛与主域之间的信号链缺少端到端证据。本节围绕“分层验证边界”建立一张可落地的对象地图。

一、先分清“执行域”与“验证域”

R-Car 的软件栈通常按执行域划分:Hypervisor 负责 CPU、内存、外设与中断的虚拟化;QNX 常作为安全域或实时域承载仪表、ADAS 感知与安全逻辑;Android 承载 HMI、应用生态与多媒体;Linux 承载部分中间件、日志与 OTA;AUTOSAR AP 提供面向服务的通信与执行管理,CP 则运行在 MCU 或安全岛侧,承担硬实时与安全监控。功能安全岛(Safety Island)独立于主域运行,负责看门狗、时钟监控、电压监控与安全状态切换。

但“执行域”不等于“验证域”。验证域是按证据归属划分的:一个功能可能跨三个执行域,但它的安全目标只归属其中一个域。例如,仪表车速显示由 QNX 渲染、Android 提供主题资源、Hypervisor 负责显示控制器虚拟化,但车速信号的正确性与安全目标归属 QNX 安全域。因此,分层验证边界的第一条原则是:以安全目标归属确定主验证域,以数据流路径确定协同验证域。

二、分层验证边界图

下图给出 R-Car 座舱 ADAS 典型软件栈的分层验证边界。图中纵向为执行域,横向为验证关注点:接口、时序、安全机制与故障注入。每个边界都标注了主要验证对象与证据类型,便于在量产验证计划中直接映射测试用例。

R-Car 座舱ADAS 分层验证边界 纵向:执行域 横向:验证关注点(接口 / 时序 / 安全机制 / 故障注入) 接口边界 时序边界 安全机制边界 故障注入边界 Hypervisor CPU/内存/外设虚拟化 中断路由与隔离 vCPU 寄存器上下文 共享内存映射表 虚拟中断号映射 VM 启动时序 中断延迟抖动 调度切换时间 内存隔离(MMU/SMMU) 外设访问权限 VM 异常隔离 非法 MMIO 访问 VM 崩溃注入 中断风暴 QNX 安全域 仪表/ADAS 感知 安全逻辑与仲裁 POSIX 消息队列 共享内存 Ring Buffer 安全信号接口 感知→决策周期 看门狗喂狗窗口 端到端延迟预算 E2E 保护(CRC/计数) 安全状态切换 降级策略触发 信号丢失/超时 CRC 错误注入 看门狗超时 Android / Linux HMI/多媒体/日志 应用生态与 OTA Binder/Socket 接口 HAL 接口 显示/音频通路 应用启动时间 渲染帧率 音频延迟 沙箱隔离 权限控制 资源配额 应用崩溃 内存泄漏 CPU 抢占 AUTOSAR AP/CP SOA 通信/执行管理 硬实时与安全监控 SOME/IP 服务接口 DDS 主题 CP PDU 接口 服务发现时间 方法调用周期 CP 任务抖动 E2E Profile Watchdog Manager 安全状态管理 服务不可用 PDU 丢失 任务超时 功能安全岛 看门狗/时钟/电压监控 安全状态切换 安全岛寄存器接口 心跳信号接口 复位控制接口 心跳超时窗口 复位响应时间 安全状态进入时间 独立时钟源 电压监控阈值 安全输出关断 心跳停止 电压跌落 时钟漂移 虚拟化层 安全域 应用域 实时域 监控域 注:每个交叉格为独立验证边界,需明确主验证域、协同验证域与证据类型

三、各层验证对象与关键判据

Hypervisor 层的验证对象是虚拟化正确性与隔离性。接口边界检查 vCPU 寄存器上下文保存/恢复是否完整、共享内存映射表是否越界、虚拟中断号是否正确路由。时序边界关注 VM 启动顺序与中断延迟抖动,量产中通常要求中断延迟抖动不超过设定预算(示例:安全域中断延迟抖动 ≤ 50 μs,需以实际平台标定为准)。安全机制边界验证 MMU/SMMU 隔离是否生效,故障注入边界则主动注入非法 MMIO 访问与 VM 崩溃,确认隔离域不受影响。

QNX 安全域是座舱 ADAS 的核心验证域。接口边界检查 POSIX 消息队列与共享内存 Ring Buffer 的数据完整性;时序边界验证感知到决策的端到端延迟是否在预算内(示例:AEB 触发链路端到端延迟 ≤ 100 ms,属合理假设,需按项目安全目标确定);安全机制边界验证 E2E 保护(CRC、计数器、超时)与安全状态切换;故障注入边界注入信号丢失、CRC 错误与看门狗超时,确认降级策略按预期触发。

Android/Linux 应用域的验证重点是接口稳定性与资源隔离。接口边界检查 Binder/Socket 与 HAL 接口的兼容性;时序边界关注应用启动时间、渲染帧率与音频延迟;安全机制边界验证沙箱隔离与权限控制;故障注入边界注入应用崩溃、内存泄漏与 CPU 抢占,确认不影响安全域运行。需要特别注意的是,Android 侧的功能通常不直接承担安全目标,但其资源占用可能间接影响 QNX 安全域的时序,因此必须验证跨域资源竞争场景。

AUTOSAR AP/CP 层的验证对象是服务通信与实时任务。接口边界检查 SOME/IP 服务接口、DDS 主题与 CP PDU 接口;时序边界验证服务发现时间、方法调用周期与 CP 任务抖动;安全机制边界验证 E2E Profile 与 Watchdog Manager;故障注入边界注入服务不可用、PDU 丢失与任务超时。AP 与 CP 的边界尤其重要:AP 侧服务调用若跨到 CP 侧,必须确认端到端保护配置一致,否则会出现“单侧 CRC 通过、对侧校验失败”的隐蔽故障。

功能安全岛是独立监控域,验证对象是监控机制本身。接口边界检查安全岛寄存器、心跳信号与复位控制接口;时序边界验证心跳超时窗口、复位响应时间与安全状态进入时间;安全机制边界验证独立时钟源、电压监控阈值与安全输出关断;故障注入边界注入心跳停止、电压跌落与时钟漂移,确认安全岛能独立于主域完成安全状态切换。

四、跨域验证的边界判定规则

实际项目中,跨域故障最容易出现责任不清。建议采用以下判定规则:第一,若故障现象出现在应用层,但根因在通信链路,则主验证域为通信链路所属域,应用域仅提供复现证据;第二,若安全功能降级由非安全域资源竞争引发,则主验证域为安全域,但需在非安全域补充资源限制测试;第三,若安全岛触发复位,需同时验证主域是否进入预期安全状态,避免“安全岛动作正确、主域未响应”的边界漏洞。

量产验证建议:在验证计划中为每个交叉边界明确三件事——主验证域、协同验证域、证据类型(接口日志、时序波形、故障注入记录、安全状态快照)。这样在出现跨域问题时,可以快速定位责任边界,避免反复复测。

常见误区:把 Hypervisor 的隔离测试等同于安全域的功能安全测试。Hypervisor 只保证分区隔离,不保证分区内安全逻辑的正确性;安全域的功能安全仍需在 QNX 侧独立验证,两者证据不可互相替代。

综上,R-Car 座舱 ADAS 的分层验证边界应以安全目标归属为主轴,以数据流路径为协同线索,在 Hypervisor、QNX、Android/Linux、AUTOSAR AP/CP 与功能安全岛之间建立清晰的验证责任矩阵。只有边界清晰,后续的测试用例设计、故障注入与量产放行才有可追溯的证据链。