IO32 Project

Project FUI IO32

The main goal of FUI IO32 project is to facilitate the development of embedded applications by non-specialists. For this it is necessary to make available techniques and tools that match the project's stated ambitions. Here at UJF LIG (VASCO Team), our work is focused on helping the understanding of behaviors of microcontroller programs, especially faulty ones. This task is particularly tedious, because the main source of information on program behaviors are execution traces extracted directly from components.

For more information, see the Minalogic page about the project IO32 (in French).

A typical microcontroller architecture

Context

A microcontroller is an integrated circuit that incorporates onto the same microchip the essential elements of a computer. Microcontrollers have been adopted in various automated systems, ranging from airplane to washing machine. For a few years, it has been possible to recover the execution traces from microcontroller using a specific hardware architecture probe. However, trace files contain a large number of information, due to the cyclic characteristic of the embedded applications, making the manual analyze difficult. We focus on the problem of trace analysis, and the understanding of the program behavior to localize fault.

Trace abstraction

As a first step in helping the understanding of program traces and ultimately the fault diagnosis, we first propose to provide the debug engineer with a high level view of the execution trace. To do this, we defined an approach to summarize large execution traces, using a grammar-based data compression. This compression is able to find repeating patterns in the trace, what leads to very good compression rates. Moreover, because this method exploits the cycles present in such programs, its result (a grammar) facilitates the tiresome task of comparing cycles with one another. Taking into account this abstraction we now try to find new approach to localize fault using some data mining techniques.

This approach was implemented into a tool named J-Cyclitur, available on the J-Cyclitur page. Also, a batch of our last experimental results is available online in the Traces directory, with the input execution traces and the generated grammars (that is, the compression result).