ABSTRACT
We present nesC, a programming language for networked embedded systems that represent a new design space for application developers. An example of a networked embedded system is a sensor network, which consists 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.
- J. Aldrich, C. Chambers, and D. Notkin. Architectural Reasoning in ArchJava. In European Conference on Object Oriented Programming (ECOOP), June 2002.]] Google ScholarDigital Library
- F. Bachmann, L. Bass, C. Buhrman, S. Cornella-Dorda, F. Long, J. Robert, R. Seacord, and K. Wallnau. Volume II: Technical Concepts of Component-Based Software Engineering, 2nd Edition. Technical Report CMU/SEI-2000-TR-008, Carnegie Mellon Software Engineering Institute, May 2000.]]Google ScholarCross Ref
- A. Benveniste, P. L. Guernic, and C. Jacquemot. Synchronous programming with events and relations: the SIGNAL language and its semantics. Science of Computer Programming, 16(2):103--149, Sept. 1991.]] Google ScholarDigital Library
- F. Boussinot and R. de Simone. The ESTEREL Language. Proceedings of the IEEE, 79(9):1293--1304, Sept. 1991.]]Google ScholarCross Ref
- H. de Bruin. BCOOPL: A Langage for Controlling Component Interactions. Journal of Supercomputing, 2002. Accepted for publication.]] Google ScholarDigital Library
- R. Deline and M. Fahndrich. Enforcing High-level Protocols in Low-Level Software. In Proceedings of the ACM SIGPLAN '01 Conference on Programming Language Design and Implementation, pages 59--69, June 2001.]] Google ScholarDigital Library
- D. L. Detlefs, K. R. M. Leino, G. Nelson, and J. B. Saxe. Extended static checking. Technical Report #159, Palo Alto, USA, 1998.]]Google Scholar
- J.-P. Fassino, J.-B. Stefani, J. Lawall, and G. Muller. THINK: A Software Framework for Component-based Operating System Kernels. In Proceedings of Usenix Annual Technical Conference, June 2002.]] Google ScholarDigital Library
- M. Flatt and M. Felleisen. Units: Cool modules for HOT languages. In Proceedings of the ACM SIGPLAN '98 Conference on Programming Language Design and Implementation, pages 236--248, 1998.]] Google ScholarDigital Library
- B. Ford, G. Back, G. Benson, J. Lepreau, A. Lin, and O. Shivers. The Flux OSKit: A Substrate for Kernel and Language Research. In Proceedings of the Symposium on Operating Systems Principles, pages 38--51, 1997.]] Google ScholarDigital Library
- N. Halbwachs, P. Caspi, P. Raymond, and D. Pilaud. The synchronous data-flow programming language LUSTRE. Proceedings of the IEEE, 79(9):1305--1320, September 1991.]]Google ScholarCross Ref
- S. P. Harbison. Modula-3. Prentice Hall, 1991.]] Google ScholarDigital Library
- T. A. Henzinger, B. Horowitz, and C. M. Kirsch. Embedded Control Systems Development with Giotto. In Proceedings of the ACM Workshop on Languages, Compilers and Tools for Embedded Systems (LCTES), pages 64--72, June 2001.]] Google ScholarDigital Library
- A. Herbert. An ANSA Overview. IEEE Network, 8(1):18--23, 1994.]]Google ScholarDigital Library
- M. Herlihy. A methodology for implementing highly concurrent data objects. ACM Transactions on Programming Languages and Systems, 15(5):745--770, November 1993.]] Google ScholarDigital Library
- J. Hill, R. Szewczyk, A. Woo, S. Hollar, D. E. Culler, and K. S. J. Pister. System Architecture Directions for Networked Sensors. In Architectural Support for Programming Languages and Operating Systems, pages 93--104, 2000. TinyOS is available at http://webs.cs.berkeley.edu.]] Google ScholarDigital Library
- N. C. Hutchinson and L. L. Peterson. Design of the phx-kernel. In Proceedings of SIGCOMM '88, pages 65--75, Aug. 1988.]] Google ScholarDigital Library
- IEEE Standard 1076-2002. VHDL Language Reference Manual.]]Google Scholar
- C. Intanagonwiwat, D. Estrin, R. Govindan, and J. Heidemann. Impact of network density on data aggregation in wireless sensor networks. In Proceedings of International Conference on Computing Systems (ICDCS), July 2002.]] Google ScholarDigital Library
- International Organisation for Standardization. Ada 95 Reference Manual, Jan. 1995.]]Google Scholar
- ISO/IEC International Standard 10746-3. ODP Reference Model: Architecture, 1995.]]Google Scholar
- M. Jones. What really happened on mars rover pathfinder. The Risks Digest, 19(49).]]Google Scholar
- B. W. Kernighan and D. M. Ritchie. The C Programming Language, Second Edition. Prentice Hall, 1988.]] Google ScholarDigital Library
- E. Kohler, B. Chen, M. F. Kaashoek, R. Morris, and M. Poletto. Programming language techniques for modular router configurations. Technical Report MIT-LCS-TR-812, MIT Laboratory for Computer Science, Aug. 2000.]]Google Scholar
- Lab Notes: Research from the College of Engineering, UC Berkeley. Smart buildings admit their faults., 2001. http://coe.berkeley.edu/labnotes/1101.smartbuildings.html.]]Google Scholar
- B. W. Lampson and D. D. Redell. Experience with processes and monitors in mesa. In Proceedings of the 7th ACM Symposium on Operating Systems Principles (SOSP), pages 43--44, 1979.]] Google ScholarDigital Library
- N. Leveson and C. S. Turner. An investigation of the therac-25 accidents. IEEE Computer, 26(7):18--41, July 1993.]] Google ScholarDigital Library
- P. Levis and D. Culler. Maté: A Tiny Virtual Machine for Sensor Networks. In Proceedings of the ACM Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), Oct. 2002.]] Google ScholarDigital Library
- S. R. Madden, M. J. Franklin, J. M. Hellerstein, and W. Hong. TAG: a Tiny AGgregation Service for Ad-Hoc Sensor Networks. In Proceedings of the ACM Symposium on Operating System Design and Implementation (OSDI), Dec. 2002.]] Google ScholarDigital Library
- A. Mainwaring, J. Polastre, R. Szewczyk, D. Culler, and J. Anderson. Wireless Sensor Networks for Habitat Monitoring. In Proceedings of the ACM International Workshop on Wireless Sensor Networks and Applications, Sept. 2002.]] Google ScholarDigital Library
- J. Mellor-Crummey. On-the-fly detection of data races for programs with nested fork-join parallelism. In Proc. of Supercomputing '91, pages 24--33, 1991.]] Google ScholarDigital Library
- Microsoft C# Language Specification. Microsoft Press. ISBN 0-7356-1448-2.]]Google Scholar
- Microsoft. Windows CE. http://www.microsoft.com.]]Google Scholar
- OLE2 Programmer's Reference, Volume One. Microsoft Press, 1994.]]Google Scholar
- J. Mitchell. Mesa language manual. Technical Report CSL-79-3, Xerox PARC, 1979.]]Google Scholar
- R. Morris, E. Kohler, J. Jannotti, and M. F. Kaashoek. The Click Modular Router. In Proceedings of the ACM Symposium on Operating Systems Principles (SOSP), pages 217--231, 1999.]] Google ScholarDigital Library
- D. Mosberger and L. L. Peterson. Making Paths Explicit in the Scout Operating System. In Operating Systems Design and Implementation, pages 153--167, 1996.]] Google ScholarDigital Library
- A. Mycroft and R. Sharp. A Statically Allocated Parallel Functional Language. In Proceedings of the Internal Conference on Automata, Languages and Programming (ICALP), pages 37--48, 2000.]] Google ScholarDigital Library
- R. H. B. Netzer. Race condition detection for debugging shared-memory parallel programs. Technical Report CS-TR-1991-1039, 1991.]]Google Scholar
- Object Management Group. Common Object Request Broker Architecture. Available at http://www.omg.org.]]Google Scholar
- Object Management Group. CORBA Component Model (CCM) Specification. Available at http://www.omg.org.]]Google Scholar
- QNX Software Systems, Ltd, Kanata, Ontatio, Canada. http://www.qnx.com.]]Google Scholar
- A. Reid, M. Flatt, L. Stoller, J. Lepreau, and E. Eide. Knit: Component composition for systems software. In Proceedings of the 4th ACM Symposium on Operating System Design and Implementation, pages 347--360, Oct. 2000.]] Google ScholarDigital Library
- S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. Anderson. Eraser: A dynamic data race detector for multithreaded programs. ACM Transactions on Computer Systems, 15(4):391--411, 1997.]] Google ScholarDigital Library
- Sun Microsystems. Enterprise Java Beans. Available at http://java.sun.com/ejb.]]Google Scholar
- SunSoft. Sun Workshop 5.0 Collection: Chapter 5, Lock Analysis Tool, 2000.]]Google Scholar
- T. von Eicken, D. E. Culler, S. C. Goldstein, and K. E. Schauser. Active Messages: A Mechanism for Integrated Communication and Computation. In Proceedings of the International Symposium on Computer Architecture, pages 256--266, 1992.]] Google ScholarDigital Library
- Z. Wan, W. Taha, and P. Hudak. Event-Driven FRP. In Proceedings of the Internation Symposium on Principles of Declarative Languages (PADL), volume 2257, pages 155--172, 2001.]] Google ScholarDigital Library
- B. Warneke, M. L. andl B. Liebowitz, and K. Pister. Smart dust: Communicating with a cubic-millimeter computer. IEEE Computer Magazine, pages 44--51, January 2001.]] Google ScholarDigital Library
- K. Whitehouse and D. Culler. Calibration as Parameter Estimation in Sensor Networks. In Proceedings of the ACM International Workshop on Wireless Sensor Networks and Applications, Sept. 2002.]] Google ScholarDigital Library
- Wind River Systems, Inc, Alameda, CA, USA. http://www.vxworks.com.]]Google Scholar
- N. Wirth. Programming in Modula-2. Springer Verlag, 1992.]] Google ScholarDigital Library
- N. Wirth and M. Reiser. Programming in Oberon - Steps Beyond Pascal and Modula. Addison-Wesley, 1992. ISBN 0-201-56543-9.]] Google ScholarCross Ref
Index Terms
- The nesC language: A holistic approach to networked embedded systems
Recommendations
The nesC language: a holistic approach to networked embedded systems
Supplemental issueWe present nesC, a programming language for networked embedded systems that represent a new design space for application developers. An example of a networked embedded system is a sensor network, which consists of (potentially) thousands of tiny, ...
The nesC language: A holistic approach to networked embedded systems
We present nesC, a programming language for networked embedded systems that represent a new design space for application developers. An example of a networked embedded system is a sensor network, which consists of (potentially) thousands of tiny, low-...
Viptos: a graphical development and simulation environment for TinyOS-based wireless sensor networks
SenSys '05: Proceedings of the 3rd international conference on Embedded networked sensor systemsWe are announcing the first release of Viptos (Visual Ptolemy and TinyOS), an integrated graphical development and simulation environment for TinyOS-based wireless sensor networks. Viptos allows developers to create block and arrow diagrams to construct ...
Comments