Referenzplattform

Durch ein neues Produkt namens trout bietet Android Automotive (AAOS) jetzt Unterstützung für die Bereitstellung als virtuelle Gastmaschine (VM) in Umgebungen, die mit dem VirtIO- Standard kompatibel sind. trout basiert auf der virtuellen Referenzplattform Cuttlefish und ist als trout Gerätekonfiguration verfügbar. Den Userspace-Quellcode finden Sie unter device/google/trout . In der folgenden Tabelle wird die Technologie beschrieben, die zur Virtualisierung der einzelnen Subsysteme in trout verwendet wird.

Besonderheit Technologie
Audiosteuerung HAL vsock/gRPC
Audio-HAL virtio-snd
Bluetooth virtio-console
Dumpstate HAL vsock/gRPC
Erweitertes Ansichtssystem (EVS) virtio-video
Garagenmodus vsock/gRPC
Grafik virtio-gpu
Globales Navigationssatellitensystem (GNSS) virtio-console
Sensor HAL 2.0 virtio-scmi and IIO
Touchscreen-Eingabe virtio-input
Fahrzeug HAL vsock/gRPC

Forelle verlängern

trout kann als Ausgangspunkt für die Erstellung neuer Android-Ziele für In-Vehicle Infotainment (IVI) verwendet werden. Die Build-Infrastruktur ist so konzipiert, dass sie erweitert und angepasst werden kann. Zum Beispiel:

# 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 ...]

Mehrere Android-HALs können einzeln durch benutzerdefinierte Implementierungen ersetzt werden, oder die Standardimplementierungen können beibehalten, aber bestimmte Konfigurationsparameter angepasst werden, um eine ordnungsgemäße Kommunikation zwischen VMs in der Zielumgebung herzustellen. Diese HALs (einschließlich Vehicle HAL, Audio Control HAL und Dumpstate HAL) werden mithilfe einer gRPC-Schnittstelle implementiert, die durch eine vsock Verbindung zwischen dem AAOS-Gast und einem Hostsystem unterstützt wird, das die zugrunde liegende Funktionsimplementierung bereitstellt. Diese müssen durch die Bereitstellung der richtigen vsock Verbindungsparameter als Anbietereigenschaften konfiguriert werden. Der Quellcode fungiert als ultimative Grundwahrheit darüber, welche Eigenschaften für die Konfiguration und deren Semantik verfügbar sind.

Forelle bauen

Kompilieren Sie den Userspace

So kompilieren Sie den Userspace:

  1. Laden Sie den Android-Quellbaum herunter:
    repo init -u https://android.googlesource.com/platform/manifest -b main
    repo sync -j8
    
  2. Erstellen Sie die Umgebung:
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

Erstellen Sie den Kernel

Für trout 1.1 wird die Kernel-Codebasis in AOSP bereitgestellt. Der trout Kernel besteht aus dem gleichen Code wie das Upstream-ACK 5.10, mit zusätzlichen trout -spezifischen Modulen für VirtIO-Subsysteme.

  1. Um den Kernel zu klonen, führen Sie Folgendes aus:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. Um den Kernel zu erstellen, führen Sie Folgendes aus:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

Ihr Hypervisor-Anbieter benötigt möglicherweise eine andere Kernel-Konfiguration oder zusätzliche Module, die kompiliert werden müssen. Befolgen Sie unbedingt diese spezifischen Anweisungen, sofern vorhanden.

Einhaltung

Wenn AAOS als Gast-VM ausgeführt wird, ist es unser Ziel, aus Framework-Perspektive eine kompatible Android-Bereitstellung zu sein. Hostseitige Probleme fallen in den Zuständigkeitsbereich jeder Implementierung und liegen außerhalb des Geltungsbereichs von trout 1.1.

Wir haben keine zusätzliche xTS-Validierung für trout 1.1 durchgeführt. Weitere Informationen finden Sie in der folgenden Diskussion zur CTS-Unterstützung in trout 1.0.

In trout 1.0 bleiben mehrere CTS-Probleme bestehen. Es ist bekannt, dass die folgenden CTS-Module Testfehler enthalten:

CtsStagedInstallHostTestCases
CtsRollbackManagerHostTestCases
CtsVideoTestCases
CtsHostsideNetworkTests
CtsActivityManagerBackgroundActivityTestCases
CtsAdbHostTestCases
CtsNativeHardwareTestCases
CtsContentTestCases
CtsCarHostTestCases
CtsOsTestCases
CtsStatsdHostTestCases
CtsVoiceInteractionTestCases
CtsViewTestCases
CtsCameraTestCases
CtsLocationGnssTestCases
CtsGraphicsTestCases
CtsIncidentHostTestCases
CtsInstallHostTestCases
CtsNativeVerifiedBootTestCases
CtsNetTestCases
CtsWindowManagerDeviceTestCases
CtsMediaStressTestCases
CtsAppTestCases
CtsUsbTests
CtsAutoFillServiceTestCases
CtsDisplayTestCases
CtsMediaTestCases
CtsDeqpTestCases
CtsDumpsysHostTestCases
CtsOpenGLTestCasesCtsLibcoreTestCases
CtsSecurityHostTestCases
CtsInputMethodTestCases
CtsStatsdAtomHostTestCases
CtsPermission4TestCases
CtsNNAPIBenchmarkTestCases
CtsSimpleperfTestCases
CtsAccessibilityTestCases
CtsAppSecurityHostTestCases
CtsKeystoreTestCases

Es ist bekannt, dass in den folgenden CTS-V-Bereichen Testfehler auftreten:

Car Launcher-Test
Bluetooth Low Energy (BLE) Advertiser-Test
Überprüfung der Streaming-Videoqualität
Bluetooth-HID-Gerätetest
Hifi-Ultraschall-Mikrofontest
Hifi-Ultraschall-Lautsprechertest
Entsperrtes Gerät erforderlicher Test
Dynamischer Sensorerkennungstest
Off-Body-Sensor-Test
Signifikanter Bewegungstest
Audioausgangs-Routing-Benachrichtigungstest
Netzwerkanfrage- oder Vorschlagstest

Versionshinweise

trout 1.1 enthält die folgenden bekannten Probleme:

  • Benutzerversionen von trout sind nicht verfügbar. Das System ist als -userdebug aufgebaut, was sich auf einige CTS-Tests auswirken kann.
  • Android Verified Boot (AVB) wird nicht unterstützt.
  • Einige Android-Subsysteme sind möglicherweise nicht verfügbar, darunter Secure World und NNHAL.
  • Der Zugang zum Gastnetzwerk erfolgt in der Regel über einen virtualisierten WLAN-Adapter und einen virtio-net Tunnel. Die hostseitige Konnektivität hängt von Ihrer spezifischen Hypervisor-Bereitstellung ab.
  • Einige Implementierungen bieten möglicherweise eingeschränkte oder keine Bluetooth-Funktion.
  • Eine VHAL-Ereignisinjektion funktioniert bei einigen Sensoren möglicherweise nicht.
  • Einige hohe Arbeitslasten können zu Störungen bei der Audiowiedergabe führen.
  • In einigen Implementierungen kann der ADB-Neustart des AAOS-Gasts das gesamte System neu starten.
  • STS kann zu Systeminstabilität führen und einen Neustart erfordern.

Weitere Einzelheiten finden Sie in den Versionshinweisen des Partners für Ihre spezifische trout -Bereitstellung.