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, lowpower "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 Scholar
Digital 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 Scholar
- 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 Scholar
Digital Library
- F. Boussinot and R. de Simone. The ESTEREL Language. Proceedings of the IEEE, 79(9):1293--1304, Sept. 1991.Google Scholar
Cross Ref
- H. de Bruin. BCOOPL: A Langage for Controlling Component Interactions. Journal of Supercomputing, 2002. Accepted for publication. Google Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Cross Ref
- S. P. Harbison. Modula-3. Prentice Hall, 1991. Google Scholar
Digital 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 Scholar
Digital Library
- A. Herbert. An ANSA Overview. IEEE Network, 8(1):18--23, 1994. Google Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital Library
- N. C. Hutchinson and L. L. Peterson. Design of the x-kernel. In Proceedings of SIGCOMM '88, pages 65--75, Aug. 1988. Google Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital Library
- N. Leveson and C. S. Turner. An investigation of the therac-25 accidents. IEEE Computer, 26(7):18--41, July 1993. Google Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital Library
- Wind River Systems, Inc, Alameda, CA, USA. http://www.vxworks.com.Google Scholar
- N. Wirth. Programming in Modula-2. Springer Verlag, 1992. Google Scholar
Digital Library
- N. Wirth and M. Reiser. Programming in Oberon - Steps Beyond Pascal and Modula. Addison-Wesley, 1992. ISBN 0-201-56543-9. Google Scholar
Index Terms
The nesC language: a holistic approach to networked embedded systems
Recommendations
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-...
The nesC language: A holistic approach to networked embedded systems
PLDI '03: Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementationWe 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-...
WsVsSenNet: An Era of Enhanced Vision Based Sensing Capability
ICCTD '09: Proceedings of the 2009 International Conference on Computer Technology and Development - Volume 01Flexible and multi-adaptive platforms are always being appreciated by the people. In the field of Information Technology the wireless vision sensor network is one of the fastest growing segments. Due to their flexibility of networks and easily ...






Comments