Skip to content
This repository has been archived by the owner on Aug 25, 2020. It is now read-only.

ISense software

Marvin Frick edited this page May 28, 2013 · 1 revision

iSense modular firmware and simulation environment

The flexible and modular hardware design of the iSense platform requires the same flexibility of the software that drives the individual sensor nodes. The iSense software has been designed with maximal flexibility in mind while allowing for a professional, industry-grade development experience. One of the fundamental design guidelines is to use state of the art programming methods that are well understood by a large user community. Advanced techniques such as object oriented C++ programming and dynamic memory allocation, that are usually not available in sensor network environments, enable a rapid and error-avoiding development process. In addition, run-time memory allocation allows for appropriately sized buffers etc. and hence increases memory efficiency.

Isense_software.png

All firmware functionality is structured into modules that can be individually configured to be part of the firmware or not (cp. the figure above). Like this, lean but comprehensive software that contains exactly the features required for the target application can be developed.

The firmware is divided into three parts:

  • The Hardware Abstraction Layer (HAL) encapsulates hardware-specific drivers for the radio, A/D & D/A converters and I/O interfaces
  • Operating system functionality such as power management, tasking or timing
  • Protocol suites including routing, transport, time synchronization, location awareness or over-the-air programming

The HAL encapsulates hardware functionality and hides intricate details of the underlying hardware by providing a focused and straightforward application programmer's interface to upper layers. Abstractions for interacting with A/D & D/A converters and I/O interfaces (e.g., serial UARTs, I$^2$C and SPI) are available as well as for timers, permanent storage and the wireless interface.

Using this architecture, all modules above the HAL are independent of a particular hardware platform. Application code developed using this framework is ready-to-run on any platform that provides an implementation of the iSense-API. Currently, the iSense-API is available in two flavors: one for the iSense hardware platform and one for the simulation framework Shawn. This allows developers to test their implemented functionality inside a simulation framework before the application is actually deployed on iSense nodes thus significantly increasing the development speed.

On top of the hardware abstractions, the iSense framework provides operating system functionalities that ease application development through an event-driven model. Applications receive call-backs whenever events occur for which the application has registered itself. These events occur either application-driven (e.g., when timers elapse) or hardware-driven (e.g., when input signals of A/D converters change or data is received on one of the I/O-systems). For the application-driven events, the iSense operating system offers two distinct choices. Whenever high timing precision is required, a timing service allows callbacks to be handled uninterruptible and with minimal delay in the interrupt context. Functionality that is not time-critical can register with the tasking service that can be interrupted by the timing service. Finally, the operating system is responsible for conserving the scarce energy resources of a sensor node whenever possible. If desired by the user, the power management infrastructure can put the device into one of the different low power modes.

Besides the functionality that operates strictly local on each single sensor node, one key ingredient of WSNs is wireless communication and consequently a subset of the iSense-modules tackles especially this issue. The HAL already contains convenient abstractions from the details of the wireless interface on top of which the networking support of iSense provides a number of powerful, sophisticated services.

Typical WSN applications require that data is communicated well beyond the communication range of a single sensor node and iSense offers a number of routing modules that cover a large portion of the design space for sensor network applications. First, a flooding implementation that provides an error-resilient, robust method for conveying data to a set of nodes that is within an n-hop neighborhood of the sending node. Second, a tree-routing module that enables data transfer from the network to one or more sinks. The metric for the link choices is based on packet losses in order to maintain routes with high delivery rates and hence increase network robustness. This metric is also used by two other routing schemes that provide a one-to-one-semantic, creating either unidirectional or bidirectional paths through the network. In addition, a number of traditional ad-hoc routing protocols such as DSDV PERKINS, C., AND BHAGWAT, P. Highly dynamic destination-sequenced distance-vector routing (DSDV) for mobile computers. In ACM SIGCOMM'94 Conference on Communications Architectures, Protocols and Applications (1994), pp. 234-244. or LMR CORSON, M. S., AND EPHREMIDES, A. A distributed routing algorithm for mobile wireless networks. In Wireless Networks, vol. 1. Kluwer Academic Publishers, February 1995, pp. 61-81. have been integrated into iSense.

Besides routing, a highly accurate time-synchronization scheme that provides an accuracy of less than 1ms is part of iSense as well as the well-known localization protocols described in LANGENDOEN, K., AND REIJERS, N. Distributed localization in wireless sensor networks: a quantitative comparison. Comput. Netw. 43, 4 (2003), 499-518.. They are augmented by reliable multi-hop transport and over-the-air programming modules.

iSense ships with a tiny and lean STL-like implementation that relieves application developers from dealing with recurring and error-prone tasks. It provides implementations for standard containers such as lists, sets and maps. As a result, the development of applications for the iSense platform is completely based on familiar technologies and does not require proprietary extensions. Hence, the extremely flat learning curve enables a rapid application development that benefits from existing domain expertise of the developers and a plethora of available tools.

Apart from the features of the iSense hardware and software, a comprehensive and accepted development environment is a vital property for successful application development. The iSense software and the development tool-chain are available free of charge and use widely accepted and tools such as the Gnu Compiler Collection (GCC) and the Eclipse development framework. Furthermore, iSense provides iShell, a convenient means to interact with the sensor network. It combines the functionality of a serial terminal, serial and over-the-air programming of sensor nodes as well as a flexible plug-in system for integrating user-defined functionality such as data analysis or wireless monitoring. iSense and iShell provide an optional (de)-multiplexing service on the serial link. This enables applications to use a number of different, independent data streams, e.g., separating debugging output from application data streams.

References