Synchronous Programming of Device Drivers for Global Resource Control in Embedded Systems

"Tout commence par une interruption." (Everything starts with an interruption.), Paul Valéry (perverted quote).

I prepared my PhD in the Synchrone team at the Verimag laboratory, where I worked on the design of resource-aware software for embedded systems. The hardware platforms usually employed in these systems provide a limited amount of memory, computational power and energy. The software they execute is then constrained by such limited resources. Usual applications involve further objectives, such as reactivity and lifetime. In addition, these platforms comprise shared resources like buses or even the energy provided by a battery. Hence, global properties concerning the whole platform must be enforced, for instance to control concurrent accesses to a bus or power consumption. As device drivers are commonly developed individually, the knowledge necessary to implement global control policies is distributed among several pieces of software.

I proposed a global control approach, based on a centralized view of the devices' states. Built upon para-virtualization principles, it operates on the hardware/software interface. It involves a simple adaptation of the guest operating system, to communicate with the hardware via a control layer. The control layer itself is built from a set of simple automata: the device drivers, whose states correspond to functional or power consumption modes, and a controller to enforce global properties. All these automata are programmed using a synchronous language, and compiled into a single piece of sequential code.

I defended my PhD on March 12, 2012. My advisors were Florence Maraninchi and Laurent Mounier.

Journal Article