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 plate-forme de référence virtuelle Cuttlefish et est disponible en tant que configuration de l'appareil trout
. Le code source de l'espace utilisateur se trouve sur device/google/trout
. Le tableau ci-dessous décrit la technologie utilisée pour virtualiser chacun des sous-systèmes de trout
.
Caractéristique | Technologie |
---|---|
Contrôle audio HAL | vsock/gRPC |
HAL audio | virtio-snd |
Bluetooth | virtio-console |
État de vidage 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 tactile | virtio-input |
Véhicule HAL | vsock/gRPC |
Prolonger la truite
trout
peut être utilisé comme point de départ pour créer de nouvelles cibles Android In-Vehicle Infotainment (IVI). L'infrastructure de construction est conçue pour être étendue et personnalisée. Par example:
# 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 conservées, mais certains paramètres de configuration 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 de la fonctionnalité sous-jacente. 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é fondamentale 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 :
- Téléchargez l'arborescence des sources Android :
repo init -u https://android.googlesource.com/platform/manifest -b master repo sync -j8
- Créer 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 de la trout
est composé du même code que l'ACK 5.10 en amont, avec l'ajout de modules spécifiques à la trout
pour les sous-systèmes VirtIO.
- Pour cloner le noyau, exécutez :
repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
- Pour compiler le noyau, exécutez :
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 requise ou des modules supplémentaires qui doivent être compilés. Assurez-vous de suivre ces conseils spécifiques, s'ils sont fournis.
Conformité
Lorsque AAOS s'exécute en tant que machine virtuelle 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 sont du ressort 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 le support CTS dans trout
1.0.
Dans trout
1.0, plusieurs problèmes de CTS subsistent. Les modules CTS suivants sont connus pour inclure des échecs de test :
CtsStagedInstallHostTestCas CtsRollbackManagerHostTestCas CtsVideoTestCas CtsHostsideNetworkTests CtsActivityManagerBackgroundActivityTestCas CtsAdbHostTestCas CtsNativeHardwareTestCas CtsContentTestCas CtsCarHostTestCas CtsOsTestCas CtsStatsdHostTestCas CtsVoiceInteractionTestCas CtsViewTestCas CtsCameraTestCas CtsLocationGnssTestCas CtsGraphicsTestCas CtsIncidentHostTestCas CtsInstallHostTestCas CtsNativeVerifiedBootTestCas CtsNetTestCas | CtsWindowManagerDeviceTestCas CtsMediaStressTestCas CtsAppTestCas CtsUsbTests CtsAutoFillServiceTestCas CtsDisplayTestCas CtsMediaTestCas CtsDeqpTestCas CtsDumpsysHostTestCas CtsOpenGLTestCasesCtsLibcoreTestCases CtsSecurityHostTestCas CtsInputMethodTestCas CtsStatsdAtomHostTestCases CtsPermission4TestCas CtsNNAPIBenchmarkTestCas CtsSimpleperfTestCases CtsAccessibilityTestCas CtsAppSecurityHostTestCas CtsKeystoreTestCas |
Les zones CTS-V suivantes sont connues pour inclure des échecs de test :
Test du lanceur de voiture Test de l'annonceur Bluetooth Low Energy (BLE) Vérificateur de qualité vidéo en streaming Test de périphérique Bluetooth HID Test du microphone à ultrasons Hifi Test de haut-parleur à ultrasons Hifi | Test requis pour l'appareil déverrouillé Test de découverte dynamique des capteurs Test du capteur corporel désactivé Test de mouvement significatif Test de notification de routage de sortie audio Test de demande ou de suggestion de 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 en tant que-userdebug
, ce qui peut affecter certains tests CTS. - Le démarrage vérifié d'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 capacité Bluetooth limitée ou inexistante.
- Une injection d'événement VHAL peut ne pas fonctionner pour certains capteurs.
- Certaines charges de travail importantes 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 de détails, reportez-vous aux notes de version du partenaire pour votre déploiement spécifique de trout
.