Networked Embedded Systems (NES) are tightly coupled to physical processes, and distributed across a relatively large number of processing nodes. Typically each node has a number of sensors and/or actuators directly connected to it that interact with the physical process at the node's physical location. One representative class of NES-s is Wireless Sensor Networks (WSN). The nodes of a typical WSN are characterized by severe resource constraints. The RAM available at a node can be as little as 4kB while the useful bandwidth of the wireless communication channel can be as limited as 1kB/sec.
These unique characteristics mandate the development of new design and development approaches. At the operating system level TinyOS is the de facto standard for WSNs. TinyOS is component-based and configurable; the application only needs to include the OS services it actually needs. In this framework, middleware and application code become TinyOS components themselves.
One drawback of the approach is that the management of a large number of hierarchically nested software components and their interactions via bidirectional interfaces becomes difficult. Also, the WSN domain is characterized by rapid innovation. New sensor platforms appear on a regular basis. TinyOS itself is a moving target.
What is needed is a composition framework extending the capabilities supported by the baseline operating system. This includes tool support to capture the design-space of the application, provide composition and code synthesis capabilities while supporting multiple hardware platforms in a transparent manner. Configurable middleware services are also required that fit in the framework and provide such indispensable services as message routing, time synchronization and node localization. Simulation and monitoring capabilities are capabilities in WSN application development.
Escher provides key elements of such a framework: