What to Read First
Getting started with TinyOS can be a rather daunting task.
Parts are very familar. TinyOS is built using NESC which is a dialect of C. So if you know C that is a good thing. But NESC adds a form of modularization which forces well defined interface mechanisms between the system components. The interconnect language is called wiring and take a bit getting used to.
- Bottom line is there are a number of new concepts. These new concepts are presented very straight forwardly in Phil Levis' book, TinyOS Programming. This is the first place to start: Reference, TEPs, Papers, and User Notes.
- At some point a development environment needs to be built. Various instructions can be found here: Getting started. However these instructions age over time. An out of date set of install instructions for a Linux based install can be found here: Xubuntu 8.04, CVS T2.1, Step by step. These will be updated at a future date.
Choices need to be made, such as what platform will you be using. A pretty flexible platform is the TelosB mote based on the TI MSP430F1611 microprocessor. Another possibility is the MICAz (MPR2400) based on the Atmel ATmega128L processor. The choice of platform determines which processor and what tool chain needs to be installed. Two of the principal platforms supported by TinyOS are built on these two processors. You need to decide which platform you will be building for.
- A TinyOS platform defines not only the processor but additional hardware configuration that makes the mote useful.
Now you have a development system installed, its time to build your first program. Blink is a good one.
Next step is to start working through the tutorials. Various contributors have spent a good amount of time putting together information that helps ramping up.
Suggested tutorials to start with include (suggested reading order):
- Getting Started with TinyOS major concepts
- Modules and the TinyOS Execution Model looks closely at modules, wiring, and execution model
- Mote-PC serial communication and SerialForwarder
- Concurrency
- The TinyOS printf Library
- Resource Arbitration and Power Management
- Mote-mote radio communication
- Network protocols.
Another source of detailed information is in the TinyOS Enhancement Proposals. Don't let the name fool you. These are like RFCs from the IETF development for the Internet. These documents can be read in conjunction with the tutorials. Recommended TEPs are listed below:
Basic services, Model, Arbitration
- TEP102: Timers
- TEP106: Schedulers and Tasks
- TEP108: Resource Arbitration
- TEP110: Virtualization
- TEP112: Microcontroller Power Management
- TEP115: Power Management of Non-Virtualized Devices
- TEP117: Low-Level I/O
Low Level Communications and Packet Layer
- TEP111: message_t
- TEP113: Serial Communication
- TEP116: Packet Protocols
- TEP125: TinyOS 802.15.4 Frames
- TEP126: CC2420 Radio Stack
- TEP127: Packet Link Layer
Network Collection and Dissemination