Deluge: TinyOS Network Programming

 

 

 

 

 

The real way to program your motes

 

 

Version 2.0 Changes

Deluge 2.0 tackles lessons learned from its initial version. The main goal of this version is to enhance robustness and useability. You will never switch back after upgrading. Deluge 2.0 is currently supports the Mica2, Mica2-dot, MicaZ, Telos rev. A, Telos rev. B, Tmote Sky, and TOSSIM platforms. Code is available in Sourceforge and is a part of TinyOS 1.1.14 and later.

  • Verify image before programming: TOSBoot first verifies the CRCs in the image before programming to help ensure the program is valid.
  • Check system voltage before programming: Make sure the system voltage is above the required threshold to ensure that bits are written correctly.
  • Rollback to Golden Image on failure: TOSBoot will automatically attempt to load the Golden Image if a programming attempt has failed, bringing the node into a network programmable state.
  • Hardware write protect: Support for hardware write protection to prevent application code from modifying the Golden Image.
  • Verbose information: Image metadata include program name, compile time, hostname that compiled the code, and user that compiled the code.
  • Protected data structures: Metadata data-structures include CRCs generated by the host PC to limit propagation of corrupt data-structures.
  • Auto-detection of TOSBase: The Deluge java app operates exactly the same whether a Deluge or TOSBase node is connect. The '-t' option is no longer required at the command line.
  • Auto-resume incomplete images: Auto-resume of incomplete images, using program name, unix time, and user hash to identify identical images.
  • Auto-detect identical images: Auto-detection of identical images so that images are not accidentally downloaded more than once by the user.
  • Operator error protection: Metadata information clearly displayed and now requires user confirmation to continue execution.
  • Reset images: Reset Deluge images before shifting your nodes from network to network and prevent unintentional infection of nodes.
  • nesC TOSBoot: TOSBoot bootloader now written in nesC.
  • TinyOS 2.x storage abstraction: Support for TinyOS 2.x hardware independent storage abstraction.
  • Download Deluge images from any node: The program image can be downloaded from any node, including all metadata.
  • Protocol version number: Version number information included in Deluge packets to prevent nodes with different versions of Deluge from conflicts.
  • DMA transfer support: CRCs are no longer inlined with program data, thus allowing for DMA transfers from external flash to program flash.
  • Less code size: All improvements implemented in less code size than Deluge 1.0.

Version 1.0

  • Multihop support: Wirelessly program all nodes in a multihop network without touching your nodes.
  • Epidemic propagation: Continuous propagation effort by all nodes helps ensure reachability of those nodes with intermittent connectivity.
  • Store multiple program images: With each node storing multiple program images, quickly switch your network between different programs without continuous downloading.
  • Operate heterogeneous networks: Run different application code on different nodes.
  • Golden image: A program image with minimal support for network programming is stored in a safe location on external flash. Always have a piece of code that will allow for recovery.
  • Isolated bootloader: A piece of code that is guaranteed to execute after each reset independent of the TinyOS application. The bootloader is responsible for programming the microcontroller and recovers from programming errors by loading the Golden Image.
  • Rollback gesture: Nodes crashed without setting a watchdog timer? Load the Golden Image simply by flicking the reset switch a few times and they're ready to accept a new program wirelessly.
  • Redundant data integrity checks: CRCs at different levels of hierarchy help ensure that program images at all nodes are not corrupted.
  • Small RAM footprint: At less than 150 bytes.