Arquiteturas para Redes de Sensores Sem Fio - DCC/UFMG
Arquiteturas para Redes de Sensores Sem Fio - DCC/UFMG
Arquiteturas para Redes de Sensores Sem Fio - DCC/UFMG
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
eventos. Um evento po<strong>de</strong> acionar comandos ou acionar<br />
a execução <strong>de</strong> uma tarefa. Uma tarefa é formada por um<br />
conjunto <strong>de</strong> comandos e não po<strong>de</strong> bloquear outra tarefa, mas um evento po<strong>de</strong> interromper a<br />
execução <strong>de</strong> uma tarefa. Na figura 4.18, uma interrupção gera um evento. Este gera um evento<br />
<strong>para</strong> o nível superior, que por sua vez executa um comando e gera um evento <strong>para</strong> o nível superior.<br />
O tratador <strong>de</strong> eventos executa dois comandos, e cada um inicia uma tarefa, que executam<br />
um conjunto <strong>de</strong> comandos. Eventos gerados por interrupção interrompem tarefas, enquanto<br />
tarefas não interrompem tarefas. Tarefas e tratadores <strong>de</strong> eventos executam um conjunto <strong>de</strong><br />
comandos.<br />
A tabela 4.8 resume as estruturas usadas no escalonador do kernel.<br />
Item Eventos Tarefas<br />
Processamento Pequena quantida<strong>de</strong> <strong>de</strong> processamento Não são críticas em relação<br />
ao tempo<br />
Exemplos Relógios e Interrupções; ADC (conversão<br />
analógico digital)<br />
Calcular a média <strong>de</strong> um vetor<br />
Proprieda<strong>de</strong>s Po<strong>de</strong>m interromper tarefas executando Executam até finalizar<br />
4.6. Ambiente <strong>de</strong> Programação<br />
Aplicação<br />
(nesC)<br />
TinyOS Kernel ( C)<br />
TinyOS libs (nesC)<br />
Compilador<br />
nesC<br />
Tabela 4.8: Eventos versus Tarefas<br />
Aplicação &<br />
TinyOS (C)<br />
Compilador<br />
C<br />
Executável da<br />
Aplicação<br />
Figura 4.19: Etapas envolvidas no <strong>de</strong>senvolvimento<br />
<strong>de</strong> uma aplicação no<br />
TinyOS.<br />
Esta seção apresenta uma breve<br />
<strong>de</strong>scrição das ferramentas <strong>de</strong> software<br />
<strong>para</strong> <strong>de</strong>senvolvimento <strong>de</strong><br />
aplicações <strong>para</strong> RSSFs, incluindo<br />
uma <strong>de</strong>scrição da linguagem <strong>de</strong><br />
programação NesC e ferramentas<br />
<strong>de</strong> simulação TOSSIM e TinyViz.<br />
As etapas que envolvem o<br />
<strong>de</strong>senvolvimento <strong>de</strong> uma aplicação<br />
no TinyOS são mostradas na<br />
figura 4.19. Uma aplicação é<br />
<strong>de</strong>scrita na linguagem NesC. Em<br />
seguida, o código fonte <strong>de</strong>sta<br />
aplicação, junto com o kernel do TinyOS e as bibliotecas do TinyOS são compilados por um<br />
compilador NesC, resultando no código <strong>de</strong> uma aplicação com TinyOS em C. Este código<br />
é compilado por um compilador C, gerando um executável <strong>de</strong> uma aplicação. Os tipos<br />
<strong>de</strong> arquivos em cada uma das etapas do <strong>de</strong>senvolvimento <strong>de</strong> aplicação possuem extensões<br />
diferentes, que servem <strong>para</strong> i<strong>de</strong>ntificar o formato do arquivo. A figura 4.20 apresenta o fluxo <strong>de</strong><br />
compilação. Arquivos escritos em NesC possuem extensão .nc. Quando compilados através<br />
do compilador da linguagem NesC, o ncc, geram arquivos em C que possuem extensão .c.