Copilot: a hard real-time runtime monitor
RV'10 Proceedings of the First international conference on Runtime verification
Runtime monitoring of time-sensitive systems
RV'11 Proceedings of the Second international conference on Runtime verification
Runtime verification of real-time embedded systems
Proceedings of the tenth ACM international conference on Embedded software
An approach to testing commercial embedded systems
Journal of Systems and Software
Hi-index | 0.00 |
Software instrumentation is a key technique in many stages of the development process. It is of particular importance for debugging embedded systems. Instrumented programs produce data traces which enable the developer to locate the origins of misbehaviours in the system under test. However, producing data traces incurs runtime overhead in the form of additional computation resources for capturing and copying the data. The instrumentation may therefore interfere with the system's timing and perturb its behavior. In the worst case, this perturbation leads to new system behaviours that prevent the developer from locating the original misbehaviours.In this work, we propose an instrumentation technique for applications with temporal constraints, specifically targetting background/foreground systems. Our framework permits reasoning about space and time for software instrumentations. In particular, we propose a definition for trace reliability, which enables us to instrument real-time applications which aggressively push their time budgets. Using the framework, we present a method with low perturbation by optimizing the number of insertion points and trace buffer size for code size and time budgets. Finally, we apply the theory to a concrete case study and instrument the OpenEC firmware for the keyboard controller of the One Laptop Per Child project.