galsC: a language for event-driven embedded systems

We introduce galsC, a language designed for programming event-driven embedded systems such as sensor networks. galsC implements the TinyGALS (globally asynchronous and locally synchronous) programming model. At the local level, software components are linked via synchronous method calls to form actors. At the global level, actors communicate with each other asynchronously via message passing, which separates the flow of control between actors. A complementary model, called TinyGUYS, is a guarded yet synchronous model designed to allow thread-safe sharing of global state between actors via parameters without explicitly passing messages. The galsC compiler extends the nesC compiler, which allows for better type checking and code generation. Having a well-structured concurrency model at the application level greatly reduces the risk of concurrency errors, such as deadlock and race conditions. The galsC language is implemented on the Berkeley motes and is compatible with the TinyOS/nesC component library. We use a multi-hop wireless sensor network as an example to illustrate the effectiveness of the language.

[1]  Edward A. Lee,et al.  Timed multitasking for real-time embedded software , 2003 .

[2]  Luciano Lavagno,et al.  Synthesis of software programs for embedded control applications , 1999, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[3]  Feng Zhao,et al.  TinyGALS: a programming model for event-driven embedded systems , 2003, SAC '03.

[4]  Edward A. Lee,et al.  Taming heterogeneity - the Ptolemy approach , 2003, Proc. IEEE.

[5]  Thomas A. Henzinger,et al.  Embedded Control Systems Development with Giotto , 2001, OM '01.

[6]  Gilles Kahn,et al.  The Semantics of a Simple Language for Parallel Programming , 1974, IFIP Congress.

[7]  Edward A. Lee,et al.  Advances in the dataflow computational model , 1999, Parallel Comput..

[8]  Edward A. Lee,et al.  System-Level Types for Component-Based Design , 2001, EMSOFT.

[9]  Nicolas Halbwachs,et al.  Synchronous Programming of Reactive Systems , 1992, CAV.

[10]  Pradeep K. Khosla,et al.  Design of Dynamically Reconfigurable Real-Time Software Using Port-Based Objects , 1997, IEEE Trans. Software Eng..

[11]  David E. Culler,et al.  The nesC language: A holistic approach to networked embedded systems , 2003, PLDI.

[12]  Bishnupriya Bhattacharya,et al.  Functional and Performance Modeling of Concurrency in VCC , 2002, Concurrency and Hardware Design.

[13]  Mitchell Wand,et al.  Type inference for record concatenation and multiple inheritance , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.