Plateforme de référence

Grâce à un nouveau produit nommé trout , Android Automotive (AAOS) prend désormais en charge le déploiement en tant que machine virtuelle (VM) invitée dans des environnements compatibles avec la norme VirtIO . trout est basé sur la plateforme de référence virtuelle Cuttlefish et est disponible en tant que configuration de périphérique trout . Le code source de l'espace utilisateur peut être trouvé sur device/google/trout . Le tableau ci-dessous décrit la technologie utilisée pour virtualiser chacun des sous-systèmes de trout .

Fonctionnalité Technologie
Contrôle audio HAL vsock/gRPC
AudioHAL virtio-snd
Bluetooth virtio-console
État de décharge HAL vsock/gRPC
Système de vue étendue (EVS) virtio-video
Mode garage vsock/gRPC
Graphique virtio-gpu
Système mondial de navigation par satellite (GNSS) virtio-console
Capteur HAL 2.0 virtio-scmi and IIO
Saisie sur écran tactile virtio-input
Véhicule HAL vsock/gRPC

Truite extensible

trout peut être utilisée comme point de départ pour créer de nouvelles cibles Android d’infodivertissement embarqué (IVI). L'infrastructure de construction est conçue pour être étendue et personnalisée. Par exemple:

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

Plusieurs HAL Android peuvent être remplacés individuellement par des implémentations personnalisées, ou les implémentations par défaut sont conservées mais certains paramètres de configuration sont ajustés pour établir une communication inter-VM appropriée dans l'environnement cible. Ces HAL (y compris Vehicle HAL, Audio Control HAL et Dumpstate HAL) sont implémentés au moyen d'une interface gRPC soutenue par une connexion vsock entre l'invité AAOS et un système hôte fournissant l'implémentation des fonctionnalités sous-jacentes. Ceux-ci doivent être configurés en fournissant les paramètres de connexion vsock appropriés en tant que propriétés du fournisseur. Le code source agit comme la vérité terrain ultime sur laquelle les propriétés sont disponibles pour la configuration et leur sémantique.

Construire la truite

Compiler l'espace utilisateur

Pour compiler l'espace utilisateur :

  1. Téléchargez l'arborescence des sources Android :
    repo init -u https://android.googlesource.com/platform/manifest -b main
    repo sync -j8
    
  2. Construire l'environnement :
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

Construire le noyau

Pour trout 1.1, la base de code du noyau est fournie dans AOSP. Le noyau trout est composé du même code que l'ACK 5.10 en amont, avec l'ajout de modules spécifiques trout pour les sous-systèmes VirtIO.

  1. Pour cloner le noyau, exécutez :
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. Pour construire le noyau, exécutez :
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

Votre fournisseur d'hyperviseur peut avoir besoin d'une configuration de noyau différente ou de modules supplémentaires qui doivent être compilés. Assurez-vous de suivre ces conseils spécifiques, le cas échéant.

Conformité

Lorsque AAOS s'exécute en tant que VM invitée, notre objectif est d'être un déploiement Android compatible du point de vue du framework. Les problèmes côté hôte relèvent de chaque implémentation et sortent du cadre de trout 1.1.

Nous n'avons pas effectué de validation xTS supplémentaire sur trout 1.1. Continuez à vous référer à la discussion ci-dessous sur la prise en charge de CTS dans trout 1.0.

Dans trout 1.0, plusieurs problèmes CTS subsistent. Les modules CTS suivants sont connus pour inclure des échecs de test :

CtsStagedInstallHostTestCases
CtsRollbackManagerHostTestCases
CtsVideoTestCases
CtsHostsideNetworkTests
CtsActivityManagerBackgroundActivityTestCases
CtsAdbHostTestCases
CtsNativeHardwareTestCases
CtsContentTestCases
CtsCarHostTestCases
CtsOsTestCases
CtsStatsdHostTestCases
CtsVoiceInteractionTestCases
CtsViewTestCases
CtsCameraTestCas
CtsLocationGnssTestCases
CtsGraphicsTestCases
CtsIncidentHostTestCases
CtsInstallHostTestCases
CtsNativeVerifiedBootTestCases
CtsNetTestCases
CtsWindowManagerDeviceTestCases
CtsMediaStressTestCases
CtsAppTestCases
Tests CtsUsb
CtsAutoFillServiceTestCases
CtsDisplayTestCases
CtsMediaTestCases
CtsDeqpTestCases
CtsDumpsysHostTestCases
CtsOpenGLTestCasesCtsLibcoreTestCases
CtsSecurityHostTestCases
CtsInputMethodTestCases
CtsStatsdAtomHostTestCases
CtsPermission4TestCases
CtsNNAPIBenchmarkTestCases
CtsSimpleperfTestCases
CtsAccessibilityTestCases
CtsAppSecurityHostTestCases
CtsKeystoreTestCases

Les domaines CTS-V suivants sont connus pour inclure des échecs de test :

Test du lanceur de voiture
Test d'annonceur Bluetooth Low Energy (BLE)
Vérificateur de qualité vidéo en streaming
Test du périphérique Bluetooth HID
Test du microphone à ultrasons Hifi
Test haut-parleur Hifi Ultrason
Test requis pour l'appareil déverrouillé
Test de découverte de capteur dynamique
Test du capteur hors corps
Test de mouvement significatif
Test de notification de routage de sortie audio
Test de demande ou de suggestion réseau

Notes de version

trout 1.1 contient les problèmes connus suivants :

  • Les versions utilisateur de trout ne sont pas disponibles. Le système est construit sous la forme -userdebug , ce qui peut affecter certains tests CTS.
  • Le démarrage vérifié Android (AVB) n'est pas pris en charge.
  • Certains sous-systèmes Android peuvent être indisponibles, notamment Secure World et NNHAL.
  • L'accès au réseau invité est généralement fourni au moyen d'un adaptateur Wi-Fi virtualisé et d'un tunnel virtio-net . La connectivité côté hôte dépend du déploiement spécifique de votre hyperviseur.
  • Certaines implémentations peuvent offrir une fonctionnalité Bluetooth limitée, voire inexistante.
  • Une injection d'événement VHAL peut ne pas fonctionner pour certains capteurs.
  • Certaines charges de travail lourdes peuvent provoquer des problèmes de lecture audio.
  • Dans certaines implémentations, le redémarrage adb de l'invité AAOS peut redémarrer l'ensemble du système.
  • STS peut provoquer une instabilité du système et nécessiter un redémarrage.

Pour plus de détails, reportez-vous aux notes de version des partenaires pour votre déploiement spécifique de trout .