Description détaillée de l'action TOLÈRE



English home page Page d'accueil Participants Comptes-rendu Résultats


Table des matières



Contexte de la recherche proposée

Contraintes pour le logiciel embarqué

Le logiciel embarqué prend une part croissante dans la gestion de nombreux systèmes en contrôlant de plus en plus leur fonctionnement de façon automatique. Présents depuis longtemps dans des applications coûteuses (spatiales, aéronautiques, militaires...) où ils prennent une importance considérable, ils apparaissent dans des domaines grand public, tel que l'assistance à la conduite automobile. Les caractéristiques principales de ces systèmes sont :

La programmation synchrone [Hal93] fournit des méthodes de spécification et des outils de vérification formelle qui apportent des réponses intéressantes aux besoins ci-dessus constatés. Ces méthodes sont basées : sur la modélisation des systèmes à base d'automates, sur leur spécification à l'aide de langages de haut niveau formellement définis, et enfin sur l'analyse théorique de ces modèles en vue d'obtenir des méthodes de preuve formelle.

Cependant, les aspects suivants, très importants vu les domaines d'application, ne sont pas pris en compte par la programmation synchrone :

En résumé, les langages synchrones permettent de programmer les systèmes embarqués en offrant plusieurs avantages : prise en compte des contraintes temporelles, vérification formelle, programmation élégante et sûre grâce à l'hypothèse de synchronisme. Les techniques modernes de répartition permettent ensuite de produire automatiquement du code réparti. Mais la tolérance aux pannes du programme réparti final n'est pas assurée. C'est ce point délicat et important que nous nous proposons de traiter dans le cadre d'une collaboration entre les projets Bip et Sosso.

Présentation des logiciels impliqués

Les approches et méthodologies considérées plus haut reposent sur des logiciels qui sont des supports concrets permettant de réaliser des systèmes critiques embarqués avec des temps de développement et un niveau de sûreté de conception raisonnables.

L'environnement Orccad [SECK93] (pour Open Robot Controller CAD) est un logiciel de haut niveau dont l'expressivité est bien adaptée à la spécification d'applications robotiques combinant l'aspect contrôle et l'aspect commande. Il est développé conjointement par les projets Icare à Sophia-Antipolis et Bip à Grenoble, ainsi que les moyens robotiques de Grenoble. Dans Orccad, une action élémentaire est modélisée par une Tâche-Robot (TR), qui est une loi de commande encapsulée dans un comportement logique réactif. Les TRs constituent l'interface entre les aspects temps continu (en fait discrétisé) et événements discrets. Les lois de commande sont réalisées par l'assemblage de modules constituant un graphe flot de données. Le comportement local est quant à lui codé en Esterel [BG92]. Ces actions élémentaires sont ensuite composées en Procédures-Robot (PR) de complexité croissante jusqu'à l'application complète. Le programme des PRs, également codé en Esterel, décrit le comportement nominal de la mission ainsi que tous les traitements d'exception prédéfinis. L'utilisation d'Esterel pour la spécification de tous les aspects logiques de l'application permet de bénéficier de l'environnement de preuve formelle (FC2Tools et Xeve) associé. Un prototype de laboratoire est en cours d'intégration. Enfin le code généré est pour l'instant mono-processeur, les systèmes cibles étant VxWorks et Solaris.

L'environnement SynDEx [Sor94] (pour Synchronized Distributed Executive), développé par le projet Sosso à Rocquencourt, est un logiciel d'aide à l'implantation multi-composants d'applications spécifiées à l'aide de langages synchrones. Il supporte la méthodologie « Adéquation Algorithme/Architecture ». SynDEx prend en compte les contraintes de temps réel et d'embarquabilité qui doivent être satisfaites par l'application. L'algorithme de commande ou de traitement de signal et des images est donné sous la forme d'un graphe flot de données conditionné, provenant par exemple de la compilation d'un programme écrit avec les langages synchrones, selon le format DC. L'architecture cible est également décrite avec un graphe sous forme de composants programmables et/ou de circuits spécialisés reliés par des média de communication. Des heuristiques rapides permettent d'effectuer automatiquement une distribution et un ordonnancement principalement statique des tâches sur l'architecture matérielle, éventuellement hétérogène, en optimisant la durée d'exécution globale de l'algorithme et en construisant l'exécutif temps réel réparti minimal nécessaire à l'implantation du programme. Il permet également d'optimiser l'architecture cible.



Recherche proposée dans l'action TOLÈRE

Axes de travail

