Technology > Systems > Avrora - Sensor Network Simulation
Jens Palsberg
The Avrora project encompasses simulation of sensor network programs at the instruction and network level as well as the development of new language and compiler technologies for implementing sensor network programs. We have implemented Avrora, an instruction-level sensor network simulator that simulates a network of AVR/Mica2 motes. Avrora can run SOS and TinyOS; Avrora can also simulate MIPS programs, but Avrora cannot yet simulate Telos motes. Karen Weeks (CENS) has developed an Emstar-Avrora connection. We are using Avrora as the basis for developing new programming languages for sensor networks. Our goal is to generate compact code and to make bug-finding easier for a model checker. Our work on implementing the new languages is greatly aided by being able to execute the generated code with the Avrora simulator.
We approach the simulation problem using efficient and scalable hardware emulation techniques. This gives developers the fidelity needed to test, debug, and measure programs that run on sensor hardware in a controlled environment. Our approach to language development is to strive for strong static type safety with efficient compiler techniques. Static type safety affords the best opportunity for finding bugs before deployment and gives good assurances of important robustness properties for low-level programs.
We continue to incorporate bugfixes and improvements to the Avrora simulator from both the community and our undergraduates, as well as upgrades to critical systems to support new devices and CPUs. The fourth release of Avrora is scheduled for Spring 2007.
In January 2007, we released the first version of the Virgil compiler, which includes full source code and a number of demonstrative applications. The release incorporated important improvements to the source language and compiler backend since our last report. Currently, undergraduates are working on drivers written in Virgil for the AVR microcontroller and the Mica2 sensor network platform.
Ben Titzer presented the Virgil paper at the OOPSLA conference in October 2006 and passed his oral examination in December. The ExoVM paper was submitted to PLDI 2007 and accepted. Several important Avrora bugfixes were contributed by the community and integrated into the codebase. The first version of the Virgil compiler and website were released in January 2007, which included significant improvements to the code generator and the addition of raw types.
In February 2007, undergraduates Ryan Hall and Akop Palyan developed a driver for the ADC device on the AVR and began work on the serial port and SPI drivers.
We plan to complete support for the Telos motes in the Avrora simulator in the summer of 2007. In the spring, we are focusing on extending Virgil and its compiler with parametric types and developing novel implementation techniques for efficiency in terms of both size and performance of generated code. We plan to have drivers for most major AVR and Mica2 hardware components written in Virgil and be able to write demonstrative sensor applications in Virgil.
Faculty:
Graduate Students:
Undergraduates:
We have collaborated with Olaf Landsiedel (University of Tuebingen, Germany) and Daniel K. Lee (formerly Cornell, now CMU), and we have an on-going interaction with John Regehr (University of Utah). Ben Titzer was an intern with David Bacon (IBM Watson) for four months in 2006; his project was to implement Java on small devices such as sensor nodes.