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

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 master
    repo sync -j8
    
  2. Créer l'environnement :
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

Construire le noyau

Pour trout 1.0, 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.

  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 pour l'environnement OpenSynergy, exécutez :
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

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.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.0 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.
  • L'accès à TrustZone pour Android n'est pas pris en charge dans trout 1.0.
  • Le démarrage vérifié d'Android (AVB) n'est pas pris en charge.
  • Les accélérateurs neuronaux ne sont pas exposés au NNAPI chez trout 1.0.
  • La virtualisation Wi-Fi n'est pas disponible, certaines implémentations offrant une prise en charge limitée d'un tunnel "virtio-net".
  • Dans certains cas, le transfert de fichiers volumineux depuis ou vers Android via Android Debug Bridge (ADB) peut entraîner le blocage du système.
  • Dans certains cas, l'application SMS peut cesser de se synchroniser avec un téléphone Bluetooth jumelé.
  • Une injection d'événement VHAL peut ne pas fonctionner pour certains capteurs.
  • Le numéro de série ADB du SoC sous-jacent n'est pas transmis à Android en tant que numéro de série ADB de l'invité.
  • Dans certaines implémentations, Ethernet peut ne pas être disponible pour l'hôte pour la connectivité réseau.

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

,

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

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 master
    repo sync -j8
    
  2. Créer l'environnement :
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

Construire le noyau

Pour trout 1.0, 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.

  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 pour l'environnement OpenSynergy, exécutez :
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

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.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.0 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.
  • L'accès à TrustZone pour Android n'est pas pris en charge dans trout 1.0.
  • Le démarrage vérifié d'Android (AVB) n'est pas pris en charge.
  • Les accélérateurs neuronaux ne sont pas exposés au NNAPI chez trout 1.0.
  • La virtualisation Wi-Fi n'est pas disponible, certaines implémentations offrant une prise en charge limitée d'un tunnel "virtio-net".
  • Dans certains cas, le transfert de fichiers volumineux depuis ou vers Android via Android Debug Bridge (ADB) peut entraîner le blocage du système.
  • Dans certains cas, l'application SMS peut cesser de se synchroniser avec un téléphone Bluetooth couplé.
  • Une injection d'événement VHAL peut ne pas fonctionner pour certains capteurs.
  • Le numéro de série ADB du SoC sous-jacent n'est pas transmis à Android en tant que numéro de série ADB de l'invité.
  • Dans certaines implémentations, Ethernet peut ne pas être disponible pour l'hôte pour la connectivité réseau.

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