[ Slides Directory Listing | Papers ]
The nesC Language:
A Holistic Approach to Networked Embedded Systems
We present nesC, a programming language for
networked embedded systems, such as sensor network “motes,” which
represent a new design space for application developers. Sensor networks
consist of (potentially) thousands of tiny, low-power “motes,” each of
which execute concurrent, reactive programs that must operate with
severe memory and power constraints. nesC’s contribution is to support
the special needs of this domain by exposing a programming model that
incorporates event-driven execution, a flexible concurrency model, and
component-oriented application design. Restrictions on the programming
model allow the nesC compiler to perform whole-program analyses,
including data-race detection (which improves reliability) and
aggressive function inlining (which reduces resource consumption).
nesC has been used to implement TinyOS, a small operating system for
sensor networks, as well as several significant sensor applications.
nesC and TinyOS have been adopted by a large number of sensor network
research groups, and our experience and evaluation of the language shows
that it is effective at supporting the complex, concurrent programming
style demanded by this new class of deeply networked systems.