Piattaforma di riferimento

Attraverso un nuovo prodotto denominato trout , Android Automotive (AAOS) fornisce ora il supporto per l'implementazione come macchina virtuale (VM) ospite 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 può essere trovato su device/google/trout . La tabella seguente descrive la tecnologia utilizzata per virtualizzare ciascuno dei sottosistemi in trout .

Caratteristica Tecnologia
Controllo audio HAL vsock/gRPC
AudioHAL virtio-snd
Bluetooth virtio-console
HAL discarica vsock/gRPC
Sistema di visualizzazione estesa (EVS) virtio-video
Modalità garage vsock/gRPC
Grafica virtio-gpu
Sistema globale di navigazione satellitare (GNSS) virtio-console
Sensore HAL 2.0 virtio-scmi and IIO
Ingresso sul touchscreen virtio-input
Veicolo HAL vsock/gRPC

Estendi la trota

trout può essere utilizzata come punto di partenza per creare nuovi target Android di infotainment di bordo (IVI). L'infrastruttura di costruzione è progettata per essere estesa e personalizzata. Per 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 individualmente con implementazioni personalizzate oppure è possibile mantenere le implementazioni predefinite ma alcuni parametri di configurazione possono essere modificati per stabilire una corretta comunicazione tra VM nell'ambiente di destinazione. Questi HAL (inclusi HAL veicolo, HAL controllo audio e HAL Dumpstate) sono 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 appropriati come proprietà del fornitore. Il codice sorgente funge da verità fondamentale su cui le proprietà sono disponibili per la configurazione e la loro semantica.

Costruisci trote

Compila lo spazio utente

Per compilare lo spazio utente:

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

Costruisci il kernel

Per trout 1.1, la base di codice del kernel è fornita in AOSP. Il kernel trout è composto dallo stesso codice dell'ACK 5.10 upstream, con l'aggiunta di moduli specifici trout 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 compilare il kernel eseguire:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

Il tuo fornitore di hypervisor potrebbe richiedere una configurazione del kernel diversa o moduli aggiuntivi da compilare. Assicurati di seguire questa guida specifica, se fornita.

Conformità

Quando AAOS viene eseguito come VM ospite, il nostro obiettivo è quello di essere una distribuzione Android compatibile dal punto di vista del framework. Le questioni lato host sono di competenza di ciascuna implementazione e esulano dall'ambito di trout 1.1.

Non abbiamo eseguito un'ulteriore convalida xTS su trout 1.1. Continuare a fare riferimento alla discussione seguente sul supporto CTS in trout 1.0.

In trout 1.0 permangono 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
CtsUsbTest
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:

Prova del lanciatore per auto
Test dell'inserzionista Bluetooth Low Energy (BLE).
Verificatore di qualità video in streaming
Test del dispositivo HID Bluetooth
Test del microfono ad ultrasuoni HiFi
Test degli altoparlanti ad ultrasuoni HiFi
Dispositivo sbloccato Test richiesto
Test di rilevamento dinamico del sensore
Test del sensore del corpo spento
Test di movimento significativo
Test di notifica del routing dell'uscita 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 è costruito come -userdebug , che può influenzare alcuni test CTS.
  • L'avvio verificato Android (AVB) non è supportato.
  • Alcuni sottosistemi Android potrebbero non essere disponibili, inclusi Secure World e NNHAL.
  • L'accesso alla rete ospite viene generalmente fornito tramite un adattatore Wi-Fi virtualizzato e un tunnel virtio-net . La connettività lato host dipende dalla distribuzione specifica dell'hypervisor.
  • Alcune implementazioni potrebbero offrire funzionalità Bluetooth limitate o assenti.
  • Un'iniezione di eventi VHAL potrebbe non funzionare per alcuni sensori.
  • Alcuni carichi di lavoro pesanti possono causare problemi nella riproduzione audio.
  • In alcune implementazioni, il riavvio adb del guest AAOS potrebbe riavviare l'intero sistema.
  • STS può causare instabilità del sistema e richiedere il riavvio.

Per ulteriori dettagli, fare riferimento alle note sulla versione del partner per la distribuzione specifica di trout .