A Synchronous Language for Critical Embedded Systems with Multiple Real-Time Constraints
Un Langage Synchrone pour les Systèmes Embarqués Critiques Soumis à des Contraintes Temps Réel Multiples
Résumé
This PhD. Thesis defines a high-level language for programming real-time embedded control systems. It is built upon Synchronous Languages (such as Lustre) and inherits their formal properties. It adds real-time primitives to enable the programming of multi-periodic systems. The objective of the language is not to replace other synchronous languages but instead to provide a higher layer of abstraction, on top of classic synchronous languages. It can be considered as a real-time software architecture language that enables to assemble locally mono-periodic synchronous systems into a globally multi-periodic synchronous system.
The language compiler generates synchronized multi-task C code, that is independent of the target OS. Communication is achieved by a tailor-made buffering communication protocol. The compilation was defined formally and produces completely deterministic code, which respects the real-time semantics of the original program (period, deadlines, release dates and precedences) as well as its functional semantics (respect of data-dependencies).
Dans cette thèse, nous définissons un langage de programmation haut-niveau pour les systèmes de contrôle temps réel. Ce langage suit l'approche formelle synchrone flot de données. S'y ajoutent des primitives temps réelles permettant de programmer des systèmes multi-périodiques. L'objectif de ce langage n'est pas de remplacer les autres langages synchrones (comme Lustre par exemple), mais plutôt de fournir une couche d'abstraction supplémentaire, au-dessus des langages synchrones classiques. Le langage peut-être vu comme un langage d'architecture logicielle temps réel, qui permet d'assembler plusieurs systèmes synchrones localement périodiques en un système synchrone global multi-périodique.
Le compilateur du langage génère un code C multi-tâches indépendant du système d'exploitation cible. Les communications sont gérées et synchronisées à l'aide d'un protocole de communication généré sur-mesure. Le processus de compilation est défini formellement et produit un code déterministe qui respecte à la fois la sémantique temps réel du programme d'origine (périodes, échéances, contraintes de précédence) et la sémantique fonctionnelle (respect des dépendances de données).
Origine : Fichiers produits par l'(les) auteur(s)