把汽车座舱搬进云端:C4A-metal 与 vSkipGen 如何加速 AAOS 验证

2026-07-21 34 预计阅读时间: 1 分钟
来源: cloud.google.com AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:10 分钟

软件定义汽车正在改变座舱软件的交付方式。过去,团队往往要等座舱域控制器(CDC)样机到位,才能联调 Android Automotive OS、图形界面、传感器和车载网络。Panasonic Automotive 的 vSkipGen 已在 Google Cloud C4A-metal 上完成验证,目标是把这套高度依赖硬件的流程迁移到可扩展的云端数字孪生环境。

为什么需要 Arm 裸金属座舱数字孪生

CDC 不只是运行几个车载应用。它通常要处理多屏 HMI、音频、摄像头、传感器、蓝牙、Wi-Fi 和 CAN 数据,并维持接近量产硬件的时序与性能特征。普通虚拟机虽然容易扩容,却可能缺少底层虚拟化控制能力;物理样机能提供真实环境,但数量有限、采购周期长,也不适合全球团队并行使用。

C4A-metal 在这两者之间提供了一个有针对性的选择:

  • 基于 Google Cloud 自研 Arm Axion 架构,与许多目标汽车平台采用的 Arm 软件栈更接近。
  • 单实例提供 96 个 vCPU,可选择 384 GB 或 768 GB DDR5 内存。
  • 网络带宽最高可达 100 Gbps,适合传输构建产物、测试数据和远程显示流。
  • 支持 Balanced、Extreme、Throughput 和 ML 等 Hyperdisk 类型,可按构建、回放或数据分析负载选择存储。
  • 通过 Titanium 承担多层卸载与安全相关的基础设施能力,同时保留裸金属所需的硬件级访问。

这里真正重要的不是单项规格,而是裸金属上的 KVM 能力。vSkipGen 可以据此运行接近目标 CDC 行为的完整 AAOS 软件栈,让团队在实体硬件交付前开始开发和验证。

从 Cuttlefish 到 VirtIO:虚拟 CDC 如何工作

vSkipGen 使用 Android Cuttlefish 的相关组件构建与硬件解耦的 Android 虚拟机环境。其云优化虚拟机监控器基于 crosvm,并通过 Linux KVM 获得硬件辅助虚拟化能力;后端使用 Rust 实现,以兼顾安全性、性能和扩展能力。

虚拟化边界不止覆盖 CPU 和内存。平台通过 VirtIO 呈现座舱所需的关键外设,包括:

  • GPU 与显示设备
  • 音频输入和输出
  • 摄像头与传感器
  • CAN 接口
  • 蓝牙与 Wi-Fi

对上层 AAOS 软件而言,这些设备仍通过标准化接口出现。因此,同一套生产意图代码可以在云端启动,并通过软件在环(SiL)环境或汽车模拟器注入场景。团队可以并行创建多个隔离的 CDC 实例,对启动流程、应用行为、总线消息和异常场景运行自动化测试。

需要注意,“接近目标硬件”并不意味着所有物理特性都能由云端替代。严格的实时性、电气故障、热管理、功耗、射频表现和最终硬件兼容性,仍需要硬件在环测试或实车验证。云端数字孪生更适合提前发现软件栈、接口和回归问题,从而把稀缺样机留给无法虚拟化的测试。

Unified HMI 如何解决远程图形加速

现代座舱验证不能只检查进程是否启动。开发者还需要观察动画、触控响应、多屏布局和 OpenGL ES 渲染结果,但直接在虚拟 CDC 内提供高性能 GPU 会增加环境绑定和调度复杂度。

Unified HMI 采用渲染解耦方式:轻量组件在虚拟机外截获并转发 OpenGL ES 命令,由 Google Cloud 上配备 GPU 的计算资源执行硬件加速渲染。完成后的界面通过低延迟 WebRTC 发送到标准浏览器。

这形成了三个相对独立的层次:

  1. C4A-metal 运行 AAOS、Cuttlefish、crosvm 和虚拟外设。
  2. GPU 计算资源处理图形命令,不要求座舱虚拟机绑定特定 GPU。
  3. 浏览器承载交互式显示,远程团队无需在本地部署完整座舱硬件。

Unified HMI 还提供跨多个 ECU 和虚拟机的统一虚拟显示层,使系统中的应用能够把内容渲染到不同显示目标。对多屏座舱而言,这比单纯的远程桌面更贴近实际架构。

