<div class='slidealt'>Expérimentez des extensions de <a title='virtualisation pour plateformes hétérogènes à base de processeurs ARM' href='/fr/produits/'>virtualisation KVM</a></div> <div class='slidealt'>Faites appelle à des <a title='services de full virtualisation pour kvm sur coeur ARM' href='/fr/services/'>services de virtualisation sur mesure</a></div> <div class='slidealt'>Virtualisation KVM des E/S's pour coeurs ARMv7, ARMv8 <a title='extensions de virtualisation de plateforme VFIO des E/S par kvm sur arm en logiciel libre' href='/fr/solutions/guides/vfio-sur-arm/'>par extensions VFIO/IOMMU</a></div> <div class='slidealt'>Projets de recherche de virtualisation <a title='kvm en logiciel libre pour ARM multicoeur' href='/fr/innovation/'>pour les systèmes embarqués et le cloud</a></div> <div class='slidealt'>Solutions de virtualisation pour systèmes <a title='solutions en logiciels libres de virtualisation pour ARMv7-ARMv8' href='/fr/solutions/'>hétérogènes multicoeur ARM</a></div>

Co-exécution d'un noyau temps réel et de KVM GPOS virtualisé sur architecture ARMv8

Comment exécuter simultanément un RTOS et un KVM GPOS sur une plate-forme ARM 64-bit

Une tendance importante dans la conception des systèmes embarqués concerne l'intégration d'applications comportant différents niveaux de criticité afin qu'ils puissent interagir et coexister sur une plate-forme hardware commune. Un exemple concret concerne l'industrie automobile qui évolue vers des systèmes à criticité mixte dans le but de répondre aux différentes exigences liées à la performance, la latence, la taille, la consommation, la puissance et au coût. En effet, une voiture connectée via un ethernet/vSwitch-centric gateway est composée de fonctions critiques (freinage, direction assistée électrique, etc.) qui doivent être isolées des fonctionnalités du système d'info-divertissement (IVI).

Ce guide présente une méthode, des extensions de virtualisation et un monitor layer utilisant ARM TrustZone, développés par Virtual Open Systems, permettant d'exécuter simultanément un noyau temps réel et un système d'exploitation universel sur une plate-forme hardware ARMv8.

Introduction à un système ALS à criticité mixte exécutant RTOS et GPOS virtualisé

Virtual Open Systems, sponsor officiel de l'Automotive Linux Summit (ALS) 2015 organisé par la fondation Linux à Tokyo, a présenté durant cet évènement une preuve du concept exposant l'exécution simultanée d'un noyau temps réel et d'un système d'exploitation universel sur la plate-forme de développement JUNO basée sur l'architecture ARMv8 (2 Cortex-A57 1.2GHz, 4 Cortex-A53 650MHz). Les deux OS sont exécutés via la technologie ARM Trustzone qui définit deux environnements d'exécution incluant un mode totalement sécurisé et isolé du reste du système.