Pour les quatre axes, nous avons indiqué les personnes plus particulièrement impliquées :

  1. Maîtriser les aspects contrôle/commande (Sorel et Simon). Dans de nombreux systèmes informatiques, et en particulier les systèmes embarqués servant à contrôler un processus physique, l'activité du ou des calculateurs de bord est partagée entre une activité calculatoire généralement périodique (calcul d'une loi de commande) et une activité de type contrôle (changement de mode de marche, traitement d'exception ...) relevant de la problématique des systèmes à événements discrets et des systèmes réactifs. La sûreté de conception reposant notamment sur la possibilité d'effectuer des vérifications formelles des programmes, elle nécessite une coopération de ces deux aspects et une modélisation rigoureuse globale de leur comportement. Bien que complémentaires ils sont néanmoins actuellement traités de manière séparée dans le domaine de la robotique. Il serait intéressant de rapprocher les deux points de vue sous un modèle unifié. Un certain nombre de problèmes doivent être étudiés attentivement, en particulier :

  2. Proposer des solutions pour rendre le code réparti tolérant aux pannes (Sorel et Girault). Cela concerne deux aspects : d'une part la prise en compte des défaillances au niveau des algorithmes en effectuant des changements de modes de plus en plus dégradés, et d'autre part au niveau de l'architecture en prévoyant de la redondance matérielle et/ou logicielle avec vote pour les processeurs et les médias de communication, ou encore l'utilisation de composants matériels spécifiques pour implanter les parties les plus critiques du logiciel. Par exemple, pour éviter que le blocage d'un noeud de l'application répartie ne provoque le blocage de l'application entière, on peut imaginer un sous-réseau de communication dédié aux détections de défaillances et chargé de faire basculer l'application vers un mode dégradé. Il faut également garder à l'esprit les impératifs de performance qui doivent se dégrader le moins possible.

  3. Proposer des solutions pour assurer que la spécification du problème est complète (Simon et Girault). Dans l'état actuel d'Orccad, les divers traitements d'exception sont directement programmés en langage synchrone (Esterel), cette phase de spécification et de codage étant suivie d'une phase de vérification formelle à l'aide de FC2Tools et Xeve. Si certaines propriétés génériques sont automatiquement vérifiées grâce aux structures du système, les propriétés spécifiques à une application donnée sont vérifiées manuellement, avec tous les risques d'oubli que cela comporte. La prise en compte de contraintes de répartition et de tolérance aux pannes va encore amplifier ce risque. Une alternative consiste à synthétiser le contrôle à partir de contraintes exprimées de façon aussi symbolique que possible. Il nous semble que des techniques de synthèse de contrôleur dérivant des théories de Ramadge et Wonham [RW87] peuvent avantageusement être appliquées au contexte particulier d'Orccad.

  4. Coupler Orccad et SynDEx (Sorel, Simon et Girault). Le but est de proposer un environnement logiciel unique cohérent depuis la spécification du système, prenant en compte les aspects tolérance aux pannes aussi bien au niveau logiciel que matériel, jusqu'à l'implantation optimisée fonctionnant en temps réel. Il s'agit d'étudier les possibilités d'unifier leurs sémantiques respectives en fonction des modèles vus ci-dessus avec comme intermédiaire le format DC auquel le compilateur Esterel s'interface, et qui est accepté comme spécification d'algorithme par SynDEx.

Domaines d'application

Les deux projets sont actuellement impliqués dans les applications suivantes :

D'autres applications principalement dans le domaine des transports, automobile grand public, ferroviaire et aérien sont envisageables.

Points forts de l'action incitative TOLÈRE



Projets Inria impliqués dans l'action TOLÈRE



Références bibliographiques

[BG92] G. Berry and G. Gonthier. The Esterel synchronous programming language: Design, semantics, implementation. Science of Computer Programming, 19(2):87-152, 1992.

[Hal93] N. Halbwachs. Synchronous programming of reactive systems. Kluwer Academic Pub., 1993.

[RW87] P.J. Ramadge and W.M. Wonham. Supervisory control of a class of discrete event processes. SIAM Journal on Control and Optimization, 25(1):206-230, janvier 1987.

[SECK93] D. Simon, B. Espiau, E. Castillo, and K. Kapellos. Computer-aided design of a generic robot controller handling reactivity and real-time control issues. IEEE Transactions on Control Systems Technology, 1(4), décembre 1993.

[Sor94] Y. Sorel. Massively parallel computing systems with real-time constraints, the "algorithm/architecture adequation" methodology. In Massively Parallel Computing Systems Conference, Ischia, Italy, mai 1994.



Liens

Le projet Solidor de l'Irisa travaille également sur la tolérance aux pannes pour les systèmes critiques. Leur projet Hades attaque le problème sous l'angle des systèmes répartis, et est en l'occurrence bien plus avancé que notre projet Tolère.