Auteur / Autrice : | Steven Varoumas |
Direction : | Tristan Crolard |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance le 05/11/2019 |
Etablissement(s) : | Sorbonne université |
Ecole(s) doctorale(s) : | École doctorale Informatique, télécommunications et électronique de Paris |
Partenaire(s) de recherche : | Laboratoire : LIP6 (1997-....) |
Jury : | Président / Présidente : Carlos Agón |
Examinateurs / Examinatrices : Mihaela Sighireanu, Timothy Bourke, Emmanuel Chailloux, Philippe Trébuchet | |
Rapporteurs / Rapporteuses : Claire Pagetti, Alan Schmitt |
Mots clés
Résumé
Les microcontrôleurs sont des circuits imprimés programmables nichés dans de nombreux objets de notre quotidien. En raison de leurs ressources limitées, ils sont souvent programmés dans des langages de bas niveau comme le C, ou en langage assembleur. Ces derniers n'offrent pas les mêmes abstractions et les mêmes garanties que des langages de haut niveau, comme OCaml. Cette thèse propose alors un ensemble de solutions destinées à enrichir la programmation de microcontrôleurs avec des paradigmes de programmation de plus haut niveau. Ces solutions apportent une montée en abstraction progressive, permettant notamment de réaliser des programmes indépendants du matériel utilisé. Nous présentons ainsi une première abstraction du matériel prenant la forme d’une machine virtuelle OCaml, qui permet de profiter des nombreux avantages du langage tout conservant une faible empreinte mémoire. Nous étendons par la suite OCaml avec un modèle de programmation synchrone inspiré du langage Lustre et permettant d'abstraire les aspects concurrents d’un programme. Une spécification formelle du langage est donnée, et plusieurs propriétés de typage sont par la suite vérifiées. Les abstractions offertes par nos travaux induisent par ailleurs la portabilité de certaines analyses statiques pouvant être réalisées sur le bytecode des programmes. Une telle analyse, servant à estimer le temps d’exécution pire-cas d’un programme synchrone, est alors proposée. L'ensemble des propositions de cette thèse constitue une chaîne complète de développement, et plusieurs exemples d’applications concrètes illustrant l'intérêt des solutions offertes sont alors présentées.