Plate-forme de référence

Android Automotive (AAOS) est désormais compatible avec un nouveau produit nommé trout. pour le déploiement en tant que machine virtuelle (VM) invitée dans des environnements compatibles avec VirtIO standard. trout est basé sur le Seiche plate-forme de référence virtuelle et est disponible en tant que configuration d'appareil trout. La le code source de l'espace utilisateur est disponible à l'adresse device/google/trout. La table 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
HAL audio virtio-snd
Bluetooth virtio-console
HAL de l'état de dump vsock/gRPC
EVS (Extended View System) virtio-video
Mode garage vsock/gRPC
Graphismes virtio-gpu
Navigation mondiale par satellite (GNSS) virtio-console
Capteur HAL 2.0 virtio-scmi and IIO
Saisie par écran tactile virtio-input
HAL du véhicule vsock/gRPC

Prolonger la truite

trout peut être utilisé comme point de départ pour créer un système d'infoloisirs embarqués (IVI) Cibles Android. L'infrastructure de compilation est conçue pour être étendue et personnalisée. 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ées individuellement par des implémentations personnalisées. les implémentations par défaut sont conservées, mais certains paramètres de configuration sont ajustés pour établir une bonne communication entre les VM dans l'environnement cible. Ces HAL (y compris les HAL de véhicule, Audio Control HAL et Dumpstate HAL) sont implémentés au moyen d'une interface gRPC reposant sur un vsock entre l'invité AAOS et un système hôte fournissant la l'implémentation sous-jacente des fonctionnalités. Pour les configurer, vous devez fournir Paramètres de connexion vsock en tant que propriétés de fournisseur. Le code source est l'ultime la vérité terrain sur laquelle les propriétés sont disponibles pour la configuration, ainsi que leur sémantique.

Bâtir une truite

Compiler l'espace utilisateur

Pour compiler l'espace utilisateur:

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

Créer le noyau

Pour trout 1.1, le codebase du noyau est fourni dans AOSP. trout du noyau est composé du même code que l'ACK en amont 5.10, avec l'ajout du Modules spécifiques à trout pour les sous-systèmes VirtIO.

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

Votre fournisseur d'hyperviseur peut avoir une configuration de noyau différente ou des exigences modules qui doivent être compilés. Veillez à suivre ces consignes spécifiques, le cas échéant.

Conformité

Quand AAOS s'exécute en tant que VM invitée, notre objectif est d'avoir un déploiement Android compatible du point de vue du framework. Les problèmes côté hôte sont le cadre de chaque implémentation et en dehors de champ d'application de trout 1.1.

Nous n'avons pas effectué de validation xTS supplémentaire sur trout 1.1. Continuer pour consulter la discussion ci-dessous sur la compatibilité de CTS dans trout 1.0.

Dans trout 1.0, plusieurs problèmes liés à CTS demeurent. Les modules CTS suivants sont connus pour incluent les échecs des tests:

CtsStagedInstallHostTestCases
CtsRollbackManagerHostTestCases
CtsVideoTestCases
CtsHostsideNetworkTests
CtsActivityManagerBackgroundActivityTestCases
CtsAdbHostTestCases
CtsNativeHardwareTestCases
CtsContentTestCases
CtsCarHostTestCases
CtsOsTestCases
CtsStatsdHostTestCases
CtsVoiceInteractionTestCases
CtsViewTestCases
CtsCameraTestCases
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 zones CTS-V suivantes incluent des échecs de test:

Test du lanceur d'applications
Test annonceur Bluetooth à basse consommation (BLE)
Outil de vérification de la qualité des vidéos en streaming
Test de l'appareil Bluetooth HID
Test du micro à ultrasons hi-fi
Test de l'enceinte à ultrasons hi-fi
Test requis pour l'appareil déverrouillé
Test de détection de capteurs dynamiques
Test du capteur hors corps
Test de mouvements significatifs
Test de notification de routage de sortie audio
Test de requête réseau ou de suggestion

Notes de version

trout 1.1 présente les problèmes connus suivants:

  • Les builds d'utilisateur de trout ne sont pas disponibles. Le système est conçu comme -userdebug, ce qui peut affecter certains tests CTS.
  • Le démarrage validé Android (AVB) n'est pas pris en charge.
  • Certains sous-systèmes Android peuvent être indisponibles, y compris 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 un(e) virtio-net à l'aide du tunnel. La connectivité côté hôte dépend de votre déploiement d'hyperviseur spécifique.
  • Certaines implémentations peuvent offrir une fonctionnalité Bluetooth limitée ou inexistante.
  • Une injection d'événements VHAL peut ne pas fonctionner pour certains capteurs.
  • Certaines charges de travail intensives peuvent entraîner 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 d'informations, reportez-vous aux notes de version des partenaires concernant votre déploiement trout