Le noyau temps réel utilisé dans cet exemple est un portage, réalisé par Virtual Open Systems, du noyau 32-bit de FreeRTOS sur la plate-forme hardware Juno. Il exécute, dans le mode sécurisé de TrustZone (couche d'exception S-EL1), différentes tâches temps réelles contrôlant ainsi l'éclairage des LED disposées sous le châssis de la plate-forme. Concernant le système d'exploitation, la version v4.0 du noyau Linux, avec l'extension de virtualisation KVM activée, sera exécuter dans le mode non-sécurisé du Trustzone (couche d'exception NS-EL1). Grâce la virtualisation KVM,le système d'exploitation est capable d'exécuter plusieurs machines virtuelles en parallèle Tizen, Android.

Note

Ce guide ne décrit pas la procédure de virtualisation d'un invité sur le système Linux hôte. Plus d'information sur la virtualisation KVM sont accessible dans le guide Kvm on armv8.

Pour partager les ressources du CPU entre les deux OS, Virtaul Open Systems a étendu les fonctionnalités de ARM Trusted Firmware (ATF). Cette couche software, appelée VOSYS-custom-ATF, est une partie clé du système puisqu'elle est capable de stopper l'exécution d'un mode afin de prioritiser l'autre mode (Qualité de service) en fonction des exceptions générées.

Note

Tout au long de ce guide, ARM64, ARMv8 ou aarch64 réfèrent à la même architecture.

Pré-requis

Ce guide est basé sur la version Ubuntu 14.04 (Trusty), cependant tous les outils utilisés dans ce guide sont aussi disponibles pour d'autres distributions Linux, telles que Debian et Fedora. Les exigences supplémentaires sont:

bullet Plate-forme de développement Juno ARM

bullet 2 convertisseurs UART/USB, 2 câbles UART, 1 câble Ethernet, 1 câble USB TypeA/TypeB

bullet Ordinateur avec Ubuntu 14.04 ou une distribution similaire

bullet Cross-compilateur ARM 64-bit utilisé pour compiler vers l'architecture 64-bit ARMv8

bullet Cross-compilateur GCC 32-bit pour les applications "bare metal" sur processeur ARM Cortex-A/R/M

/static/vosapp/images/guides/agl_mixed_criticality_armv8/images/juno.jpg

Plate-forme de développement JUNO ARM

Configuration de l'environnement

Ce chapitre décrit toutes les étapes nécessaires à la préparation de l'environnement de travail ainsi que l'installation de la plate-forme hardware JUNO.

Obtenir le cross-compilateur ARM 64-bit et 32-bit

Tout d'abord, les cross-compilateurs ARM sont nécessaires pour la compilation d'applications ARM sur un ordinateur x86. Exécuter les commandes suivantes pour procéder à l'installation:

$ sudo apt-get install gcc-aarch64-linux-gnu
$ sudo apt-get install gcc-arm-none-eabi

Puis, tester si le compilateur a été correctement ajouté à la variable d'environnement PATH:

$ which aarch64-linux-gnu-gcc
  < You should get the compiler path here >
$ which arm-none-eabi-gcc
  < You should get the compiler path here >

Communication série et outil gestionnaire de versions

Pour recevoir des données UART depuis la plate-forme Juno, un outil software pour la liaison série, tel que minicom, est nécessaire. De plus, l'outil GIT est requis pour le téléchargement du code source nécessaire à l'achèvement de ce guide.

$ sudo apt-get install minicom
$ sudo apt-get install git

L'image NFS d'espace utilisateur pour l'hôte

Network File System (NFS) est utilisé pour monter l'image de l'espace utilisateur pour le système hôte depuis l'ordinateur même lorsque la plate-forme Juno n'est pas démarrée. Pour cette flexibilité, NFS sera utilisée dans les sections suivantes avec "OpenEmbedded", une image pré-configuré par Linaro (linaro-image-minimal-genericarmv8-20140223-649.rootfs.tar.gz).

Pour exporter un répertoire via NFS, il est nécessaire d'installer le service NFS qui est disponible dans la plupart des distributions Linux. Par exemple, dans Ubuntu, il peut être installé de cette manière:

$ sudo apt-get install nfs-kernel-server nfs-common

Maintenant, le répertoire /srv/nfsroot qui contiendra l'image de l'espace utilisateur pour l'hôte ARM doit être créé:

$ sudo mkdir -p /srv/nfsroot/
$ sudo tar -xf linaro-image-minimal-genericarmv8-20130526-319.rootfs.tar.gz \
            -C /srv/nfsroot/

De plus, pour rendre ce répertoire accessible, le fichier de configuration NFS /etc/exports doit être modifié de la manière suivante:

$ /srv/nfsroot 192.168.1.20/255.255.255.0(rw,sync,no_root_squash,no_subtree_check,insecure)

Cette configuration exporte le répertoire /srv/nfsroot pour toutes les machines dans le sous-réseau 192.168.1.0/24. À ce point, le service NFS est configuré, par conséquent le service du serveur doit être redémarré:

$ sudo service nfs-kernel-server restart

Installation de la plate-forme Juno

Une fois les outils software installés, la plate-forme Juno doit être connecté à l'ordinateur et un lien série doit être correctement configurée afin d'initier la communication entre les périphériques hardware.

Note

Virtual Open Systems se décharge de toutes responsabilité en cas de dommages causés sur votre matériel en suivant les instructions ci-dessous. Bien que le contenu de ce guide ait été vérifié scrupuleusement, Virtual Open Systems ne peut garantir qu'une potentielle erreur d'utilisateur ne puisse endommager votre plate-forme.

bullet Connecter deux câbles UART sur les ports de la plate-forme Juno puis les relier sur l'ordinateur via un convertisseur UART/USB.

bullet Connecter le connecteur TypeB du câble USB sur la plate-forme Juno et le connecteur TypeA sur l'ordinateur.

bullet Relier la plate-forme Juno au réseau internet en connectant un câble Ethernet.

bullet Brancher l'alimentation 12 volts sur la plate-forme hardware.

Identifiant ou inscription pour visualiser l'information complète