Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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
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
byte
Radio byte
bit
RFM
evento
comandos
Interrupes
Hardware
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
Composio
provides interface StdControl; interface Timer: uses interface 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(); }
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
Aplicao (nesC)
Compilador nesC
Compilador C
Aplicao executvel
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
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).
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.
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
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.
Simulao: Rdio
Grafo de conexes:
Vrtice: n sensor Aresta: conexo Peso: probabilidade de erro.
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
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);
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