Transcript PPT
TinyGALS: A Programming
Model for Event-Driven
Embedded Systems
Elaine Cheong
UC Berkeley Ptolemy Group / PARC
Judy Liebman (LLNL)
Jie Liu, Feng Zhao (PARC)
Fifth Biennial Ptolemy Miniconference
Berkeley, CA, May 9, 2003
Introduction
Embedded software architecture
today
Inherited from writing device drivers
and optimizing assembly code.
Poor scalability.
Poor common infrastructure.
Poor resource management.
Embedded software architecture
tomorrow
Reusable, reconfigurable components.
Easy to use.
Fast prototyping.
Software synthesis
Motivation
Application characteristics
Ad-hoc networked embedded systems
Low-power
Unstructured, unsynchronized events
Collaborative nodes
Local communication (peer-to-peer)
Global communication (ad-hoc routing)
Example: Sensor Networks
Sensing
motes
Base
TinyGALS
global_nodedata;
global_parent_id;
sensing
clock
Get sensor data
init
init
POT
Send local data
init
PHOTO
Clock logic
GENERIC_COMM
receiving
start
CLOCK
Receive packets
Update local data
init
GENERIC_COMM
Update Routing Table
BLESS send
Send BLESS mesg
BLESS receive
GENERIC_COMM
BLESS forward
Routing Table
GENERIC_COMM
TinyGALS Architecture
Guarded Yet Synchronous
Guarded Variable
Asynchronous
Synchronous
Write
Read
TinyGUYS
global name
Scheduler
Event
Queue
Globally Asynchronous Locally Synchronous
Module A
Module B
TinyGUYS
local name
init
start
Component
___________________
___________________
___________________
___________________
___________________
___________________
Synchronous
Communication
Component
outportA1
inportB1
Asynchronous
Communication
Component
Software Synthesis
data
structures
PARAM_GET()
Scheduler
data
structures
Event
Queue
PARAM_PUT()
Module A
Module B
app_init()
init
start
app_start()
A_out1()
B_in1_put()
BCOMP1_INPUT()
Target Tracking Example:
Before and After…
OS View (TinyOS)
TinyGALS View
global_nodedata;
global_parent_id;
sensing
MAIN
clock
Init
Init
Start
init
TARGET_TRACKING
BLESS
LEDS
Send done
Receive channel 7
Send
PHOTO
Off
GENERIC_COMM
init
POT
Receive channel 8
Send
Send done
Send
Clock
Init
Init
Data ready
Get data
Fire event
Init
Send
done
On
CLOCK
Get sensor data
Send local data
init
PHOTO
Clock logic
GENERIC_COMM
receiving
start
CLOCK
Receive packets
Update local data
init
GENERIC_COMM
Update Routing Table
BLESS send
Send BLESS mesg
BLESS receive
GENERIC_COMM
BLESS forward
Routing Table
GENERIC_COMM
Memory Usage
Code Size
Scheduler
Target counting
application
TinyOS
86 bytes
19929 bytes
TinyGALS
112 bytes
24750 bytes
Future Work
Port to NesC language (TinyOS).
Implement as Ptolemy domain?
Compare to CI domain.
Blocking write: retry when queue is full.
Priority scheduling algorithm with queue
insertions.
Run-time reconfigurability of modules.
Heterarchy: distributed multi-tasking.
Conclusions
TinyGALS provides a globally asynchronous,
locally synchronous model of computation for
event-driven embedded software.
Allows reuse of software components.
TinyGUYS provides protected, quick access to
global data.
Software synthesis tools created to generate
communication and scheduling code.
http://ptolemy.eecs.berkeley.edu/papers/03/TinyGALS/