Wireless Embedded Systems (WES) are an attractive solution to sensing tasks in environments without preexisting infrastructure. Unfortunately, software defects that survive into deployment are particularly challenging to detect and diagnose due to resource and real-time constraints. How can developers get access to the state needed to understand their system’s runtime behavior? Do developers really need to resort to watching blinking LEDs on their embedded hardware?
This talk explores a solution using a low bandwidth (oh yes, we get excited about saving even a single bit!) logging framework. Log size is minimized without resorting to runtime compression by exploiting program structure to create small token name spaces from which token identifiers are assigned. These small token name spaces facilitate identifier assignments that consistently require fewer than eight bits to encode and that can be efficiently packed into bit aligned data structures. Logging tasks are described using a small language that drives a preprocessor to augments the target code base at compile time. This solution is easy for WES developers to integrate into their standard work flow and facilities construction of higher level logging tools.
This work was done in collaboration with Young Cho, Mani Srivastava, and the broader community in UCLA’s Network Embedded Systems Laboratory. The work was funded in part by the National Science Foundation under award CCF-0820061 and by the Center for Embedded Networked Sensing.