Difference between revisions of "Ipsn2009-tutorial-proposal"

From TinyOS Wiki
Jump to: navigation, search
 
(2 intermediate revisions by 2 users not shown)
Line 13: Line 13:
 
1. TinyOS. We will describe the rationale behind the component-based architecture of TinyOS and an overview of the basic services available in TinyOS.
 
1. TinyOS. We will describe the rationale behind the component-based architecture of TinyOS and an overview of the basic services available in TinyOS.
  
2. Nesc. Nesc is a programming language that is used to write TinyOS programs. We will go through the basic and advanced features of Nesc.
+
2. nesC. nesC is the C dialect that is used to write TinyOS and its programs. First, we show how nesC's component and execution model are used to provide clean access to TinyOS services. We then show how generic components and external types (introduced in nesC 1.2) simplify TinyOS programming. Finally, we show how nesC's lower-level features (support for interrupt-driven concurrency, parameterized interfaces) are used to implement TinyOS's low-level system services.
  
 
3. Safe TinyOS.  Starting in version 2.1, TinyOS applications can be compiled in "safe mode," ensuring that memory access errors (null pointer dereferences, array bound violations, etc.) are trapped, as opposed to causing memory corruption and other harmful effects.  This part of the tutorial will introduce Safe TinyOS and show how it can be used to pinpoint errors that would otherwise be difficult to find.  We will also describe how new TinyOS components can be annotated to support safe compilation.
 
3. Safe TinyOS.  Starting in version 2.1, TinyOS applications can be compiled in "safe mode," ensuring that memory access errors (null pointer dereferences, array bound violations, etc.) are trapped, as opposed to causing memory corruption and other harmful effects.  This part of the tutorial will introduce Safe TinyOS and show how it can be used to pinpoint errors that would otherwise be difficult to find.  We will also describe how new TinyOS components can be annotated to support safe compilation.
  
4. Threads. We will describe how this alternative concurrency model simplifies certain types of TinyOS programs.
+
4. Threads. TinyOS applications can now be compiled with optional preemptive threading support.  Using threads, applications are able to seamlessly interleave long running background computations with time critical event-based services.  This is achieved by defining a conceptual user/kernel boundary, whereby TinyOS runs as a high-priority kernel thread and application threads execute at lower priority. Additionally, the existence of a user/kernel boundary enables dynamic linking and loading of application binaries at runtime. The API at this boundary defines the set of TinyOS services supported by a TOSThreads kernel and is customizable in support of a diverse set of applications.  In this part of the tutorial we will introduce the TOSThreads concurrency model and show how it can be be used to ease the development (and deployment) of TinyOS applications.
  
5. Network protocols. We will describe the basic networking protocols available in TinyOS.
+
5. Network protocols. We will describe the basic networking protocols available in TinyOS. One important development is the development of standards to allow the transport of IPv6 packets over low-power links, such as the 802.15.4 links favored by platforms running TinyOS.  TinyOS now incorporates an open IPv6 stack including mesh networking along with UDP and TCP transport layers.  We will give an overview of the key concepts of deploying IP-based solutions in a TinyOS network. and demonstrate how to use the new IPv6-based networking stack.
  
 
6. Hands-on session. We will present the tools involved in running TinyOS on the most common platforms (telos and micaz), the layout and the structure of the tinyos-2.x tree, how to compile and run simulations and how programming real motes takes place. The programs that will demonstrated will involve talking over the serial with the PC and radio communication.
 
6. Hands-on session. We will present the tools involved in running TinyOS on the most common platforms (telos and micaz), the layout and the structure of the tinyos-2.x tree, how to compile and run simulations and how programming real motes takes place. The programs that will demonstrated will involve talking over the serial with the PC and radio communication.

Latest revision as of 09:13, 23 January 2009

1. Tutorial title

TinyOS: An Operating System for Sensor Network Research and Application Prototypes

Contact: Omprakash Gnawali (gnawali@usc.edu)

