Instrumentation and Debugging of Real-time Systems
Software testing and debugging take up between 30 and 50% of the development cost in embedded systems. Despite this large percentage and the associated enormous costs, only little attention has been devoted to debugging of embedded real-time systems. Apart from in-circuit emulators for standalone systems, ad-hoc methods such as blinking lights to indicate errors and morsing error codes via beepers are still widespread debugging methods.
One way to debug systems is by creating application traces at run time by instrumenting the software. The instrumented mechanism, however, must preserve the logical correctness and respect the timing and resource bounds of the application. In our research, we investigate mechanisms for instrumenting and debugging real-time embedded software that satisfies a specified set of constraints.
Two possible student roles are available:
Theory role: We will investigate new instrumentation techniques at the level of control-flow graphs and timing diagrams and evaluate the resulting algorithms (complexity, correctness, soundness). We will further compare the new algorithms with the existing algorithms (language inclusion, counter-examples).
Practical role: We will investigate already established instrumentation techniques and evaluate their influence on logical correctness as well as temporal and resource bounds. We will use a real-time operating system and measure the effect of different algorithms on a standardized benchmark for real-time embedded systems.