Download presentation
Presentation is loading. Please wait.
1
How to Code on TinyOS Xufei Mao Advisor: Dr. Xiang-yang Li CS Dept. IIT
2
Outlines What is TinyOS? What is TinyOS? Hardware & Software Hardware & Software NesC NesC A simple example A simple example Conclusion Conclusion
3
So why do we need a new OS?
4
Traditional OS Huge ! Multi-threaded architecture =>large 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) TinyOS (Platform) Coding language 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 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 -> endpoint2 endpoint1 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 Application Blink.nc configuration
27
Simple Example 1 Blink Application Blink Application BlinkM.nc module
28
Simple Example 2 Communication between two sensors Communication between two sensors Environment : Xubuntu + TinyOS 2.0 Environment : Xubuntu + TinyOS 2.0 Hardware: TelosB sensors Hardware: TelosB sensors
29
Resources Gaurav’s TinyOS-1.x installation howto: http://www.cs.umass.edu/~gmathur/misc/tinyos_se tup.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/tinyos /nesc-pldi-2003.pdf nesC manual: http://none.cs.umass.edu/~gmathur/tinyos /nesc-ref.pdf TinyOS abstractions: http://none.cs.umass.edu/~gmathur/tinyos /tinyosnsdi04.pdf
31
Reference TinyOS Tutorial by TinyOS Tutorial by Jeremy Gummeson, Sensors Lab, UMass-Amherst TinyOS Programming by Philip Levis nesC paper: http://none.cs.umass.edu/~gmathur/tinyos/ne sc-pldi-2003.pdf
32
Conclusion
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.