2. One or two-page description of tutorial that clearly states

(i) the scope of tutorial and learning objectives

In this tutorial, we will focus on the features available in TinyOS 2.x that enables us to do sensor network research and application prototypes. Here is a tentative list of topics to be covered in the tutorial:

1. TinyOS. We will describe the rationale behind the component-based architecture of TinyOS and an overview of the basic services available in TinyOS.

2. nesC. nesC is the C dialect that is used to write TinyOS and its programs. First, we show how nesC's component and execution model are used to provide clean access to TinyOS services. We then show how generic components and external types (introduced in nesC 1.2) simplify TinyOS programming. Finally, we show how nesC's lower-level features (support for interrupt-driven concurrency, parameterized interfaces) are used to implement TinyOS's low-level system services.

3. Safe TinyOS. Starting in version 2.1, TinyOS applications can be compiled in "safe mode," ensuring that memory access errors (null pointer dereferences, array bound violations, etc.) are trapped, as opposed to causing memory corruption and other harmful effects. This part of the tutorial will introduce Safe TinyOS and show how it can be used to pinpoint errors that would otherwise be difficult to find. We will also describe how new TinyOS components can be annotated to support safe compilation.

4. Threads. TinyOS applications can now be compiled with optional preemptive threading support. Using threads, applications are able to seamlessly interleave long running background computations with time critical event-based services. This is achieved by defining a conceptual user/kernel boundary, whereby TinyOS runs as a high-priority kernel thread and application threads execute at lower priority. Additionally, the existence of a user/kernel boundary enables dynamic linking and loading of application binaries at runtime. The API at this boundary defines the set of TinyOS services supported by a TOSThreads kernel and is customizable in support of a diverse set of applications. In this part of the tutorial we will introduce the TOSThreads concurrency model and show how it can be be used to ease the development (and deployment) of TinyOS applications.

5. Network protocols. We will describe the basic networking protocols available in TinyOS. One important development is the development of standards to allow the transport of IPv6 packets over low-power links, such as the 802.15.4 links favored by platforms running TinyOS. TinyOS now incorporates an open IPv6 stack including mesh networking along with UDP and TCP transport layers. We will give an overview of the key concepts of deploying IP-based solutions in a TinyOS network. and demonstrate how to use the new IPv6-based networking stack.

6. Hands-on session. We will present the tools involved in running TinyOS on the most common platforms (telos and micaz), the layout and the structure of the tinyos-2.x tree, how to compile and run simulations and how programming real motes takes place. The programs that will demonstrated will involve talking over the serial with the PC and radio communication.

Learning objectives:

- Understand the research problems and applications where TinyOS can be used

- Understand TinyOS architecture and a list of available services

- Understand how to customize and augment TinyOS services to meet the research and application needs

- Learn how to do simulations in TinyOS during the hands-on session


(ii) target audience and expected attendance

Use of TinyOS has the potential to facilitate the research done in the IPSN community. We expect this tutorial to be helpful to professors, students, as well as industrial practitioners to understand what is available in TinyOS and when it is applicable to their research. Even the students who program in TinyOS will benefit tremendously by learning how to use the new features available in TinyOS 2.1.

(iii) logistic requirements beyond class room style setting for presentation

The hands-on session will have two parts. The simulation tutorial will be done using virtual machines. We will provide the software to participants to install on their Windows or Linux laptops. We will provide a small number of sensor nodes for the segment of the tutorial where we show how to program on a hardware platform.

(iv) a list of previous offerings of the tutorial

We have offered a tutorial in 2005. What conf.?

TinyOS is a collaboration between many educational institutions and companies. We plan to bring several core developers of TinyOS for this tutorial so that the audience gets not only a detailed description and understanding of TinyOS but also the rational behind some of the design decisions that shaped TinyOS architecture and services.

3. Presentation slides

We are attaching presentation slides from our 2005 tutorial to give an idea. The style will be similar but the content significantly revised to describe the newest version of TinyOS.