Projet de recherche doctoral numero :4321

Description

Date depot: 1 janvier 1900
Titre: Modèles de programmation de haut niveau pour micro-contrôleurs à faibles ressources
Encadrant : Philippe TRÉBUCHET (LIP6)
Directeur de thèse: Tristan CROLARD (CEDRIC)
Domaine scientifique: Sciences et technologies de l'information et de la communication
Thématique CNRS : Non defini

Resumé: La programmation des architectures à base de microcontrôleur est toujours difficile tant par les ressources limitées accessibles que par les modèles de programmation proposés. L’intégration électronique poussée d’un micro-contrôleur permet de diminuer la taille, la consommation électrique et le coût de ces circuits. La taille des programmes et la quantité de mémoire vive sont 'faibles', le tas peut être de quelques kilo-octets seulement. Ils doivent communiquer directement avec les dispositifs d’entrées/sorties (capteurs, effecteurs, ...) via les pattes du circuit principal, et ne possèdent pas les périphériques classiques (souris, clavier, écran). La mise au point d’un programme devient plus difficile de par ce manque d’interaction classique. Néanmoins il est toujours possible de leur connecter un écran Lcd de quelques lignes et des dispositifs de saisie spécifiques pour une application donnée. Les micro-contrôleur sont le plus souvent programmés en C ou en assembleur. Les environnements de programmation offrent souvent un simulateur qui permet de faire tourner le code sur l’ordinateur de développement avant de le charger sur le micro-contrôleur, mais ces simulateurs ne prennent pas en compte les dispositifs associés à un montage particulier. La mise au point reste tout de même difficile de par le style de programmation de bas niveau imposé pour ces architectures. Plusieurs développements récents ont proposé des langages de plus haut niveau pour la programmation de micro-contrôleurs, comme Picobit en Scheme [2] ou OCaPIC en OCaml [3]. OCaPIC est un ensemble d’applications et de bibliothèques permettant de programmer les microcontrôleurs PIC [1] en OCaml. Il permet de bénéficier de l’intégralité du langage OCaml sur PIC. Il fournit la majeure partie de la bibliothèque standard OCaml ainsi que des bibliothèques spécifiques aux PIC permettant de manipuler directement les ports et les interruptions matérielles, des afficheurs LCD, une connection série, ... Il possède de plus un mécanisme de simulation permettant de mettre au point les programmes OCaml sur un ordinateur avant de les transférer sur le PIC. Plusieurs réalisations électroniques ont été montées puis programmées via OCaPIC. Par ailleurs un portage d’OCaPIC sur Arduino basé sur le même schéma est bien avancé. Les expériences avec OCaPIC ont montré qu’il était beaucoup plus facile d’écrire et de mettre au point des programmes dans un langage de haut niveau comme OCaml qui intègre des traits fonctionnels, impératifs, modulaires et objets dans un cadre de typage statique avec une bibliothèque d’exécution gérant automatiquement la mémoire. La bibliothèque spécifique pour la gestion des entrées/sorties offre déjà un certain confort d’utilisation grâce à l’utilisation des types sommes mais nécessite tout de même une gestion manuelle des ports dans un style principalement impératif. On cherche alors à étudier des modèles de programmation concurrente permettant, d’une part, de gérer ces entrées/sorties, et d’autre part, d’introduire des traits concurrents dans le langage lui-même pour faciliter l’implantation de certains types d’algorithmes. Pour cela on s’inspire de l’embarqué critique qui utilise de manière importante les langages synchrones. On s’intéresse alors au modèle synchrone (à la Esterel [4] ou Lustre [5]) pour garder les propriétés de déterminisme de la composition parallèle, et à leur intégration dans un cadre fonctionnel/impératif typé à la RML ou REACT, ou dans un cadre objet à la SugarCubes [8].

Doctorant.e: Varoumas Steven