Time-Aware Instrumentation of Embedded Software
- 30 August 2010
- journal article
- Published by Institute of Electrical and Electronics Engineers (IEEE) in IEEE Transactions on Industrial Informatics
- Vol. 6 (4), 652-663
- https://doi.org/10.1109/tii.2010.2068304
Abstract
Software instrumentation is a key technique in many stages of the development process. It is particularly important for debugging embedded systems. Instrumented programs produce data traces which enable the developer to locate the origins of misbehaviors 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 this work, we propose an instrumentation technique for applications with temporal constraints, specifically targeting background/foreground or cyclic executive systems. Our framework permits reasoning about space and time and enables the composition of 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 with respect to code size and time budgets. Finally, we apply the theory to two concrete case studies: we instrument the OpenEC firmware for the keyboard controller of the One Laptop Per Child project, as well as an implementation of a flash file system.Keywords
This publication has 20 references indexed in Scilit:
- What makes a good bug report?Published by Association for Computing Machinery (ACM) ,2008
- The worst-case execution-time problem—overview of methods and survey of toolsACM Transactions on Embedded Computing Systems, 2008
- ValgrindPublished by Association for Computing Machinery (ACM) ,2007
- ATOMACM SIGPLAN Notices, 2004
- JaRec: a portable record/replay environment for multi‐threaded Java applicationsSoftware: Practice and Experience, 2004
- Record/replay for nondeterministic program executionsCommunications of the ACM, 2003
- Interrupt replay: a debugging method for parallel programs with interruptsMicroprocessors and Microsystems, 1994
- Applying new scheduling theory to static priority pre-emptive schedulingSoftware Engineering Journal, 1993
- A noninterference monitoring and replay mechanism for real-time software testing and debuggingIEEE Transactions on Software Engineering, 1990
- Reducibility among Combinatorial ProblemsPublished by Springer Science and Business Media LLC ,1972