Referenzplattform

Android Automotive (AAOS) unterstützt jetzt das neue Produkt trout für die Bereitstellung als virtuelle Gastmaschine in Umgebungen, die mit der VirtIO Standard. trout basiert auf dem Tintenfisch virtuelle Referenzplattform und ist als trout-Gerätekonfiguration verfügbar. Die Den Userspace-Quellcode findest du unter device/google/trout. Tabelle wird unten die Technologie beschrieben, die zur Virtualisierung der einzelnen Subsysteme in trout verwendet wird.

Funktion Technologie
Hal für Audiosteuerung vsock/gRPC
Audio-HAL virtio-snd
Bluetooth virtio-console
Dumpstate-HAL vsock/gRPC
Extended View System (EVS) virtio-video
Garagemodus vsock/gRPC
Grafik virtio-gpu
Globaler Navigationssatent (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 eines neuen Infotainmentsystems (IVI) verwendet werden Android-Ziele 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. Standardimplementierungen beibehalten, aber bestimmte Konfigurationsparameter angepasst, um Kommunikation zwischen VMs in der Zielumgebung funktioniert. Diese HALs (einschließlich Fahrzeug-HAL, Audio Control HAL und Dumpstate HAL) werden mithilfe einer gRPC-Schnittstelle implementiert, die von einem vsock-Verbindung zwischen dem AAOS-Gast und einem Hostsystem, das den Implementierung der zugrunde liegenden Funktion. Diese müssen so konfiguriert werden, dass die richtigen vsock-Verbindungsparameter als Anbietereigenschaften. Der Quellcode fungiert als ultimative gibt an, welche Attribute für die Konfiguration verfügbar sind und welche Semantik es gibt.

Forelle aufbauen

Userspace kompilieren

So kompilieren Sie den Userspace:

  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. Das trout Kernel besteht aus dem gleichen Code wie der vorgelagerte ACK 5.10, mit dem Zusatz von trout-spezifische Module für VirtIO-Subsysteme.

  1. Führen Sie 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 folgenden Befehl aus, um den Kernel zu erstellen:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

Möglicherweise hat Ihr Hypervisor-Anbieter eine andere Kernel-Konfiguration oder zusätzliche Module, die kompiliert werden müssen. Befolge diese spezifischen Anweisungen, sofern vorhanden.

Compliance

Wenn AAOS als Gast-VM ausgeführt wird, ist es unser Ziel, eine kompatible Android-Bereitstellung vom Framework-Perspektive. Hostseitige Probleme betreffen jede Implementierung und außerhalb des von trout 1.1.

Wir haben keine zusätzliche xTS-Validierung für trout 1.1 durchgeführt. Weiter , um sich auf die Diskussion unten zum CTS-Support in trout 1.0 zu beziehen.

In trout 1.0 bestehen weiterhin mehrere CTS-Probleme. Die folgenden CTS-Module sind bekannt für Testfehler einschließen:

CtsStagedInstallHostTestCases
CtsRollbackManagerHostTestCases
CtsVideoTestCases
CtsHostsideNetworkTests
CtsActivityManagerBackgroundActivityTestCases
CtsAdbHostTestfälle
CtsNativeHardwareTestCases
CtsContentTestCases
CtsCarHostTestCases
CtsOsTestCases
CtsStatsdHostTestCases
CtsVoiceInteractionTestCases
CtsViewTestCases
CtsCameraTestCases
CtsLocationGnssTestCases
CtsGraphicsTestCases
CtsIncidentHostTestCases
CtsInstallHostTestCases
CtsNativeVerifiedBootTestCases
CtsNetTestCases
CtsWindowManagerDeviceTestCases
CtsMediaStressTestCases
CtsAppTestCases
Cts-Usb-Tests
CtsAutofillServiceTestCases
CtsDisplayTestCases
CtsMediaTestCases
CtsDeqpTestCases
CtsDumpsysHostTestfälle
CtsOpenGLTestCasesCtsLibcoreTestCases
CtsSecurityHostTestCases
CtsInputMethodTestCases
CtsStatsdAtomHostTestCases
CtsPermission4TestCases
CtsNNAPIBenchmarkTestCases
CtsSimpleperfTestCases
CtsAccessibilityTestCases
CtsAppSecurityHostTestCases
CtsKeystoreTestCases

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

Autostarter-Test
Bluetooth Low Energy (BLE)-Werbetreibendentest
Qualitätsprüfung für Videos
Bluetooth-HID-Gerätetest
Hi-Fi-Ultraschallmikrofontest
Hi-Fi-Ultraschalllautsprecher Test
Test auf entsperrtes Gerät erforderlich
Erkennung der dynamischen Sensoren
Absenksensortest
Signifikante Bewegungserkennung
Test für Audioausgaberouting-Benachrichtigungen
Netzwerkanfrage- oder Vorschlagstest

Versionshinweise

trout 1.1 enthält die folgenden bekannten Probleme:

  • Nutzer-Builds von trout sind nicht verfügbar. Das System ist als -userdebug, was sich auf einige CTS-Tests auswirken kann.
  • AVB (Verifizierter Bootmodus von Android) wird nicht unterstützt.
  • Einige Android-Subsysteme sind möglicherweise nicht verfügbar, z. B. Secure World und NNHAL.
  • Der Zugriff auf das Gastnetzwerk erfolgt in der Regel über einen virtualisierten WLAN-Adapter und virtio-net Tunnel. Die hostseitige Verbindung hängt von der spezifischen Hypervisor-Bereitstellung ab.
  • Bei einigen Implementierungen ist die Bluetooth-Funktion möglicherweise nur eingeschränkt oder gar nicht verfügbar.
  • Eine VHAL-Ereignisinjektion funktioniert bei einigen Sensoren möglicherweise nicht.
  • Einige hohe Arbeitslasten können zu Fehlern bei der Audiowiedergabe führen.
  • In einigen Implementierungen starten ADB-Neustarts des AAOS-Gasts möglicherweise das gesamte System neu.
  • STS kann das System instabil machen und einen Neustart erforderlich machen.

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