How to Code on TinyOS - PowerPoint PPT Presentation

About This Presentation
Title:

How to Code on TinyOS

Description:

... .pdf Reference TinyOS Tutorial by Jeremy Gummeson, Sensors Lab, UMass-Amherst TinyOS Programming by Philip Levis nesC paper: ... – PowerPoint PPT presentation

Number of Views:226
Avg rating:3.0/5.0
Slides: 33
Provided by: MaoX
Learn more at: http://www.cs.iit.edu
Category:
Tags: tinyos | code | levis

less

Transcript and Presenter's Notes

Title: How to Code on TinyOS


1
How to Code on TinyOS
  • Xufei Mao
  • Advisor Dr. Xiang-yang Li
  • CS Dept. IIT

2
Outlines
  • What is TinyOS?
  • Hardware Software
  • NesC
  • A simple example
  • Conclusion

3
So why do we need a new OS?
4
Traditional OS
  • Huge !
  • Multi-threaded architecture gtlarge memory
  • I/O model
  • Kernel and user space separation
  • Typically no energy constraints
  • Ample available resources

5
Sensor Hardware Constraints
  • Lower Power
  • Limited memory
  • Slow CPU
  • Size (Small)
  • Limited hardware parallelisms
  • Communication using radio
  • Low-bandwidth
  • Short range

6
Desired OS Properties
  • Small memory footprint
  • Efficient in power and computation
  • Communication is fundamental
  • Real-time
  • Support diverse application design

7
TinyOS Solution
  • Concurrency uses event-driven architecture
  • Modularity
  • Application composed of components
  • OS Application compiles into single executable
  • Communication
  • Uses event/command model
  • FIFO and non pre-emptive scheduling
  • No kernel/application boundary

8
The Hardware
9
Software
  • TinyOS (Platform)
  • Coding language
  • NesC (Network Embedded System C)

10
TinyOS Memory Model
  • STATIC memory allocation!
  • No heap (malloc)
  • No function pointers
  • No dynamic, run-time allocation
  • Global variables
  • Available on a per-frame basis
  • Conserve memory
  • Use pointers
  • Local variables
  • Saved on the stack
  • Declared within a method

11
TinyOS nesC Concepts
  • New Language nesC. Basic unit of code
    Component
  • Component
  • Process Commands
  • Throws Events
  • Has a Frame for storing local state
  • Uses Tasks for concurrency
  • Components provide interfaces
  • Used by other components to communicate with this
    component

12
Components
  • Two type of components
  • Module
  • component written with code
  • Configuration
  • components wired together

13
Components
14
TinyOS Application (Sample)
15
Commands/Events/Tasks
  • Commands
  • Should be non-blocking i.e. take parameters start
    the processing and return to app
  • postpone time-consuming work by posting a task
  • Can call commands on other components
  • Events
  • Can call commands, signal other events, post
    tasks but cannot be signal-ed by commands
  • Pre-empt tasks, not vice-versa
  • Tasks
  • FIFO scheduling
  • Non pre-emptable by other task, pre-emtable by
    events
  • Used to perform computationally intensive work
  • Can be posted by commands and/or events

16
nesC
  • Naming conventions
  • nesC files extension .nc
  • Clock.nc either an interface (or a
    configuration)
  • ClockC.nc a configuration
  • ClockM.nc a module

17
nesC Keywords
18
nesC Keywords -implementation
19
Interfaces
20
Modules
  • Implement one or more interfaces
  • Can use one or more other interfaces

21
Modules (Sample)
22
Configurations
  • Two components are linked together in nesC by
    wiring them
  • Interfaces on user component are wired to the
    same interface on the provider component
  • 3 wiring statements in nesC
  • endpoint1 endpoint2
  • endpoint1 -gt endpoint2
  • endpoint1 lt- endpoint2 (equivalent endpoint2 -gt
    endpoint1)

23
Configurations (Sample)
24
nesC Wiring Syntax
25
Compile Run
  • Compiler processes nesC files converting them
    into a gigantic C file
  • Has both your application the relevant OS
    components you are using
  • Then platform specific compiler compiles this C
    file
  • Becomes a single executable
  • Loader installs the code onto the Mote (Mica2,
    Telos, etc.)

26
Simple Example 1
  • Blink Application
  • Blink.nc configuration

27
Simple Example 1
  • Blink Application
  • BlinkM.nc module

28
Simple Example 2
  • Communication between two sensors
  • Environment Xubuntu TinyOS 2.0
  • Hardware TelosB sensors

29
Resources
  • Gauravs TinyOS-1.x installation howto
  • http//www.cs.umass.edu/gmathur/misc/tinyos_setup
    .htm
  • Tinyos-2.x installation howto (straightforward)
  • http//www.tinyos.net/tinyos-2.x/doc/html/install-
    tinyos.html
  • The official TinyOS tutorial (pretty good)
  • http//www.tinyos.net/tinyos-1.x/doc/tutorial/
  • The offical TinyOS-2.x tutorial (very good)
  • http//www.tinyos.net/tinyos-2.x/doc/html/tutorial
    /index.html
  • nesC http//nescc.sourceforge.net/

30
Resources
  • Other Docs
  • nesC paper http//none.cs.umass.edu/gmathur/tiny
    os/nesc-pldi-2003.pdf
  • nesC manual http//none.cs.umass.edu/gmathur/tin
    yos/nesc-ref.pdf
  • TinyOS abstractions http//none.cs.umass.edu/gma
    thur/tinyos/tinyosnsdi04.pdf

31
Reference
  • TinyOS Tutorial by Jeremy Gummeson, Sensors Lab,
    UMass-Amherst
  • TinyOS Programming by Philip Levis
  • nesC paper http//none.cs.umass.edu/gmathur/tiny
    os/nesc-pldi-2003.pdf

32
Conclusion
Write a Comment
User Comments (0)
About PowerShow.com