Você está na página 1de 36

Sumario

Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Desenvolvimento de aplicac oes para RSSFs usando
a linguagem nesC
Licao 1: Temporizacao, sensoriamento e comunica cao a um salto
(CIA)
2
Ambiente de experimentacao remota de IoT
Prof. Silvana Rossetto
6 de outubro de 2011
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
1
Introdu cao
Plataformas de nos sensores
O ambiente de desenvolvimento TinyOS
2
Atividade 1
Aplicacao BlinkAppC.nc
Modulos e congura coes
3
Atividade 2
Aplicacao BlinkTaskAppC.nc
4
Atividade 3
Aplicacao SenseAppC.nc
Interfaces e operacoes em duas fases
5
Atividade 4
Aplicacao BlinkToRadioAppC.nc
Interacao entre componentes, componentes genericos,
endianess
Prof. Silvana Rossetto Temporizacao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Plataformas de nos sensores
O ambiente de desenvolvimento TinyOS
Arquitetura basica das aplicac oes para RSSFs
Sensores em uma rede ad-hoc coletam e pre-processam dados que
sao enviadas para uma estacao base
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Plataformas de nos sensores
O ambiente de desenvolvimento TinyOS
Desaos das RSSFs
Caractersticas que requerem solucoes distintas para RSSFs
1
Longevidade de operacao da rede
2
Interface com o mundo fsico
3
Recursos limitados
4
Comunicacao sem o
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Plataformas de nos sensores
O ambiente de desenvolvimento TinyOS
Exemplos de plataformas de n os sensores
Telosb
Microcontrolador TI MSP430, 16 bits
10kB de RAM, 48kB de Flash
Radio CC2420, padrao IEEE802.15.4, 250kbps
Micaz
Microcontrolador Atmel ATmega128, 8 bits
4kB de RAM, 128kB de Flash
Radio CC2420, padrao IEEE802.15.4, 250kbps
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Plataformas de nos sensores
O ambiente de desenvolvimento TinyOS
O sistema operacional TinyOS
Framework para programa cao de RSSFs
O TinyOS e um framework de programa cao para RSSFs que
permite construir um sistema operacional especco para cada
aplicacao
A linguagem nesC
nesC (network embedded system C) e uma extensao de C que
implementa o modelo de componentes do TinyOS
Modelo arquitetural para facilitar a portabilidade do sistema
para diferentes plataformas
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Plataformas de nos sensores
O ambiente de desenvolvimento TinyOS
Processo de geracao do c odigo executavel
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkAppC.nc
Modulos e congura coes
Aplicacao BlinkAppC.nc
Componente de implementa cao (BlinkC.nc)
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkAppC.nc
Modulos e congura coes
Componente de implementacao (BlinkC.nc)
Figura: Interfaces usadas pelo componente BlinkC.
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkAppC.nc
Modulos e congura coes
Aplicacao BlinkAppC.nc
Componente de conguracao (BlinkAppC.nc)
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkAppC.nc
Modulos e congura coes
Componente de conguracao (BlinkAppC.nc)
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkAppC.nc
Modulos e congura coes
Tipos de componentes nesC
Modulos
Denem como os comandos e tratadores de eventos sao
implementados e como o estado do componente e alocado
(implementa a logica interna do componente)
Conguracoes
Especicam associacoes/amarra coes entre os componentes para
denir uma aplica cao ou criar abstra coes de nvel mais alto
Cada componente esta associado a um arquivo fonte
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkAppC.nc
Modulos e congura coes
Blocos de assinatura e implementacao
Todo componente nesC possui dois blocos de codigo: assinatura e
implementa cao
Bloco de assinatura
O bloco de assinatura tem a mesma sintaxe em modulos e em
conguracoes: contem zero ou mais interfaces que o
componente usa ou oferece
A palavra chave as
Usado para dar um apelido para a interface
Quando varias instancias da mesma interface sao necessarias,
o uso de as e obrigatorio
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkAppC.nc
Modulos e congura coes
M odulos
Bloco de implementa cao dos modulos
Corresponde `a implementa cao dos comandos das interfaces
oferecidas e dos eventos das interfaces usadas
Modulos alocam estado e implementam a logica executavel
Comandos sao invocados com a palavra call e eventos sao
sinalizados com a palavra signal
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkAppC.nc
Modulos e congura coes
Congurac oes
Bloco de implementa cao das congura coes
Denicao das liga coes/amarracoes entre componentes
(dene um mapeamento entre os espa cos de nomes locais de
pares de componentes)
Uma conguracao deve nomear/listar os componentes que
serao ligados usando a palavra chave components
Operadores usados nas Congura coes:
> e < (aponta do usuario para o provedor, combinam
componentes completando suas assinaturas)
= (mapeia um nome para outro, delega a implementacao das
interfaces para outros componentes)
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkTaskAppC.nc
Aplicacao BlinkTaskAppC.nc
Componente de implementa cao (BlinkTaskC.nc)
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkTaskAppC.nc
Tarefas
Escalonamento e execucao de tarefas
Como uma tarefa nao e executada imediatamente, ela nao
retorna valor
...e como ela executa dentro do escopo de nomes do
componente, ela nao precisa receber parametros (os
parametros sao armazenados no componente)
Uma vez escalonada, uma tarefa executa ate terminar, i.e,
nao existe preemp cao entre as tarefas
Cada tarefa da aplica cao possui slot alocado: a operacao post
retorna sucesso se a tarefa ainda nao foi escalonada, ou falha se a
tarefa ja foi escalonada mas ainda nao executou
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkTaskAppC.nc
Escalonamento e execucao de tarefas
As tarefas sao escalonadas em ordem FIFO (e possvel
implementar escalonamento por prioridade)
Os componentes das camadas proximas do hardware por
exemplo, a pilha de comunicacao usam tarefas para
quebrar a sequencia de execu cao assncrona
Dica de programa cao
Se um evento ou um comando precisa fazer uma computacao
longa (ou chamar comandos e sinalizar eventos), o ideal e postar
uma tarefa para fazer essas chamadas, reduzindo o tempo de
tratamento do evento
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkTaskAppC.nc
Impacto das tarefas longas
Como as tarefas executam ate terminarem, tarefas longas
devem ser quebradas em tarefas menores
Exemplo, em componentes que tratam a recepcao de pacotes
o uso de tarefas pode impactar na taxa de recepcao de pacotes
pela aplica cao: novo pacote chega e o slot da tarefa ainda
nao foi liberado porque tarefas longas estao na la
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao SenseAppC.nc
Interfaces e opera coes em duas fases
Aplicacao SenseAppC.nc
Componente de implementa cao (SenseC.nc)
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao SenseAppC.nc
Interfaces e opera coes em duas fases
Aplicacao SenseAppC.nc
Componente de conguracao (SenseAppC.nc)
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao SenseAppC.nc
Interfaces e opera coes em duas fases
Interfaces em nesC
Funcionalidades relacionadas agrupadas em interfaces
Interfaces genericas
Evitam a duplica cao desnecessaria de codigo
Permitem passar tipos como parametros
Quando um componente declara uma interface generica, ele
deve informar seus parametros
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao SenseAppC.nc
Interfaces e opera coes em duas fases
Interfaces em nesC
Relacionamento funcional entre dois ou mais componentes
A declaracao de uma interface inclui uma ou mais fun coes
(que podem ser comandos ou eventos)
O papel que um componente assume no relacionamento
depende se ele oferece ou usa a interface:
usuarios PODEM chamar os comandos e DEVEM implementar
os eventos
provedores PODEM sinalizar os eventos e DEVEM
implementar os comandos
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao SenseAppC.nc
Interfaces e opera coes em duas fases
Interfaces bidirecionais e de duas fases
Interfaces bidirecionais
Declaram eventos e comandos: mecanismo que simula o registro
de funcoes de retorno (callback) sem a necessidade de ponteiros de
funcao
Interfaces de duas fases
Caso particular de interface bidirecional
Opera coes que envolvem o hardware sao normalmente
realizadas em duas fases, ao inves de serem bloqueantes
A conclusao da opera cao deve ser implementada na fun cao de
retorno (evento sinalizado)
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkToRadioAppC.nc
Intera cao entre componentes, componentes genericos, endianess
Aplicacao BlinkToRadioAppC.nc
Componente de implementa cao (BlinkToRadioC)
(Ver arquivo BlinkToRadioC.nc.txt)
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkToRadioAppC.nc
Intera cao entre componentes, componentes genericos, endianess
Aplicacao BlinkToRadioAppC.nc
Componente de conguracao (BlinkToRadioAppC)
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkToRadioAppC.nc
Intera cao entre componentes, componentes genericos, endianess
Aplicacao BlinkToRadioAppC.nc
Arquivo cabecalho (BlinkToRadio.h)
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkToRadioAppC.nc
Intera cao entre componentes, componentes genericos, endianess
Interacao entre componentes
Execucao concorrente
Programas TinyOS envolvem atividades concorrentes
(executadas simultaneamente por diferentes componentes):
transmissao de mensagens, amostragem dos sensores, logica
da aplicacao
Um desao de programacao e garantir que essas atividades
nao se sobreponham, acessando as estruturas de dados fora
do tempo devido
ex., transmissao de uma leitura do sensor ainda nao
concluda
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkToRadioAppC.nc
Intera cao entre componentes, componentes genericos, endianess
Comunicacao entre componentes
Passagem de argumentos
A unica forma de interacao entre componentes e por meio de
chamadas de fun coes (eventos ou comandos)
Como em C, ha duas maneiras de passagem de argumentos:
1
por valor (os dados sao copiados para a pilha e podem ser
alterados livremente)
2
por referencia (usando ponteiros) (os componentes
compartilham o endere co de memoria do dado e entao o
acesso precisa ser coordenado para evitar a manipula cao
incorreta do dado)
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkToRadioAppC.nc
Intera cao entre componentes, componentes genericos, endianess
Estrategia para uso de ponteiros compartilhados
Passagem de bastao
O TinyOS adota uma disciplina similar `a tecnica de passagem de
bastao: a cada instante, todo objeto de memoria esta de
posse de apenas um modulo
Opera coes de duas fases
Se uma interface de duas fases usa essa semantica, recomenda-se
que o evento de sinalizacao de termino use o ponteiro da variavel
como um dos seus parametros para mostrar que a posse do
objeto esta sendo devolvida ao requisitante
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkToRadioAppC.nc
Intera cao entre componentes, componentes genericos, endianess
Componentes genericos
Denicao de componentes basicos
Por default, os componentes TinyOS sao instancias exclusivas:
quando duas congura coes referenciam o mesmo
componente, elas acessam o mesmo codigo e variaveis
Denicao de componentes genericos
Usam a palavra generic antes da assinatura, e podem receber
parametros
Permitem que o sistema use copias independentes de uma
mesma implementacao (nome local unico)
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkToRadioAppC.nc
Intera cao entre componentes, componentes genericos, endianess
Uso de componentes genericos
Para usar um componente generico, ele deve ser instanciado
com o comando new
Componentes que mapeiam diretamente o hardware nao
podem ser genericos pois representam recursos fsicos unicos
O uso da palavra as e obrigatorio se um mesmo componente
generico e instanciado mais de uma vez dentro da mesma
congura cao
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkToRadioAppC.nc
Intera cao entre componentes, componentes genericos, endianess
Exemplo de denicao de componente generico
Componente de envio de mensagens
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkToRadioAppC.nc
Intera cao entre componentes, componentes genericos, endianess
Tipos independentes de plataforma
Alinhamento e codicacao de bytes dependente de plataforma
Cada processador e chip de radio dene regras de alinhamento
(1-byte, 2-bytes) e representa cao de dados (endianness)
Solucao adotada em nesC1.2
nesC1.2 usa a ideia de tipos independentes de plataforma
(TIPs):
podem ser big-endian ou little-endian, independentemente do
processador ou do chip de radio
Sao precedidos por: nx (big-endian) ou nxle (little-endian)
ex., nx uint16 t e nxle uint32 t
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkToRadioAppC.nc
Intera cao entre componentes, componentes genericos, endianess
Tipos independentes de plataforma
Manipula cao de tipos independentes de plataforma
nesC traduz os TIPs em vetores de bytes que sao
empacotados e desempacotados a cada acesso e usam o
endianness determinado
Elimina a necessidade de usar macros (ex., htonl, ntohs)
Se for necessario manipular uma variavel independente de
plataforma varias vezes, recomenda-se copia-la temporariamente
em uma variavel do tipo nativo correspondente
ex., nx uint16 t x = 5; uint16 t y = x
Prof. Silvana Rossetto Temporiza cao, sensoriamento e comunica cao a um salto
Sumario
Introdu cao
Atividade 1
Atividade 2
Atividade 3
Atividade 4
Aplica cao BlinkToRadioAppC.nc
Intera cao entre componentes, componentes genericos, endianess
Referencias bibliogracas
1
Site do TinyOS, http://www.tinyos.net.
2
TinyOS Programming, Philip Levis and David Gay, Cambridge
University Press, eBook(EBC), 2009.
3
TinyOS Programming, Philip Levis and David Gay, 2009
(PDF disponvel).
4
Tutoriais TinyOS,
http://docs.tinyos.net/index.php/TinyOS Tutorials.
5
TEPs TinyOs, http://docs.tinyos.net/index.php/TEPs.
Prof. Silvana Rossetto Temporizacao, sensoriamento e comunica cao a um salto

Você também pode gostar