15.04.2013 Views

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

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!