TinyOS CSE466 Final Project Presentation Group members: Iliana Avila-Campillo Jason Dougherty Sze Ying Kong
Motivation Real-time w/ high level of concurrency High level of modularity Low power consumption Limited memory and CPU speed
Network Sensor Processor Application Active Messaging Component Sonar App_init Processor One instance of OS Application Sonar_start_read Sonar_read_done Active Messaging Component Sonar Component Echo (from HW)
Component Frame Command Handler A Command Handler B Task A Task C Commands Signals Command Handler A Command Handler B Frame Task A Task C Event Handler A Task B Task D Event Handler B Commands Events
Frames One per component Fixed size – allocated at compile time Persists across commands, events, tasks Stores state for component
Tasks Scheduled by OS Run to completion May be pre-empted by events (interrupts) Operate on frames Perform intensive computation
Event Handlers Respond to events – HW or SW Must execute quickly Operate on frames May post tasks May call commands May signal events
Commands Must execute reasonably quickly Operate on frames May call other commands May post tasks May NOT signal events
Implementation OS is comprised of a scheduler and some macros Scheduler is implemented as a circular FIFO queue Posting a task is effected by passing a function pointer to the OS
Implementation – 2 Component interface (events, commands) is described in a *.comp file Perl script generates a C header file from component file Component is implemented in a C source file OS and components are built together
Implementation – 3 Interconnections between components are described in *.desc files A Perl script generates a top-level header file from all description files A Java program uses all description files to generate a C file which performs the dynamic event dispatch
Larry’s Objectives Macros for use with static verification tools (not yet implemented, according to their slides) Run-time checking – none Exception Handling – none Semantic Checking – none