Referenzplattform

Über ein neues 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 trout-Gerätekonfiguration verfügbar. Den Quellcode für den Userspace finden Sie unter device/google/trout. In der folgenden Tabelle wird die Technologie beschrieben, mit der die einzelnen Subsysteme in trout virtualisiert werden.

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
Global Navigation Satellite System (GNSS) virtio-console
Sensor HAL 2.0 virtio-scmi and IIO
Touchscreen-Eingabe virtio-input
Fahrzeug-HAL vsock/gRPC

Extend trout

trout kann als Ausgangspunkt für die Erstellung neuer Android-IVi-Ziele (In-Vehicle Infotainment) verwendet werden. Die Build-Infrastruktur kann erweitert und angepasst werden. 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 oder die Standardimplementierungen beibehalten, aber bestimmte Konfigurationsparameter angepasst werden, um eine ordnungsgemäße VM-Kommunikation in der Zielumgebung herzustellen. Diese HALs (einschließlich Vehicle HAL, Audio Control HAL und Dumpstate HAL) werden über eine gRPC-Schnittstelle implementiert, die von einer 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 richtigen vsock-Verbindungsparameter als Anbietereigenschaften angegeben werden. Der Quellcode ist die ultimative Quelle für Informationen dazu, welche Properties für die Konfiguration verfügbar sind und welche Bedeutung sie haben.

Build trout

Userspace kompilieren

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. Umgebung erstellen:
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

Kernel erstellen

Für trout 1.1 wird die Kernel-Codebase 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 zum Klonen des Kernels Folgendes aus:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. Führen Sie zum Erstellen des Kernels Folgendes aus:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

Möglicherweise ist für Ihren Hypervisor eine andere Kernelkonfiguration erforderlich oder es müssen zusätzliche Module kompiliert werden. Beachten Sie gegebenenfalls die spezifischen Hinweise.

Compliance

Wenn AAOS als Gast-VM ausgeführt wird, ist unser Ziel eine kompatible Android-Bereitstellung aus der Perspektive des Frameworks. Hostseitige Probleme liegen in der Zuständigkeit der jeweiligen Implementierung und fallen nicht in den Geltungsbereich von trout 1.1.

Wir haben keine zusätzliche xTS-Validierung für trout 1.1 durchgeführt. Lesen Sie weiter unten die Informationen zum CTS-Support in trout 1.0.

In trout 1.0 sind noch einige CTS-Probleme vorhanden. Bei den folgenden CTS-Modulen sind Testfehler bekannt:

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

In den folgenden CTS-V-Bereichen treten bekanntermaßen Testfehler auf:

Test für Auto-Launcher
Bluetooth Low Energy (BLE)-Werbetreibender-Test
Streaming Video Quality Verifier
Bluetooth HID-Gerätetest
Hifi-Ultraschallmikrofontest
Hifi-Ultraschalllautsprechertest
Test, ob das Gerät entsperrt ist
Test der dynamischen Sensorerkennung
Test des Sensors außerhalb des Körpers
Test für signifikante Bewegungen
Test der Benachrichtigung zum Audioausgabe-Routing
Test für Netzwerkanfragen oder -vorschläge

Versionshinweise

trout 1.1 enthält die folgenden bekannten Probleme:

  • Nutzerversionen 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 Zugriff auf das 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 nur eingeschränkte oder gar keine Bluetooth-Funktionen.
  • Die VHAL-Ereignis-Injection funktioniert bei einigen Sensoren möglicherweise nicht.
  • Bei einigen hohen Arbeitslasten kann es zu Audiowiedergabefehlern kommen.
  • Bei einigen Implementierungen kann der Neustart des AAOS-Gasts mit adb das gesamte System neu starten.
  • STS kann zu Systeminstabilität führen und einen Neustart erfordern.

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