The description of the work to be done will be detailed later. Feel free to contact mailto:Florence.Maraninchi imag.fr for more details if you are interested.
The general context: using synchronous languages and tools to program the low-level software of a node used in a sensor network. A sensor network is made of a set of small nodes, each one being an embedded system: there are scarce resources (memory, computing power, energy consumption), and the development of the software depends a lot on the hardware. The existing practices for the design of low-level software (typically the Medium-Access-Control, or MAC, layer) on a sensor node are often based on the event-driven paradigm. See, for instance, the programming model in TinyOS. In event-driven programming, one essentially describes the logic of a program with an automaton, whose transitions are triggered by events, and a set of callbacks, i.e., functions to be executed whenever an event occurs. When the logic of the program becomes complex, the automaton grows, and may be hard to develop, understand, and maintain.
We propose to use the family of synchronous languages to program the low-level software of a node. The first idea is that it will provide structured event-driven programming very easily: instead of using a single (potentially big) automaton for the logic of the program, one will be able to use several coordinated (small) automata.
See this paper for an introduction, both to low-level programming on a sensor node, and to a very simple use of synchronous languages in this context. For the type of sensor nodes used, see this web page.
Expected Skills and Background:
- fluency in low-level (usually C) programming and operating systems
- compilation techniques
- ability to manipulate automata and other formally-defined programming models
- re-engineering of an existing low-level protocol (probably a MAC, but there will be some discussions on the piece of software to study); this first phase consists in studying the existing code, in order to understand the underlying automaton structure and the principles that were used to encode it into C.
- proposal of an equivalence criterion: when proposing an alternative programming style for an existing piece of software, one has to provide convincing arguments on the fact that the new program behaves as the old one;
- development and evaluation (on emulators or real sensor nodes) of low-level C code for wireless sensor networks, designed with the aim of reducing energy consumption.