Transcript TinyOS

TinyOS 1/2
Onsystech
Sangjae Han
목차
TinyOS 개요



TinyOS 개요
TinyOS Architecture
TinyOS Structure
TinyOS 설치(실습)





프로그램 다운로드 및 설치
디렉토리 구성
개발 방법
Atmega128L & TinyOS
Blink Application 포팅및 동작확인
TinyOS 개요
TinyOS

Developed at University of California in Berkeley








Professors David Culler & Kris Pister
David Culler --> TinyOS & Intel Research Lab. @ Berkeley
Kris Pister --> Dust networks (Smart Dust)
Key Engineer --> Jason Hill, etc.
Use more than 300 academic groups & industrial
organizations
Open-source software development
Simple operation system
Programming language and model Set of services
TinyOS Architecture 1/2
Designed for Low Power Sensor Networks
Key Elements

Sensing, Computation, Communication,
Power
Resource Constrained

Power, Memory, Processing
Adapt to Changing Technology

Modularity & Re-use
TinyOS Architecture 2/2
TinyOS Layers
TinyOS Categories
Events




Time Critical
Interrupts cause Events (Timer, ADC, Sensors)
Small / short duration
Suspend Tasks
Tasks




Time Flexible
Run sequentially by TOS Scheduler
Run to completion with other Tasks
Interruptible
TinyOS Kernel
TinyOS structure overview
Configuration

A “wiring” of Components together
Component




Provides a specific Service
Message Handling, Signal Processing
Implemented in a Module (code)
Wired up of other components in a
Configuration
Components structure
Interface

Declares the Services
provided
Implementation



Defines internal workings
of a Component
May include “wires” to
other components
A Message Handler might
use Radio and UART
communication
components
Component Anatomy
Modules


Contain application code, implementing one or
more interfaces
Does NOT contain the wiring to other components

CC1000ControlM.nc – Radio Control
Configurations

Configurations are used to assemble other
components together, connecting interfaces
between User and Implementations.

SingleTimerC.nc – uses TimerM.c
TinyOS Component Interface
Commands

Provides Services to User (“Caller”)
Events

Sends Signals to the User autonomously
Mandatory (implicit) Commands



.init – invoked on boot-up
.start – enables the component services
.stop – halt or disable the component
TinyOS components Implementation
Defines ‘how’ the component works.
Allows multiple Implementations for an Interface

e.g. different implementations of a MAC layer with
one standard Interface to the User
All Commands & Signals declared in the
INTERFACE must be implemented

Including .init, .start, & .stop
Implemented under the MODULE keyword
TinyOS Implementation Syntax
module LedsC
{
provides
{
interface Leds;
}
implementation Leds
{
uint8_t ledsOn;
async command result_t Leds.redOn()
{
atomic
{
TOSH_CLR_RED_LED_PIN();
ledsOn |= RED_BIT;
}
return SUCCESS;
}
} //implementation
}//module
Async and Atomic
Commands and Events that are executed as part
of a Hardware Event handler must be declared
with the async keyword

Indicates that this code may execute
asynchronously to Tasks and other processes.
Races are avoided by

accessing shared data exclusively within Tasks


Because Tasks can’t interrupt each other
Use atomic statement to access shared variables
TinyOS configuration
Ties Components together
Every TOS Application has a single top-level
CONFIGURATION file
A “wire” connects the Component’s Interface to
another Component
Configuration Example
configuration BlinkTask {
}
implementation {
components Main, BlinkTaskM, SingleTimer,
LedsC;
Main.StdControl -> BlinkTaskM.StdControl;
Main.StdControl -> SingleTimer;
BlinkTaskM.Timer -> SingleTimer.Timer;
BlinkTaskM.Leds -> LedsC;
}
TinyOS installation
Download programs

http://www.tinyos.net/dist-1.1.0/tinyos/windows/tinyos-1.1.11-3is.exe
Double click “tinyos-1.1.11-3is.exe”
TinyOS installation
TinyOS installation
TinyOS installation
TinyOS installation
What is being Installed?
TinyOS & Tools: event-driven OS for wireless
sensor networks; tools for debugging
nesC: a extension of C-language designed for
TinyOS
Cygwin: a Linux-like environment for Windows
AVR Tools: a suite of software development tools
for Atmel's AVR processors
Java 1.4 JDK & Java COMM 2.0: for host PC
applications and port communications
Graphviz (from AT&T Labs): to view files made
from make docs
Directory Structure
TinyOS 1.1.x
Standard TinyOS applications and test programs
User contributions included
Documentation and On-line Tutorial
Development utilities and programs
TinyOS modules and interfaces
TOS subdirectory
www.tinyos.net
www.tinyos.net
TinyOS directory structure
개발환경
/opt/tinyos-1.x

Tinyos 개발 루트디렉토리
/opt/tinyos-1.x/apps

관련 어플리케이션
/opt/tinyos-1.x/tos


TinyOS관련 소스및 라이브러리
/opt/tinyos-1.x/tos/platform

개별 플랫폼별 적용가능한 소스코드(mica2사용)
유저프로그램(실습)

/opt/tinyos-1.x/apps/xxxapp 생성후 작업!!!
실습(LED Blank)
Blank 디렉토리 파일을 참고하여 실습보드의 Led를 깜빡이는 프로그램을
작성한다.


1. Timer만을 이용
2. Task를 이용( keyword- task, post )
참고사항.
 해당 보드의 설정파일을 확인한다.( platform/mica2)
 Blank디렉토리의 파일을 참고하여 /apps/xxx에 자신의 프로그램을 작성
한다.
 작성된 프로그램을 컴파일한다.


Make mica2
컴파일된 이미지를 보드에 프로그래밍한다.


Ponyprog를 이용하여 다운로드
다운로드후 실행, 보드 리셋(or power on reset)을 하여 프로그램 동작을 확
인한다.
타이머를 조절하여 깜빡이는 주기를 변경해본다.
프로그램 동작하면 조별이름으로 압축하여 제출후 퇴실.
