Google 致力于为黑人社区推动种族平等。查看具体举措

参考平台

通过一个名为 trout 的新产品,Android Automotive (AAOS) 现在支持在符合 VirtIO 标准的环境中作为客户机虚拟机进行部署。trout 基于 Cuttlefish 虚拟参考平台,并以 trout 设备配置的形式提供。用户空间源代码位于 device/google/trout。下表介绍了用于虚拟化 trout 中的每个子系统的技术。

AAOS 平台团队已使用 Lantronix 参考硬件以及 OpenSynergy 提供的 COQOS Hypervisor SDK 在 Qualcomm SA8155P 芯片组上开发并验证了初始参考平台版本 0.9。
功能 技术
音频控制 HAL vsock/gRPC
音频 HAL virtio-snd
转储状态 HAL vsock/gRPC
增强型视觉系统 (EVS) virtio-video and vendor extensions
车库模式 vsock/gRPC
图形 virtio-gpu
传感器 HAL 2.0 virtio-scmi and IIO
触摸屏输入 virtio-input
车载 HAL vsock/gRPC

扩展 trout

您可以将 trout 用作起点来创建新的车载信息娱乐系统 (IVI) Android 目标。构建基础架构设计为具有扩展和自定义能力。例如:

# Inherit trout-arm64 default values and settings
$(call inherit-product, device/google/trout/aosp_trout_arm64.mk)

# Customize HALs as needed LOCAL_VHAL_PRODUCT_PACKAGE := vendor.oem.vhal@2.0-service LOCAL_AUDIO_PRODUCT_PACKAGE := vendor.oem.audio@6.0-impl
# Configure SELinux policy BOARD_SEPOLICY_DIRS += device/oem/car/sepolicy/vendor/oem
# Configure properties LOCAL_DUMPSTATE_PROPERTIES := \ ro.vendor.dumpstate.server.cid=22 \ ro.vendor.dumpstate.server.port=406 \ ro.vendor.helpersystem.log_loc=/data/dumpstate
[... and more as needed ...]

多个 Android HAL 可单独替换为自定义实现,也可保留默认实现,但应调整某些配置参数,以在目标环境中建立适当的虚拟机间通信。这些 HAL(包括车载 HAL、音频控制 HAL 和转储状态 HAL)是通过 gRPC 接口实现的,该接口由 AAOS 客户机与提供底层功能实现的主机系统之间的 vsock 连接提供支持。必须通过提供适当的 vsock 连接参数作为供应商属性来配置这些 HAL。

构建 trout

编译用户空间

如需编译用户空间,请执行以下操作:

  1. 下载 Android 源代码树:
    repo init -u https://android.googlesource.com/platform/manifest -b master
    repo sync -j8
    
  2. 构建环境:
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

构建内核

对于初始参考平台版本 0.9,由于 Hypervisor 配置限制,无法自定义 Android 内核。一个预构建的内核将作为 OpenSynergy Hypervisor 版本的一部分提供。该内核基于 Android 通用内核分支 common-android11-5.4,并进行了一些修改以纳入最新的 VirtIO 驱动程序。为了供您参考,我们在以下位置提供了相应的内核源代码:

合规性

我们计划在以后的版本中实现 100% 的兼容性。

trout 中的限制和不受支持的元素

  • 蓝牙
  • 全球导航卫星系统 (GNSS)
  • LaunchCVD - trout 目前无法在 crosvm 下启动。
  • 图形 - 在此版本中,只有在 dmabuf 处于停用状态时,VirtIO GPU virgl 设备才能运行。界面会显示红色和蓝色的反色。