PikeOS pour les processeurs avec MMU et MPU peut fonctionner en parallèle sur le SoC Xilinx Ultrascale+ et communiquer de manière transparente entre eux via la communication intercœur.
Processeurs avec MMU et MPU
Il ne s’agit pas de SoC complexes tels que le MPSoC Xilinx Zynq Ultrascale+, car avec les cœurs Arm Cortex-A53, la gestion de la mémoire de travail est basée sur une unité de gestion de la mémoire (MMU), tandis qu'avec le double cœur Arm Cortex-R5F, elle est basée sur une unité de protection de la mémoire (MPU). La différence entre ces différents systèmes de gestion de la mémoire est qu'une MMU peut être utilisée pour convertir des zones d'adresses virtuelles en zones d'adresses physiques quelconques. La MMU attribue donc une zone d'adresse concrète à un processus. Un contrôleur avec MPU ne dispose pas de cette fonction d'affectation. La MPU offre toujours la protection qu'un processus ne peut pas écrire à l'autre dans la même zone de mémoire. Cependant, sans MPU, chaque processus doit savoir exactement où se lier. Ceci est conceptuellement plus complexe car chaque processus doit se voir attribuer une zone de mémoire dédiée. Le logiciel d’exploitation temps réel doit donc fournir l'API d'allocation mémoire.
Deux mondes
Jusqu'à présent dans le paysage RTOS et hyperviseurs, il n'existait pas de solutions véritablement homogènes pour gérer de tels SoC hétérogènes avec des contrôleurs basés sur MMU et MPU. La plupart des fournisseurs de systèmes d’exploitation ont développé des RTOS plus petits pour les contrôleurs avec MPU, qui ont des API complètement différentes de celles des RTOS pour les contrôleurs avec MMU. Cela n'a pas joué un rôle majeur jusqu'à présent, puisque ces contrôleurs ont été mis en œuvre de manière discrète pour la plupart. Par conséquent, les RTOS pour les contrôleurs à base de MPU ont également été réduits à un format très réduit et à une utilisation minimale de la mémoire, ce qui est une des raisons de ces incompatibilités. L'importance de ce point est également démontrée par le fait que ces contrôleurs discrets avec MPU ont souvent été programmés "bare metal" lorsque le multithreading n'était pas nécessaire afin d’obtenir des formats toujours plus petits avec les avantages associés tels que l'économie de licences, la réduction des coûts de matériel et une certification plus facile. Cependant, avec des écosystèmes de systèmes d'exploitation homogènes pour le développement de SoCs basés sur des MMUs et des MPUs et des environnements de développement intégrés, la programmation de SoCs hétérogènes peut être rendue beaucoup plus pratique.
Surmonter l’installation de systèmes d'exploitation hétérogènes
Avec le lancement du système d'exploitation PikeOS et de l'hyperviseur pour MPU en septembre 2021, le spécialiste des logiciels embarqués SYSGO, qui se concentre sur des solutions informatiques fonctionnellement sûres et sécurisées, a créé pour la première fois une telle base, avec laquelle des SoC hétérogènes bénéficient d’un écosystème RTOS et hyperviseur en temps réel homogène, ce qui simplifie considérablement la programmation et l'équilibrage de charges utiles. PikeOS for MPU a été développé à cet effet au niveau du code sur la base du système d'exploitation PikeOS pour les processeurs avec MMU. Les API permettant de programmer des applications pour les processeurs avec MMU ou MPU sont donc pratiquement identiques. Pour l'essentiel, seule l'API de gestion de la mémoire a été adaptée en conséquence. Toutefois, le passage d'une application d'un core complex basé sur MMU à un core complex basé sur MPU peut être effectué en quelques clics en l'espace de quelques minutes malgré la différence de gestion de la mémoire. Plus important encore est que le code pour les deux variants de noyau (MMU et MPU) peut être certifié de manière similaire. Les prochaines certifications de PikeOS pour les solutions basées sur MPU peuvent donc s'appuyer sur les certifications SIL 4, DAL A et ASIL D de PikeOS for MMU.
Ecosystème SE homogène pour MMU et MPU
Comme PikeOS et PikeOS for MPU partagent des fonctions centrales importantes, telles que le noyau de séparation ou les mécanismes de partitionnement temporel et spatial, qui ont pu être maintenus à l’identique sur le plan fonctionnel. En séparant strictement les partitions, le noyau de séparation permet le fonctionnement en parallèle de plusieurs applications - des tâches de contrôle simples mais très critiques aux programmes utilisateurs complexes comportant de nombreuses fonctions. En outre, le noyau de séparation élimine le risque que des erreurs d'application ne touche d'autres partitions et applications. L'utilisation des mêmes mécanismes de partitionnement temporel et spatial rapproche également PikeOS for MPU de la spécification ARINC 653 pour laquelle PikeOS for MMU a été initialement développé. PikeOS for MPU convient même aux applications spatiales et avioniques critiques.
La fonctionnalité ICCOM (Inter-Core Communication) des deux dérivés de PikeOS est une caractéristique particulièrement intéressante pour le développement efficace de solutions globales basées sur des systèmes hétérogènes : cette fonctionnalité permet aux instances PikeOS fonctionnant sur différents cœurs ARM Cortex A et R de communiquer entre elles via des canaux de communication basés sur des messages, que les cœurs exécutent des systèmes d'exploitation différents ou identiques. ICCOM est basé sur une couche de transport de données symétrique full duplex qui garantit la livraison des messages.
Un IDE pour tous les cœurs
À partir de la version 7.2 d’IDE CODEO basé sur Eclipse, les deux systèmes d'exploitation peuvent être utilisés dans un seul environnement de développement intégré (IDE). Il peut gérer l'ensemble de la pile logicielle de SoCs hétérogènes et sa communication inter-coeur au sein d'un seul espace de travail, ce qui simplifie considérablement le processus de développement logiciel pour des systèmes cibles aussi complexes. L'ensemble du cycle de développement est pris en charge, depuis l'émulation précoce du système basée sur QEMU et la simulation des applications jusqu'au débogage à distance et aux mécanismes de mise à jour logicielle pour les systèmes déployés sur le terrain.
L'environnement de débogage TRACE32 de Lauterbach prend également en charge le débogage de cibles basées sur des MMU et des MPU. Cela signifie également qu'une configuration matérielle TRACE32 est suffisante pour déboguer toute la plate-forme MPSoC Xilinx Zynq Ultrascale+ avec une configuration hétérogène du système d'exploitation. Cependant, on ne devrait plus parler de configuration hétérogène de systèmes d'exploitation lorsqu'on utilise les deux systèmes d'exploitation PikeOS en tandem. Il s'agit plutôt d'un écosystème homogène pour des SoC hétérogènes, qui dispose également d'un hyperviseur de type 1 en temps réel intégré dans les deux variants, de sorte que de multiples applications isolées en temps et en mémoire, fonctionnellement sûres, de ce système d'exploitation ou d'autres systèmes d'exploitation peuvent être hébergées dans des machines virtuelles encapsulées de manière appropriée.
En démarrant une interface graphique individuelle pour ces partitions du système d'exploitation, les architectes logiciels peuvent également déboguer simultanément les deux variants de PikeOS, y compris les événements de démarrage/arrêt synchronisés. Ceci est particulièrement utile lors de la recherche d'erreurs dans la communication entre les différents sous-systèmes. De plus, TRACE32 peut tracer l'ensemble du système et afficher des graphiques des temps d'exécution des applications et des fonctions. Le timing est synchronisé, ce qui permet d'observer le comportement temporel de PikeOS et de PikeOS for MPU et de mesurer les latences entre les deux systèmes, facilitant ainsi l'équilibrage des performances.