Piattaforma di riferimento

Tramite un nuovo prodotto denominato trout, Android Automotive (AAOS) ora fornisce il supporto per il deployment come macchina virtuale (VM) guest in ambienti compatibili con lo standard VirtIO. trout si basa sulla piattaforma di riferimento virtuale Cuttlefish ed è disponibile come configurazione del dispositivo trout. Il codice sorgente dello spazio utente è disponibile in device/google/trout. La tabella seguente descrive la tecnologia utilizzata per virtualizzare ciascuno dei sottosistemi in trout.

Funzionalità Tecnologia
HAL di controllo audio vsock/gRPC
HAL audio virtio-snd
Bluetooth virtio-console
HAL Dumpstate vsock/gRPC
Extended View System (EVS) virtio-video
Modalità Garage vsock/gRPC
Grafica virtio-gpu
Sistema di navigazione satellitare globale (GNSS) virtio-console
HAL sensore 2.0 virtio-scmi and IIO
Input touchscreen virtio-input
Vehicle HAL vsock/gRPC

Estendi trout

trout può essere utilizzato come punto di partenza per creare nuovi target Android per In-Vehicle Infotainment (IVI). L'infrastruttura di build è progettata per essere estesa e personalizzata. Ad esempio:

# 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 ...]

Diversi HAL Android possono essere sostituiti singolarmente con implementazioni personalizzate oppure le implementazioni predefinite possono essere mantenute, ma alcuni parametri di configurazione possono essere modificati per stabilire una comunicazione inter-VM corretta nell'ambiente di destinazione. Questi HAL (inclusi Vehicle HAL, Audio Control HAL e Dumpstate HAL) vengono implementati tramite un'interfaccia gRPC supportata da una connessione vsock tra il guest AAOS e un sistema host che fornisce l'implementazione della funzionalità sottostante. Questi devono essere configurati fornendo i parametri di connessione vsock corretti come proprietà del fornitore. Il codice sorgente funge da verità di base definitiva su quali proprietà sono disponibili per la configurazione e sulla loro semantica.

Crea trout

Compila lo spazio utente

Per compilare lo spazio utente:

  1. Scarica l'albero dei sorgenti di Android:
    repo init -u https://android.googlesource.com/platform/manifest -b main
    repo sync -j8
    
  2. Crea l'ambiente:
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

Crea il kernel

Per trout 1.1, il codebase del kernel è fornito in AOSP. Il trout kernel è composto dallo stesso codice dell'ACK 5.10 upstream, con l'aggiunta di trout-specifici moduli per i sottosistemi VirtIO.

  1. Per clonare il kernel, esegui:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. Per creare il kernel, esegui:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

Il fornitore dell'hypervisor potrebbe avere una configurazione del kernel diversa richiesta o moduli aggiuntivi che devono essere compilati. Assicurati di seguire queste indicazioni specifiche, se fornite.

Conformità

Quando AAOS viene eseguito come VM guest, il nostro obiettivo è avere un deployment Android compatibile dal punto di vista del framework. I problemi lato host sono di competenza di ogni implementazione e non rientrano nell'ambito di trout 1.1.

Non abbiamo eseguito un'ulteriore convalida xTS su trout 1.1. Continua a fare riferimento alla discussione riportata di seguito sul supporto CTS in trout 1.0.

In trout 1.0 rimangono diversi problemi CTS. È noto che i seguenti moduli CTS includono errori di test:

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

È noto che le seguenti aree CTS-V includono errori di test:

Test di Car Launcher
Test di Bluetooth Low Energy (BLE) Advertiser
Verificatore della qualità dello streaming video
Test del dispositivo HID Bluetooth
Test del microfono a ultrasuoni HiFi
Test dell'altoparlante a ultrasuoni HiFi
Test del dispositivo sbloccato richiesto
Test di rilevamento dinamico dei sensori
Test del sensore fuori dal corpo
Test di movimento significativo
Test di notifica del routing dell'output audio
Test di richiesta o suggerimento di rete

Note di rilascio

trout 1.1 contiene i seguenti problemi noti:

  • Le build utente di trout non sono disponibili. Il sistema viene creato come -userdebug, il che può influire su alcuni test CTS.
  • Android Verified Boot (AVB) non è supportato.
  • Alcuni sottosistemi Android potrebbero non essere disponibili, tra cui secure world e NNHAL.
  • L'accesso alla rete guest viene generalmente fornito tramite una scheda Wi-Fi virtualizzata e un virtio-net tunnel. La connettività lato host dipende dal deployment dell'hypervisor specifico.
  • Alcune implementazioni potrebbero offrire funzionalità Bluetooth limitate o assenti.
  • L'iniezione di eventi VHAL potrebbe non funzionare per alcuni sensori.
  • Alcuni workload pesanti possono causare problemi di riproduzione audio.
  • In alcune implementazioni, il riavvio adb del guest AAOS potrebbe riavviare l'intero sistema.
  • STS può causare instabilità del sistema e richiedere un riavvio.

Per ulteriori dettagli, consulta le note di rilascio del partner per il deployment specifico di trout.