Loading AI tools
De Wikipédia, l'encyclopédie libre
ARINC 653 est un standard de partitionnement temporel et spatial de ressources informatiques. Ce standard définit également des interfaces de programmation et de configuration qui permettent d'assurer l'indépendance de l'application vis-à-vis du logiciel et du matériel sous-jacent.
Le principe de partitionnement permet la coexistence sur la même plateforme, de fonctions avioniques de niveaux DO-178B DAL (Design Assurance Level) différents, et permet un processus de qualification incrémentale de ces fonctions, ainsi qu'un processus de ségrégation des fournisseurs de fonctions.
Il définit une API de portabilité pour les logiciels applicatifs avioniques adoptée notamment par les architectures IMA (Integrated Modular Avionics) ou AMI (Avionique modulaire intégrée) en français.
Une fonction avionique est réalisée par une décomposition logicielle et matérielle traçable par rapport aux spécifications de cette fonction. Dans le cadre d'une architecture IMA adoptant l'interface A653, cette décomposition est effectuée de la manière suivante:
Publication originale du 04/10/1996.
Publication du 16/10/2003. L'évolution majeure de cette révision est l'introduction de l'IMA (§1.3.1)
Publication du 07/03/2006. Le changement majeur est la division de la norme en trois parties :
Cette version précise certains points. Le fait que le processus d'initialisation continue en mode NORMAL ou pas dépend de l'implémentation.
Le standard Airbus est un exemple de standard industriel né en 2001/2002, entre les publications A653 et A653-1, dans le cadre des premiers développements IMA sur le programme A380. La publication A653-1 s'inspire largement du standard Airbus. La portabilité d'une application n'est donc que partielle entre ce standard industriel et la norme A653.
Chaque partition a son propre espace mémoire et temporel, la ségrégation étant assurée par le système d'exploitation. Au sein de chaque partition, le multi-tâches est autorisé. Le langage d'implémentation recommandé par la norme est Ada, bien que le C soit également mentionné. Un simple fichier d'interface des services est fourni en annexe.
La portabilité de l'application est assurée par l'utilisation stricte des services de l'API standard, et ne doit en aucun cas reposer sur des comportements liés à l'implémentation matérielle et logicielle de la plateforme.
L'initialisation de la partition A653 est fondamentale. Elle a pour objectif la création des ressources, la gestion des modes de démarrage et des pannes (avec le Error Handler).
La création des ressources (PROCESS, EVENT, SEMAPHORE…) est effectuée par l'appel des services CREATE_..... L'appel de ces services vérifie l'existence et la disponibilité des ressources demandées avant l'attribution d'un handler ou identifiant utilisable par l'application.
L'initialisation est effectuée au sein d'un processus pourvu d'une pile, et que l'on peut assimiler au "main" d'une application native. Ce processus se termine par l'appel du service SET_PARTITION_MODE.
L'A653-2 précise que l'implémentation de la plateforme peut laisser le processus s'exécuter après l'appel de ce service, mais l'application ne doit en aucun cas dépendre de ce point pour garantir sa portabilité.
Le gestionnaire d'erreurs est créé par l'appel du service CREATE_ERROR_HANDLER dans la phase d'initialisation de la partition.
Dès lors que le gestionnaire d'erreurs a été créé avec succès, il est appelé quand une exception se produit.
Le gestionnaire d'erreurs est un processus non préemptable. Il peut être vu comme le processus de plus haute priorité.
Lorsqu'un événement (exception) asynchrone (interruption matérielle, date d'échéance de processus) ou synchrone (violation de segment mémoire) est détecté par la plateforme A653, le gestionnaire d'erreurs préempte le processus en cours d'exécution.
Ce processus est censé traiter la cause de l'exception par exemple stopper le processus fautif, envoyer un message de maintenance.
Lorsque le gestionnaire d'erreurs se termine par l'appel du service STOP_SELF, l'ordonnanceur est appelé et élit le processus READY le plus prioritaire.
La norme A653 ne précise pas de comportement dans le cas où le gestionnaire d'erreurs ne traite pas la cause de l'exception. Une implémentation possible de l'A653 est de rappeler immédiatement le gestionnaire d'erreurs, ce qui mènerait à une boucle infinie entre le processus fautif et le gestionnaire d'erreurs.
Le gestionnaire d'erreurs dispose du service GET_ERROR_STATUS pour obtenir des informations sur la source de l'exception et du contexte d'apparition (compteur de programme, identifiant de processus).
Le gestionnaire d'erreurs joue un rôle particulier avec le processus d'initialisation. Le comportement opérationnel d'une partition avionique dépend beaucoup de la conception de ce processus.
La partition dispose d'un attribut de mode qui prend sa valeur parmi :
Dans les modes COLD_START et WARM_START, le processus d'initialisation seul s'exécute jusqu'à sa fin.
En mode NORMAL, le processus d'initialisation est arrêté et les autres processus sont élus par l'ordonnanceur selon la priorité de chacun.
En mode IDLE, aucun processus n'est en cours d'exécution. En pratique, l'implémentation peut être d'exécuter un processus caché de priorité minimale effectuant une boucle infinie.
Le service SET_PARTITION_MODE permet de passer d'un mode à l'autre. Ce service peut être appelé par n'importe quel processus.
Le mode IDLE est le seul mode irréversible pour la partition. Il faut un événement externe, comme le redémarrage de la plateforme, peut faire sortir la partition de ce mode.
Une partition comprend au moins un processus. Un processus est une unité logicielle qui s'exécute en concurrence avec les autres processus de la partition. Un processus dispose d'attributs statiques et dynamiques.
Les attributs statiques sont :
Les attributs dynamiques sont :
Le processus prend l'un des états :
L'état WAITING dispose de sous-états qui précisent la raison de mise en attente :
L'ordonnancement des processus est préemptif à priorité fixe. L'ordonnanceur est déclenché par interruption matérielle (timer) ou par appel de services de l'API. L'ordonnanceur dispose de la liste de processus READY, examine leur priorité courante et élit le processus le plus prioritaire qui passe à l'état RUNNING. Le processus précédemment à l'état RUNNING passe à l'état READY.
Certains services demandent des précautions d'usage :
SUSPEND et RESUME : ces services permettent de suspendre et reprendre l'exécution d'un processus P2 depuis un processus P1. Si le processus P1 s'arrête, le processus P2 reste suspendu indéfiniment.
STOP : si un processus obtient une ressource, puis est stoppé par un autre processus, la ressource reste inaccessible indéfiniment. Il n'est pas recommandé à l'implémentation de ce service, de libérer les ressources acquises par le processus arrêté, car elles sont dans un état indéterminé.
La plateforme est composée :
La cible est généralement composée d'un microprocesseur, d'horloges de précision, de mémoire vive, de mémoire morte, et d'entrées-sorties.
Elle fournit les services de bas niveau pour partitionner les ressources de la cible.
Elle utilise généralement les services de la MMU (memory management unit) de la cible pour effectuer le partitionnement spatial, c'est-à-dire exclure l'accès à la mémoire d'une partition depuis une autre partition. Ce mécanisme peut en outre être effectué ou complété par un ASIC externe sur le bus reliant le microprocesseur à la mémoire.
Le partitionnement temporel est généralement effectué par des horloges matérielles internes au microprocesseur ou dans un ASIC externe piloté par un oscillateur à quartz précis. Le séquencement temporel des partitions est configuré statiquement.
Les drivers permettent l'abstraction de l'interface des entrées-sorties avioniques : bus A429, bus AFDX, USB, CAN (Controller area network), entrées-sorties numériques et analogiques, mémoire non volatile.
Les services sont répartis en 7 catégories :
Chaque catégorie comprend au moins un service de création de ressource. Son implémentation peut être statique ou dynamique. Si elle est dynamique, l'implémentation devra s'assurer de la cohérence avec le domaine d'utilisation comme la disponibilité des ressources physiques…
L'ensemble des services retourne un paramètre RETURN_CODE pointé en cas d'exception. Le type énuméré RETURN_CODE prend les valeurs suivantes :
Les paramètres OUT sont valides si et seulement si RETURN_CODE vaut NO_ERROR.
La partition est définie par son mode et sa condition de démarrage.
Le mode peut prendre les valeurs suivantes :
Les services :
Le passage en mode NORMAL positionne :
La partition est libre de gérer sa mémoire. Aucun service n'est spécifié à cette fin.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.