Você está na página 1de 49

Seminrio

TOSSIM: TinyOS Simulator


Projeto SensorNet

Breno Augusto Dias Vitorino Luiz Filipe M. Vieira

Sumrio
TinyOS
Histria O que TinyOS? Projeto, Kernel, Modelo de Execuo

nesC TOSSIM
Conceitos, O que ?, Limitaes Modelo Rdio, Modelo Sensor Exemplo

Histria
Inicialmente desenvolvido por Jason Hill, dissertao de Mestrado - UC Berkeley ,2000. Orientado por David Culler (Berkeley/Intel). Parte do Projeto Berkeley WEBS. Atualmente, o laboratrio Intel-Berkeley Research o maior responsvel pelos componentes deste SO. www.intel-research.net/berkeley/

O que o TinyOS?
Um Ambiente de Desenvolvimento de Cdigo Aberto Um Simples Sistema Operacional Um Modelo e uma Linguagem de Programao Um Conjunto de Servios

TinyOS - Caractersticas
Microprocessador ATMEGA 128L um sistema operacional muito simples e compacto, baseado em eventos Desenvolvido para apoiar as aplicaes de RSSF Operaes intensamente concorrentes com mnimo de requisitos de hardware e economizando energia.

TinyOS Um Simples Sistema Operacional


Escalonador Intensamente Concorrente Recursos Limitados componentes de software para modularidade e eficincia.

TinyOS Um Modelo e uma Linguagem de Programao


Separao entre construo e composio:
programas so construdos a partir de componentes

Especificao do comportamento dos componentes em termos de um conjunto de interfaces Componentes so estaticamente ligados com outros atravs de interfaces.
aumenta eficincia em tempo de execuo

TinyOS - Servios
Rdio, MAC, Mensagens, Roteamento Interface para Sensores Gerncia de Energia Segurana Depurao Temporizao

TinyOS - Objetivos de Projeto


Apoiar Sistemas Embutidos para Redes
dormir mas permanecer vigilante a estmulos rajada de eventos e operaes

Suporte ao Hardware do Mica


energia, sensores, computao, comunicao

Suporte aos Avanos Tecnolgicos


manter no ritmo de scale-down menor, mais barato, baixo consumo de energia (lower power)

TinyOS - Opes de Desenho


No podia usar RTOS existentes
Arquitetura de Microkernel
VxWorks, QNX, WinCE, PalmOS

Execuo similar a sistemas Desktop

PDAs, Telefones Celulares, PCs embutidos


Computacionalmente mais caro (mais de uma ordem de magnitude) Consumo de energia

TinyOS - Projeto do Kernel


Kernel do TinyOS: 2 Nveis de Escalonamento

Eventos
Pequena Quantidade de Processamento Ex. Relgios, Interrupes ADC Podem interromper tarefas

Tarefas
No so crticas em relao ao tempo Maior quantidade de processamento Ex. Computar a mdia de um vetor Executam at completarem

TinyOS - Modelo de Execuo


comandos requisitam aes
chamam comandos ou postam tarefas
pacote

Processamento dos application comp dados

Dirigido a evento mensagem active message Dirigido a evento pacote


Radio Packet

eventos notificam ocorrncias


interrupes de HW podem sinalizar eventos chamam comandos postam tarefas

crc Dirigido a evento byte

byte

Radio byte

codifica/decodifica Dirigido a evento bit

Tarefas provem concorrncia lgica


preemptados por eventos

bit

RFM

TinyOS - Execuo dos Contextos


Tarefas

evento

comandos
Interrupes

Hardware

Eventos gerados por interrupo preemptam tarefas Tarefas no preemptam tarefas

Tarefas
provem concorrncia interna para um componente
operaes que executam mais tempo

so preemptadas por eventos capazes de realizar operaes alm do contexto do evento { podem chamar comandos ... post TskName(); podem sinalizar eventos ... } no interrompem tarefas
task void TskName { ... }

Composio
Um componente especifica um conjunto de interfaces pelo qual ele est conectado a outros componentes
prov um conjunto de interfaces para outros componentes usa um conjunto de interfaces provido por outros componentes

Interfaces so bidirecionais
incluem comandos e eventos

Mtodos da interface so os nomes externos dos componentes

Composio
provides interface StdControl; interface Timer: uses interface Clock

provides StdControl Timer

Timer Component Clock

