proposition de stage de M2 :
Environnement pour la plate-forme OMicroB pour le développement d’applications génériques sur micro-contrôleurs
Encadrant : Emmanuel Chailloux (APR-LIP6-UPMC) - Emmanuel.Chailloux@lip6.fr
Lieu : LIP6 - Campus Jussieu - 4, place Jussieu 75005 Paris
Durée et dates : 5 à 6 mois à partir de février 2019
Rémunération : standard

Description

Contexte

: La programmation des architectures à base de microcontrôleurs est 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. Dans l’industrie, les micro-contrôleurs sont le plus souvent programmés en C ou en assembleur.
On rencontre plusieurs difficultés lors de la programmation de tels appareillages, à savoir le niveau d’abstraction du matériel, le niveau d’abstraction du langage de programmation, l’abstraction des interactions et de la concurrence.

Plusieurs développements ont proposé des langages de plus haut niveau pour la programmation de micro-contrôleurs, comme Picobit en Scheme [1] ou OCaPIC en OCaml [5]. OCaPIC est un ensemble d’applications et de bibliothèques permettant de programmer les microcontrôleurs PIC en OCaml. Il permet de bénéficier de l’intégralité du langage OCaml sur PIC. 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.

Actuellement on s’intéresse à une nouvelle version portable de la machinerie OCaml, appelée OMicroB[4], qui engendre un programme C contenant la version byte-code du programme OCaml ainsi que l’interprèete de ce byte-code OCaml. Actuellement cette version cible l’architecture Arduino [ARD]. Par ailleurs une extension synchrone à flots de données, appelée OCaLustre[2, 3], est particulièrement appropriée pour décrire les interactions externes et la concurrence interne à l’application. Le couple OCaLustre+OMicroB permet une programmation mixte (synchrone et multi-paradigme classique) avec une consommation parcimonieuse des ressources. L’intérêt de ces couches d’abstractions est de faciliter le dévellopement d’applications fiables sur micro-contrôleurs.

Objectifs

Ce projet vise à augmenter les niveaux d’abstraction en s’intéressant aux montages eux-mêmes. Pour cela il convient d’une part de bien spécifier les principaux modes de communication avec l’extérieur ainsi que les gestionneurs de temps des micro-contrôleurs (timers, ...) pour ensuite décrire le montage associé au micro-contrôleur. Cette description peut être en format textuel ou graphique. Certains propriétés peuvent être liées à la partie communication du micro-contrôleur ainsi que certaines caractéristiques sur les composants du montage. Cet environnement doit être portable pour pouvoir << facilement >> décrire des montages utilisant des micro-contrôleurs différents. Le côté portable d’OMicroB est alors primordial. Pour le moment il fonctionne sur architecture Arduino mais la plate-forme PIC est aussi une cible.

L’objectif est donc de pouvoir décrire son montage sur un microcontrôleur donné pour pouvoir ensuite programmer l’application tout en apportant des garanties de fonctionnement du montage. Une partie de celles-ci viennent de l’approche machine virtuelle d’OMicroB et de la programmation synchrone d’OCaLustre. Une autre partie proviendra de la description, soit en OCaLustre, soit dans un autre formalisme, permettant de vérifier le bon usage de certains composants en fonction des propriétés liées. Une partie réalisation permettra de valider la démarche. La facilité d’emploi et les garanties de fonctionnement seront à comparer avec d’autres environnement, comme MicroPython par exemple.

On peut donc découper le travail en plusiseurs étapes :

Références

[1]
V. St-Amour and M. Feeley. Picobit: A Compact Scheme System for Microcontrollers. In International Symposium on Implementation and Application of Functional Languages (IFL’09), pages 1–11, Sept. 2009.
[2]
S. Varoumas, B. Vaugon, and E. Chailloux. Concurrent Programming of Microcontrollers, a Virtual Machine Approach. In 8th European Congress on Embedded Real Time Software and Systems (ERTS 2016), pages 711–720, Jan. 2016.
[3]
S. Varoumas, B. Vaugon, and E. Chailloux. Ocalustre : une extension synchrone d’ocaml pour la programmation de microcontrôleurs. In Vingt-huitièmes Journées Francophones des Langages Applicatifs (JFLA 2017), Jan. 2017.
[4]
S. Varoumas, B. Vaugon, and E. Chailloux. A Generic Virtual Machine Approach for Programming Microcontrollers: the OMicroB Project. In 9th European Congress on Embedded Real Time Software and Systems (ERTS 2018), Jan. 2018.
[5]
B. Vaugon, P. Wang, and E. Chailloux. Programming Microcontrollers in Ocaml: the OCaPIC Project. In International Symposium on Practical Aspects of Declarative Languages (PADL 2015), volume 9131 of Lecture Notes in Computer Science, pages 132–148. Springer Verlag, June 2015.

Liens

[ARD] ARDUINO : http://www.arduino.cc

[OCaPIC] OCaPIC : http://www.algo-prog.info/ocapic

[OMicroB] OMicroB : https://github.com/stevenvar/OMicroB

[OCaLustre] OCaLustre : https://github.com/stevenvar/OCaLustre


Ce document a été traduit de LATEX par HEVEA