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 |
Forellen 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.
Forellen bauen
Kompilieren Sie den Userspace
So kompilieren Sie den Userspace:
- Laden Sie den Android-Quellbaum herunter:
repo init -u https://android.googlesource.com/platform/manifest -b main repo sync -j8
- Erstellen Sie die Umgebung:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
Aufbau des Kernels
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.
- 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
- 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.