Visualizing the runtime behavior of embedded network systems: A toolkit for TinyOS

  • Authors:
  • Andrew R. Dalton;Sally K. Wahba;Sravanthi Dandamudi;Jason O. Hallstrom

  • Affiliations:
  • Department of Mathematics and Computer Science, Western Carolina University, Cullowhee, NC 28723, USA;School of Computing, Clemson University, Clemson, SC 29634, USA;School of Computing, Clemson University, Clemson, SC 29634, USA;School of Computing, Clemson University, Clemson, SC 29634, USA

  • Venue:
  • Science of Computer Programming
  • Year:
  • 2009

Quantified Score

Hi-index 0.00

Visualization

Abstract

TinyOS is an effective platform for developing lightweight embedded network applications. But the platform's lean programming model and power-efficient operation come at a price: TinyOS applications are notoriously difficult to construct, debug, and maintain. The development difficulties stem largely from a programming model founded on events and deferred execution. In short, the model introduces non-determinism in the execution ordering of primitive actions - an issue exacerbated by the fact that embedded network systems are inherently distributed and reactive. The resulting set of possible execution sequences for a given system is typically large and can swamp developers' unaided ability to reason about program behavior. In this paper, we present a visualization toolkit for TinyOS 2.0 to aid in program comprehension. The goal is to assist developers in reasoning about the computation forest underlying a system under test and the particular branches chosen during each run. The toolkit supports comprehension activities involving both local and distributed runtime behavior. The constituent components include (i) a full-featured static analysis and instrumentation library, (ii) a selection-based probe insertion system, (iii) a lightweight event recording service, (iv) a trace extraction and reconstruction tool, and (v) three visualization front-ends. We demonstrate the utility of the toolkit using both standard and custom system examples and present an analysis of the toolkit's resource usage and performance characteristics.