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 . Die folgende Tabelle beschreibt die Technologie, die verwendet wird, um jedes der Subsysteme in trout zu virtualisieren.

Feature Technologie
Audiosteuerung 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 Satellitennavigationssystem (GNSS) virtio-console
Sensor HAL 2.0 virtio-scmi and IIO
Touchscreen-Eingabe virtio-input
Fahrzeug HAL vsock/gRPC

Forelle ausdehnen

trout kann als Ausgangspunkt verwendet werden, um neue Android-Ziele für In-Vehicle Infotainment (IVI) zu erstellen. 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 oder die Standardimplementierungen beibehalten, aber bestimmte Konfigurationsparameter angepasst werden, um eine ordnungsgemäße Kommunikation zwischen VMs in der Zielumgebung herzustellen. Diese HALs (einschließlich Fahrzeug-HAL, Audiosteuerungs-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 richtigen vsock Verbindungsparameter als Herstellereigenschaften bereitgestellt werden.

Forelle bauen

Kompilieren Sie den Benutzerbereich

Um den Userspace zu kompilieren:

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

Aufbau des Kernels

Für trout 1.0 wird die Kernel-Codebasis in AOSP bereitgestellt. Der trout -Kernel besteht aus dem gleichen Code wie das Upstream-ACK 5.10, mit dem Zusatz von 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 für die OpenSynergy-Umgebung zu erstellen, führen Sie Folgendes aus:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

Beachtung

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

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

CtsStagedInstallHostTestCases
CtsRollbackManagerHostTestfälle
CtsVideoTestCases
CtsHostsideNetworkTests
CtsActivityManagerBackgroundActivityTestfälle
CtsAdbHostTestfälle
CtsNativeHardwareTestCases
CtsContentTestCases
CtsCarHostTestfälle
CtsOsTestCases
CtsStatsdHostTestCases
CtsVoiceInteractionTestCases
CtsViewTestCases
CtsCameraTestCases
CtsLocationGnssTestfälle
CtsGraphicsTestfälle
CtsIncidentHostTestCases
CtsInstallHostTestCases
CtsNativeVerifiedBootTestCases
CtsNetTestCases
CtsWindowManagerDeviceTestCases
CtsMediaStressTestCases
CtsApp-Testfälle
CtsUsbTests
CtsAutoFillServiceTestfälle
CtsDisplayTestfälle
CtsMediaTestCases
CtsDeqpTestCases
CtsDumpsysHostTestfälle
CtsOpenGLTestCasesCtsLibcoreTestCases
CtsSecurityHostTestCases
CtsInputMethodTestfälle
CtsStatsdAtomHostTestfälle
CtsPermission4TestCases
CtsNNAPIBenchmarkTestfälle
CtsSimpleperfTestCases
CtsAccessibilityTestCases
CtsAppSecurityHostTestfälle
CtsKeystoreTestfälle

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

Auto-Launcher-Test
Bluetooth Low Energy (BLE) Werbetreibendentest
Überprüfung der Streaming-Videoqualität
Bluetooth-HID-Gerätetest
Hifi Ultraschallmikrofon Test
Hifi-Ultraschall-Lautsprechertest
Erforderlicher Test für entsperrtes Gerät
Dynamischer Sensorerkennungstest
Off-Body-Sensor-Test
Signifikanter Bewegungstest
Audioausgabe-Routing-Benachrichtigungstest
Netzwerkanforderungs- oder Vorschlagstest

Versionshinweise

trout 1.0 enthält die folgenden bekannten Probleme:

  • Benutzer-Builds von trout sind nicht verfügbar. Das System ist als -userdebug , was sich auf einige CTS-Tests auswirken kann.
  • Der Zugriff auf TrustZone für Android wird in trout 1.0 nicht unterstützt.
  • Android Verified Boot (AVB) wird nicht unterstützt.
  • Neuronale Beschleuniger sind NNAPI in trout 1.0 nicht ausgesetzt.
  • Wi-Fi-Virtualisierung ist nicht verfügbar, wobei einige Implementierungen eingeschränkte Unterstützung für einen „virtio-net“-Tunnel bieten.
  • In einigen Fällen kann die Übertragung großer Dateien von oder zu Android über die Android Debug Bridge (ADB) dazu führen, dass das System hängen bleibt.
  • In einigen Fällen wird die SMS-App möglicherweise nicht mehr mit einem gekoppelten Bluetooth-Telefon synchronisiert.
  • Eine VHAL-Ereignisinjektion funktioniert möglicherweise bei einigen Sensoren nicht.
  • Die ADB-Seriennummer des zugrunde liegenden SoC wird nicht als ADB-Seriennummer des Gasts an Android weitergeleitet.
  • Bei manchen Implementierungen steht Ethernet dem Host möglicherweise nicht für die Netzwerkkonnektivität zur Verfügung.

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

,

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 . Die folgende Tabelle beschreibt die Technologie, die verwendet wird, um jedes der Subsysteme in trout zu virtualisieren.

Feature Technologie
Audiosteuerung 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 Satellitennavigationssystem (GNSS) virtio-console
Sensor HAL 2.0 virtio-scmi and IIO
Touchscreen-Eingabe virtio-input
Fahrzeug HAL vsock/gRPC

Forelle ausdehnen

trout kann als Ausgangspunkt verwendet werden, um neue Android-Ziele für In-Vehicle Infotainment (IVI) zu erstellen. 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 oder die Standardimplementierungen beibehalten, aber bestimmte Konfigurationsparameter angepasst werden, um eine ordnungsgemäße Kommunikation zwischen VMs in der Zielumgebung herzustellen. Diese HALs (einschließlich Fahrzeug-HAL, Audiosteuerungs-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 richtigen vsock Verbindungsparameter als Herstellereigenschaften bereitgestellt werden.

Forelle bauen

Kompilieren Sie den Benutzerbereich

Um den Userspace zu kompilieren:

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

Aufbau des Kernels

Für trout 1.0 wird die Kernel-Codebasis in AOSP bereitgestellt. Der trout -Kernel besteht aus dem gleichen Code wie das Upstream-ACK 5.10, mit dem Zusatz von 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 für die OpenSynergy-Umgebung zu erstellen, führen Sie Folgendes aus:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

Beachtung

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

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

CtsStagedInstallHostTestCases
CtsRollbackManagerHostTestfälle
CtsVideoTestCases
CtsHostsideNetworkTests
CtsActivityManagerBackgroundActivityTestfälle
CtsAdbHostTestfälle
CtsNativeHardwareTestCases
CtsContentTestCases
CtsCarHostTestfälle
CtsOsTestCases
CtsStatsdHostTestCases
CtsVoiceInteractionTestCases
CtsViewTestCases
CtsCameraTestCases
CtsLocationGnssTestfälle
CtsGraphicsTestfälle
CtsIncidentHostTestCases
CtsInstallHostTestCases
CtsNativeVerifiedBootTestCases
CtsNetTestCases
CtsWindowManagerDeviceTestCases
CtsMediaStressTestCases
CtsApp-Testfälle
CtsUsbTests
CtsAutoFillServiceTestfälle
CtsDisplayTestfälle
CtsMediaTestCases
CtsDeqpTestCases
CtsDumpsysHostTestfälle
CtsOpenGLTestCasesCtsLibcoreTestCases
CtsSecurityHostTestCases
CtsInputMethodTestfälle
CtsStatsdAtomHostTestfälle
CtsPermission4TestCases
CtsNNAPIBenchmarkTestfälle
CtsSimpleperfTestCases
CtsAccessibilityTestCases
CtsAppSecurityHostTestfälle
CtsKeystoreTestfälle

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

Auto-Launcher-Test
Bluetooth Low Energy (BLE) Werbetreibendentest
Überprüfung der Streaming-Videoqualität
Bluetooth-HID-Gerätetest
Hifi Ultraschallmikrofon Test
Hifi-Ultraschall-Lautsprechertest
Erforderlicher Test für entsperrtes Gerät
Dynamischer Sensorerkennungstest
Off-Body-Sensor-Test
Signifikanter Bewegungstest
Audioausgabe-Routing-Benachrichtigungstest
Netzwerkanforderungs- oder Vorschlagstest

Versionshinweise

trout 1.0 enthält die folgenden bekannten Probleme:

  • Benutzer-Builds von trout sind nicht verfügbar. Das System ist als -userdebug , was sich auf einige CTS-Tests auswirken kann.
  • Der Zugriff auf TrustZone für Android wird in trout 1.0 nicht unterstützt.
  • Android Verified Boot (AVB) wird nicht unterstützt.
  • Neuronale Beschleuniger sind NNAPI in trout 1.0 nicht ausgesetzt.
  • Wi-Fi-Virtualisierung ist nicht verfügbar, wobei einige Implementierungen eingeschränkte Unterstützung für einen „virtio-net“-Tunnel bieten.
  • In einigen Fällen kann die Übertragung großer Dateien von oder zu Android über die Android Debug Bridge (ADB) dazu führen, dass das System hängen bleibt.
  • In einigen Fällen wird die SMS-App möglicherweise nicht mehr mit einem gekoppelten Bluetooth-Telefon synchronisiert.
  • Eine VHAL-Ereignisinjektion funktioniert möglicherweise bei einigen Sensoren nicht.
  • Die ADB-Seriennummer des zugrunde liegenden SoC wird nicht als ADB-Seriennummer des Gasts an Android weitergeleitet.
  • Bei manchen Implementierungen steht Ethernet dem Host möglicherweise nicht für die Netzwerkkonnektivität zur Verfügung.

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