可以这样实践:把虚拟 CDC 接入 CI

下面是一个可改造的验证脚本。这里明确作出两个假设:vSkipGen 环境向 CI 执行器提供标准 ADB 连接地址,并且测试用 AAOS 镜像已经启动。实际端点、认证方式和环境生命周期应以平台交付接口为准。

运行前修改 VSKIPGEN_ADB_ENDPOINTEXPECTED_PACKAGE

#!/usr/bin/env bash
set -euo pipefail

: "${VSKIPGEN_ADB_ENDPOINT:?Set host:port for the virtual CDC}"
: "${EXPECTED_PACKAGE:=com.example.cockpit}"

adb connect "$VSKIPGEN_ADB_ENDPOINT"
adb -s "$VSKIPGEN_ADB_ENDPOINT" wait-for-device

boot_completed="$(adb -s "$VSKIPGEN_ADB_ENDPOINT" shell getprop sys.boot_completed | tr -d '\r')"
if [[ "$boot_completed" != "1" ]]; then
  echo "AAOS has not completed boot" >&2
  exit 1
fi

if ! adb -s "$VSKIPGEN_ADB_ENDPOINT" shell pm list packages \
  | tr -d '\r' \
  | grep -Fxq "package:${EXPECTED_PACKAGE}"; then
  echo "Missing package: ${EXPECTED_PACKAGE}" >&2
  exit 1
fi

mkdir -p artifacts
adb -s "$VSKIPGEN_ADB_ENDPOINT" shell dumpsys activity > artifacts/activity.txt
adb -s "$VSKIPGEN_ADB_ENDPOINT" shell dumpsys SurfaceFlinger > artifacts/surfaceflinger.txt
adb -s "$VSKIPGEN_ADB_ENDPOINT" logcat -d -v threadtime > artifacts/logcat.txt
adb disconnect "$VSKIPGEN_ADB_ENDPOINT"

echo "Virtual CDC smoke test passed"

脚本可以放入连接到测试网络的自托管 GitHub Actions Runner。以下工作流同样基于上述假设,并要求 Runner 已安装 Android Platform Tools:

name: virtual-cdc-smoke-test

on:
  workflow_dispatch:
  push:
    branches: [main]

jobs:
  aaos-smoke:
    runs-on: [self-hosted, linux, arm64, vskipgen]
    timeout-minutes: 20
    env:
      VSKIPGEN_ADB_ENDPOINT: ${{ secrets.VSKIPGEN_ADB_ENDPOINT }}
      EXPECTED_PACKAGE: com.example.cockpit
    steps:
      - uses: actions/checkout@v4
      - name: Validate virtual cockpit
        run: bash scripts/validate-cdc.sh
      - name: Upload diagnostics
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: cdc-diagnostics
          path: artifacts/

生产流水线还应通过平台接口自动创建和销毁实例,为每次测试分配独立环境,并把 AAOS 镜像版本、VirtIO 设备配置、模拟器场景和测试结果绑定到同一个构建编号。不要把长期有效的 ADB 端点直接暴露到公网;应使用私有网络、短期凭据和最小权限访问策略。

采用时应检查什么

引入云端 CDC 虚拟化时,可以用下面的清单约束试点范围:

  • 确认 Arm 构建产物、系统镜像和目标硬件之间需要达到哪一级二进制一致性。
  • 选择一组可量化的基线,例如启动时间、关键应用存活率、帧延迟和 CAN 场景通过率。
  • 区分可由 VirtIO 或 SiL 覆盖的测试,以及必须留给硬件在环和实车的测试。
  • 评估 C4A-metal、GPU 渲染节点、Hyperdisk 和 WebRTC 流量的综合成本,而不是只看实例单价。
  • 验证测试镜像、车辆数据、日志和远程显示流的访问边界与保留策略。
  • 检查虚拟实例能否按提交或测试分片并行扩缩,并在作业结束后可靠回收。

C4A-metal 与 vSkipGen 的价值,在于把“等待样机”改成“按需启动环境”。它不会消除最终硬件验证,却能让大量 AAOS 集成、HMI 和回归测试更早进入流水线,扩大测试覆盖率,并减少昂贵实体原型成为研发瓶颈的概率。


相关推荐