uses

Componentes
Mdulos prove cdigo que implementa uma ou mais interfaces e o comportamento interno Configuraes juntam componentes para formar um novo componente Interface relacionam um conjunto de comandos e eventos
StdControl.nc interface StdControl { command result_t init(); command result_t start(); command result_t stop(); } Clock.nc interface Clock { command result_t setRate(char interval, char scale); event result_t fire(); }

Aplicao = Grafo de Componentes


aplicao Route map router sensor appln

Active Messages

pacote

Radio Packet

Serial Packet

Temp

photo

SW HW

byte

Radio byte

UART

ADC

Exemplo: roteamento multihop das leituras do sensor de luz 3450 B cdigo 226 B dados Grafo de cooperao

bit

RFM

clocks

nesC
TinyOS e componentes so escritos em nesC NesC (pronunciado "NES-see") uma extenso da linguagem de programao C projetada para adicionar os conceitos e modelo de execuo do TinyOS. Mesmos conceitos do TinyOS
Especificao do comportamento dos componentes em termos de um conjunto de interfaces Interfaces so bidirecionais Componentes so estaticamente ligados a outros atravs das interfaces

Desenvolvimento de aplicaes no TinyOS


Ncleo TinyOS (C) Bibliotecas TinyOS (nesC)

Aplicao (nesC)

Compilador nesC

Aplicao + TinyOS (C)

Compilador C

Aplicao executvel

Fluxo de compilao (1/2)


Tipos de arquivo e aplicaes
.nc nesc 1 .c avrgcc .s avr-as .srec avrobjcopy .exe avrgcc .o

Fluxo de compilao (2/2)


Tipos de arquivo:
.nc: configurao do TinyOS; .c: C p/ AVR; .s: montagem p/ AVR; .o: objeto p/ AVR; .exe: linkeditado p/ AVR; .srec: S-records p/ AVR.

Conceitos do TinyOS embutidos no nesC Tarefas, Eventos, Comandos


Tarefas
Computaes em background, no so crticas em relao a tempo

Eventos
Crticos em relao ao tempo Interrupes externas Originador envia um Sinal Receptor aceita o Evento

Comandos
Chamadas de funes para outros componentes No sinalizam

Conceitos dos componentes de SW


Interfaces (xxx.nc) Especificam funcionalidades para o mundo exterior Dizem ao mundo exterior quais comandos podem ser chamados quais eventos precisam ser lidados Componentes de Software Module (xxxM.nc) Arquivo de cdigo com implementao Codifica a Interface Configuration (xxxC.nc) Ligao de componentes Quando no nvel mais alto , no usa a letra C no nome do arquivo xxx.nc

Mdulo
Declarao das interfaces que um componente prov (linhas 2 a 4) Interfaces utilizadas ( 5 a 7) No escopo implementation (linhas 9 a 16), um mdulo implementa os comandos das interfaces providas e os eventos das interfaces das quais se utiliza.

Configurao
o componente que declara como um certo conjunto de mdulos deve ser conectado, a fim de oferecer um servio. As interfaces que prov e as interfaces de que se utiliza (linhas 2 a 7).

Ligao das Interfaces


A ligao M.x -> N.y diz que a interface x usada pelo componente M implementada pela interface y provida pelo componente N. Declaraes implcitas:
M.X -> N equivalente a M.X -> N.X

Configurao da aplicao principal


Arquivo <NomeDaAplicacao>.nc. no prov nem utiliza nenhuma interface. Deve incluir obrigatoriamente o componente Main, que possui apenas a interface StdControl. Essa interface possui os mtodos de inicializao de uma aplicao.

Blink.nc
configuration Blink { } implementation { components Main, BlinkM, SingleTimer, LedsC; Main.StdControl -> BlinkM.StdControl; Main.StdControl -> SingleTimer.StdControl; BlinkM.Timer -> SingleTimer.Timer; BlinkM.Leds -> LedsC; }

