Referenzplattform

Mit einem neuen Produkt namens trout unterstützt Android Automotive (AAOS) jetzt die Bereitstellung als Gast-VM (virtuelle Maschine) in Umgebungen, die mit dem VirtIO Standard kompatibel sind. trout basiert auf der virtuellen Referenzplattform Cuttlefish und ist als Gerätekonfiguration trout verfügbar. Der Quellcode für den Nutzerbereich befindet sich unter device/google/trout. In der folgenden Tabelle wird die Technologie beschrieben, die zum Virtualisieren der einzelnen Subsysteme in trout verwendet wird.

Funktion Technologie
Audio Control HAL vsock/gRPC
Audio HAL virtio-snd
Bluetooth virtio-console
Dumpstate HAL vsock/gRPC
Extended View System (EVS) virtio-video
Garagenmodus vsock/gRPC
Grafik virtio-gpu
Globales Navigationssatelliten system (GNSS) virtio-console
Sensor HAL 2.0 virtio-scmi and IIO
Touchscreen-Eingabe virtio-input
Fahrzeug-HAL vsock/gRPC

`trout` erweitern

trout kann als Ausgangspunkt zum Erstellen neuer Android-Ziele für Infotainmentsysteme im Fahrzeug verwendet werden. Die Build-Infrastruktur ist so konzipiert, dass sie erweitert und angepasst werden kann. 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. Alternativ können die Standardimplementierungen beibehalten, aber bestimmte Konfigurationsparameter angepasst werden, um eine ordnungsgemäße VM-übergreifende Kommunikation in der Zielumgebung zu ermöglichen. Diese HALs (einschließlich Fahrzeug-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 konfiguriert werden, indem die entsprechenden vsock-Verbindungsparameter als Anbietereigenschaften angegeben werden. Der Quellcode ist die ultimative Informationsquelle für die verfügbaren Konfigurationseigenschaften und deren Semantik.

`trout` erstellen

Nutzerbereich kompilieren

So kompilieren Sie den Nutzerbereich:

  1. Laden Sie die Android-Quellstruktur 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
    

Kernel erstellen

Für trout 1.1 wird die Kernel-Codebasis in AOSP bereitgestellt. Der trout Kernel besteht aus demselben Code wie der Upstream-ACK 5.10, ergänzt um trout-spezifische Module für VirtIO-Subsysteme.

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

Ihr Hypervisor-Anbieter hat möglicherweise eine andere Kernel-Konfiguration oder zusätzliche Module, die kompiliert werden müssen. Folgen Sie gegebenenfalls dieser spezifischen Anleitung.

Compliance

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

Wir haben keine zusätzliche xTS-Validierung für trout 1.1 durchgeführt. Beachten Sie weiterhin die folgende Diskussion zur CTS-Unterstützung in trout 1.0.

In trout 1.0 bestehen weiterhin mehrere CTS-Probleme. Die folgenden CTS-Module enthalten bekanntermaßen Testfehler:

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

Die folgenden CTS-V-Bereiche enthalten bekanntermaßen Testfehler:

Car Launcher-Test
Bluetooth Low Energy (BLE) Advertiser-Test
Streaming Video Quality Verifier
Bluetooth HID Device-Test
Hifi Ultrasound Microphone-Test
Hifi Ultrasound Speaker-Test
Test „Entsperrtes Gerät erforderlich“
Test „Dynamische Sensorenerkennung“
Test „Sensor außerhalb des Körpers“
Test „Erhebliche Bewegung“
Test „Benachrichtigung zur Audioausgaberouting“
Test „Netzwerkanfrage oder -vorschlag“

Versionshinweise

trout 1.1 enthält die folgenden bekannten Probleme:

  • Nutzer-Builds von trout sind nicht verfügbar. Das System wird als -userdebug, was sich auf einige CTS-Tests auswirken kann, erstellt.
  • Android Verified Boot (AVB) wird nicht unterstützt.
  • Einige Android-Subsysteme sind möglicherweise nicht verfügbar, darunter Secure World und NNHAL.
  • Der Gastnetzwerkzugriff wird in der Regel über einen virtualisierten WLAN-Adapter und einen virtio-net Tunnel bereitgestellt. Die Konnektivität auf Hostseite hängt von Ihrer spezifischen Hypervisor-Bereitstellung ab.
  • Einige Implementierungen bieten möglicherweise nur eingeschränkte oder keine Bluetooth-Funktionen.
  • Die VHAL-Ereigniseinfügung funktioniert möglicherweise nicht für einige Sensoren.
  • Bei einigen hohen Arbeitslasten kann es zu Fehlern bei der Audiowiedergabe kommen.
  • In einigen Implementierungen kann ein Neustart des AAOS-Gasts über adb das gesamte System neu starten.
  • STS kann zu Systeminstabilität führen und einen Neustart erfordern.

Weitere Informationen finden Sie in den Versionshinweisen für Partner für Ihre spezifische Bereitstellung von trout.