galsC: A Language for Event-Driven Embedded Systems
Elaine Cheong and Jie Liu
in Proceedings of Design, Automation and Test in Europe (DATE)
March 7-11, 2005
Munich, Germany
ABSTRACT
We introduce galsC, a language designed for programming event-driven
embedded systems such as sensor networks. galsC implements the
TinyGALS 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.