BlinkM.nc
module BlinkM { provides { interface StdControl; } uses { interface Timer; interface Leds; }

BlinkM.nc
implementation { command result_t StdControl.init() { call Leds.init(); return SUCCESS; } command result_t StdControl.start() { return call Timer.start(TIMER_REPEAT, 1000) ; } command result_t StdControl.stop() { return call Timer.stop(); } event result_t Timer.fired() { call Leds.redToggle(); return SUCCESS; } }

nesC Manual
Para mais detalhes sobre a linguagem, o leitor deve consultar o manual de referncia da linguagem nesC. GAY, D. et al. nesC v1.1 Language Reference Manual. maio 2003. Disponvel em:
http://nescc.sourceforge.net/papers/nesc-ref.pdf.

Pilha do Rdio do MICA2 para o TinyOS


A famlia MICA2 dos ns sensores motes usa o modelo transceptor RF ChipCon CC1000 single-chip
Frequncia 300-1000 MHz Modulao FSK com transmisso de dados de at 76.8 kBaud Codificao Manchester Integrado com sincronizador de bit Sensitividade 110 dBm (@ 2.4 kBaud) Permite selecionar modos de potncia de transmisso Interface de controle digital usando registradores de funes especiais

TOSSIM
o simulador do TinyOS. Compila diretamente cdigo TinyOS. A simulao executa nativamente em um PC. Pode simular milhares de ns sensores simultaneamente. Cada n na simulao executa o mesmo programa TinyOS.

Modelo de execuo
Simulador de eventos discretos. Eventos de simulao abstraem eventos de hardware. Possuem timestamp global. A cada evento de simulao:
Chama eventos ou comandos associados Executa as tarefas na fila enquanto esta no estiver vazia.

Arquitetura TOSSIM

Abstraes do hardware
Simulao em baixo nvel:
Relgio
Timestamp corresponde a batidas do relgio do Mica mote (4MHz)

EEPROM
Arquivo com contedo da memria

Sensores (ADC) Rdio

Substituio apenas do componentes de baixo nvel.

Simulao: ADC
getData(): requisio ao ADC escalona um evento de simulao a 200 unidades de tempo. dataReady(): o evento de simulao dispara evento do TinyOS. Modelos de simulao:
Random: retorna um nmero aleatrio de 10 bits. Generic: permite atuao sobre o modelo aleatrio.

Simulao: Rdio
Pilha simulada: CSMA com CRC

Simulao: Rdio
Simulao dos efeitos da comunicao sem fio, em nvel de bits:
Corrupo de bit
Erro no start symbol previne recepo. Erro no acknowledgment provoca falha na recepo.

Terminal escondido Interferncia de sinal

Simulao: Rdio
Grafo de conexes:
Vrtice: n sensor Aresta: conexo Peso: probabilidade de erro.

Simulao do terminal escondido:


a:b:0.5 b:c:0.4 No h a:c

Atuao sobre a simulao


TOSSIM pode comunicar com outras aplicaes atravs de um soquete TCP.
Envia dados da simulao Recebe comandos que atuam sobre a simulao:
Injeo de pacotes na rede Alterao da topologia Ligar / desligar n sensor Modificar valores retornados pelo ADC

TinyViz
Aplicao em Java com interface grfica que permite visualizar e controlar a simulao em tempo de execuo, inspecionando mensagens de depurao, pacotes de rdio e UART, e outros. Prov mecanismos de atuao atravs de plugins.

TinyViz

Executando o TOSSIM
Entre no diretrio da aplicao Execute make pc Entre no diretrio build/pc Execute o programa main.exe Exemplo: simulao com trs ns:
./main.exe 3

Nveis de depurao
Controlado pela varivel de ambiente DBG Exemplo: visualizar pacotes e mudanas nos leds.
export DBG=am,led

A ajuda do TOSSIM contm o conjunto de vriaveis suportadas:


./main.exe -h

Mensagens da aplicao
Variveis DBG especiais: usr1,usr2,usr3. Comando dbg (similar ao printf de C):
dbg(DBG_CRC, "crc check failed: \%x, \%x\n", crc, mcrc);

Variveis dbg podem ser combinadas:


dbg(DBG_ROUTE|DBG_ERROR, "Received control message: lose our network name!.\n");

Gerao de topologias
LossyBuilder
usage: java net.tinyos.sim.LossyBuilder [options] options: -t grid: Topology (grid only and default) -d <m> <n>: Grid size (m by n) (default: 10 x 10) -s <scale>: Spacing factor (default: 5.0) -o <file>: Output file -i <file>: Input file of positions -p: Generate positions, not error rates

Referncia
TOSSIM: A Simulator for TinyOS networks. www.cs.berkeley.edu/~pal/pubs/nido.pdf

Você também pode gostar