TinyOS 2.0 Tutorials
Last updated 30 Oct 2006
These brief tutorials are intended to get you started with TinyOS. They show you the basics of writing, compiling, and installing TinyOS applications. They introduce the basic TinyOS abstractions: computation, communication, sensing, and storage. The later tutorials go a little deeper into some of the more advanced areas of TinyOS, such as handling interrupts, power management, and how platforms are organized. For the beta2 release, only tutorials 1-5 are ready.

Lesson 1: TinyOS

Lesson 1 introduces the major concepts of TinyOS: components, modules, configurations and interfaces. It shows you how to compile and install a TinyOS program on a mote.

Lesson 2: Modules and the TinyOS Execution Model

Lesson 2 explains the TinyOS execution model, looking more closely at modules. It explains events, commands and their relationships to interfaces in greater depth, introducing split-phase operations. It explains tasks, the basic mechanism in TinyOS for components to cooperatively share the processor.

Lesson 3: Mote-mote radio communication

Lesson 3 introduces the TinyOS communication model. There is an exercise that illustrates sending and receiving messages.

Lesson 4: Mote-PC serial communication and SerialForwarder

Lesson 4 introduces the the TinyOS toolchain for PCs and laptops to communicate with motes. It describes the concept of a packet source, the mig tool, and SerialForwarder.

Lesson 5: Sensing

Lesson 5 explains how to sample sensors in TinyOS. There is an exercise that periodically samples a sensor and displays the value on the leds.

Lesson 6: Boot Sequence

Lesson 6 details the boot sequence and, in doing so, answers the question, "But where is main()?".

Lesson 7: Storage

Lesson 7 introduces the TinyOS storage model. A sample application illustrates storing data. This tutorial is currently unfinished.

Lesson 8: Resource Arbitration and Power Management

Lesson 8 introduces the TinyOS resource arbitration and power management model. There are two exercises in this tutorial. The first one illustrates how to gain access to predefined shared resources. The second one illustrates how to create your own shared resource. In both tutorials, the process for controlling the power states of the resource is presented.

Lesson 9: Concurrency

Lesson 9 introduces the TinyOS concurrency model. Tasks are revisited and async code is introduced. This tutorial is currently unfinished.

Lesson 10: Platforms

Lesson 10 provides a better understanding of the difference between "make micaz" and "make telosb," including how these commands map into underlying files, directories, and definitions. It is not necessary for most TinyOS developers, but is included as a starter's guide for people who wish to understand the make system better or wish to design a new platform.

Lesson 11: TOSSIM

Lesson 11 introduces TOSSIM, a TinyOS simulator. TOSSIM allows you to compile your TinyOS applications into a simulation framework, where you can perform reproducible tests and debug your code with standard development tools.

Lesson 12: Network Protocols

Lesson 12 introduces two basic multihop protocols, Dissemination and Collection. Dissemination reliably delivers small data items to every node in a network, while collection delivers small data items from every node in a network to designated collection roots.

Lesson 13: TinyOS Toolchain

Lesson 13 describes the details of the TinyOS toolchain, including the build system, how to create your own Makefile, and how to find out more information on the various tools included with TinyOS.