03.08.2013 Views

Design and Implementation of TinyGALS: A Programming Model for ...

Design and Implementation of TinyGALS: A Programming Model for ...

Design and Implementation of TinyGALS: A Programming Model for ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

quiescent system state to the next quiescent system state can be predicted. Under multiple<br />

interrupts, we can predict the path <strong>of</strong> a <strong>TinyGALS</strong> system between module iterations if<br />

constraints are placed on the time at which events are produced at the output ports <strong>of</strong> a<br />

module, as well as on how many writers are allowed <strong>for</strong> TinyGUYS. Event-driven systems<br />

are highly timing-dependent, <strong>and</strong> we can consider interrupts to be high priority events that<br />

should affect the system state as soon as possible. However, the <strong>TinyGALS</strong> programming<br />

model allows us to examine the structure <strong>of</strong> the system to determine whether interrupts<br />

will change the state. For example, in Figure 27, we know that component C1 is not a<br />

source <strong>and</strong> that interrupts cannot change its state. Additionally, <strong>TinyGALS</strong> provides a<br />

task-oriented way <strong>of</strong> designing an application. In TinyOS, tasks are not visible at the user-<br />

level. In <strong>TinyGALS</strong>, the structure <strong>of</strong> the system makes tasks visible (i.e., tasks correspond<br />

to module(s)).<br />

C1<br />

C2<br />

Figure 27: Interrupts cannot change the state <strong>of</strong> component C1.<br />

<strong>TinyGALS</strong> is designed <strong>for</strong> applications in which the system must react to events as<br />

soon as possible. <strong>TinyGALS</strong> is also intended <strong>for</strong> use in resource-constrained systems,<br />

since generated <strong>TinyGALS</strong> code is quite small, <strong>and</strong> the system is designed to sleep when<br />

not reacting to events. <strong>TinyGALS</strong> is not designed <strong>for</strong> real-time applications, since there<br />

is currently no guarantee on the time it will take an interrupt h<strong>and</strong>ler to complete, should<br />

it be preempted by non-masked interrupts. <strong>TinyGALS</strong> <strong>and</strong> other systems that use a push<br />

model <strong>of</strong> computation are not meant <strong>for</strong> processing intensive applications that must avoid<br />

unnecessary chains <strong>of</strong> computation, since once activated, components run to completion.<br />

The high-level constructs <strong>of</strong> the <strong>TinyGALS</strong> programming model are amenable to auto-<br />

matic code generation that releases designers from writing error-prone task synchronization<br />

code. We implemented this model <strong>for</strong> the Berkeley mote sensor network plat<strong>for</strong>m <strong>and</strong> de-<br />

scribed a multi-hop communication protocol redesigned using the <strong>TinyGALS</strong> model.<br />

58

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!