Wireless sensor nets (WSNs) promise anytime/anywhere information about the physical world with a spatio-temporal resolution that was unimaginable just a few years ago. However, development tools for WSNs are still conspicuously inadequate; they are notoriously unstable and difficult to debug, reprogram, or profile at run-time.
These problems motivate the need for virtual execution environments (VEEs) in the WSN domain. A VEE is a software system that sits above the hardware layer and modifies the execution behavior of a native binary executable at run time. VEEs are designed to perform operations on a program binary during execution, such as program shepherding, execution profiling, dynamic reprogramming, and debugging.
The overall goal of this research is to explore, design, implement, and evaluate VEEs for the WSN domain. This project considers three basic VEE architectures: injection-based, translation-based, and interpretation-based VEEs. A key aspect of this research is to revisit fundamental design decisions of conventional VEEs to make them operate with the limited resource profiles of sensor nodes. The results of this research will make it easier to quickly and robustly develop sensor network applications, thereby helping to transition this promising technology into the mainstream.