26.12.2014 Views

Desenvolvimento de um Veículo Aéreo Não-Tripulado - LARA ...

Desenvolvimento de um Veículo Aéreo Não-Tripulado - LARA ...

Desenvolvimento de um Veículo Aéreo Não-Tripulado - LARA ...

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.

o escalonador é feito para aten<strong>de</strong>r as restrições <strong>de</strong> tempo <strong>de</strong>terminadas pelo programador [46].<br />

Dessa forma, se existe <strong>um</strong>a tarefa <strong>de</strong> alta priorida<strong>de</strong> que <strong>de</strong>ve ser executada a cada 10 ms, o<br />

sistema fará o possível para aten<strong>de</strong>r essa <strong>de</strong>manda. Esse tipo <strong>de</strong> <strong>de</strong>terminismo e restrição não<br />

existe em sistemas operacionais comuns, on<strong>de</strong> latências gran<strong>de</strong>s são aceitáveis.<br />

O uso <strong>de</strong> <strong>um</strong> sistema operacional em tempo real se torna extremamente importante quando os<br />

períodos das tarefas fica próximo dos limites do sistema, e quando é necessário se <strong>de</strong>finir priorida<strong>de</strong>s<br />

entre essas tarefas. Essas necessida<strong>de</strong>s ficaram muito claras quando <strong>um</strong>a primeira implementação<br />

do código do LPC2148 se mostrou muito lenta - por mais que todos os dados eram enviados no<br />

período correto, a ação <strong>de</strong> controle não era suficientemente rápida para controlar a dinâmica da<br />

aeronave, <strong>de</strong>vido a ausência <strong>de</strong> priorida<strong>de</strong>s e a quantida<strong>de</strong> gran<strong>de</strong> <strong>de</strong> interrupções. A necessida<strong>de</strong><br />

<strong>de</strong> se implementar filas e semáforos rudimentares foram outros fatores que motivaram a mudança<br />

para <strong>um</strong> sistema operacional em tempo real.<br />

Dentre as possíveis escolhas <strong>de</strong> RTOS, <strong>de</strong>ve-se <strong>de</strong>stacar o Xenomai, que é <strong>um</strong>a extensão em<br />

tempo real para o Linux, o VxWorks, o QNX e o FreeRTOS. Desses, somente o Xenomai e o<br />

FreeRTOS são livres e gratuitos, e somente o FreeRTOS era projetado para operar em plataformas<br />

como o LPC2148.<br />

O FreeRTOS é <strong>um</strong> sistema operacional em tempo real <strong>de</strong>senvolvido para especificamente para<br />

microcontroladores. Sua principal vantagem é o amplo suporte a várias famílias <strong>de</strong> processadores<br />

e a portabilida<strong>de</strong> entre diferentes suites <strong>de</strong> compiladores. Ele também implementa semáforos, filas<br />

e <strong>um</strong> escalonador, suprindo todas as necessida<strong>de</strong>s do projeto.<br />

O principal <strong>de</strong>safio foi adaptar a última versão do FreeRTOS (versão 7.1.1) para o toolchain<br />

utilizado no <strong>de</strong>senvolvimento em ARM no <strong>LARA</strong> (GNU GCC fornecido Mentor Graphics Sourcery<br />

Co<strong>de</strong>Bench Lite). Para tal, o mapeamento <strong>de</strong> memória interna (<strong>de</strong>finidas pelos linker scripts),<br />

as rotinas <strong>de</strong> baixo nível em assembly (startup files), as diretivas do compilador e o hardware<br />

abstraction layer do FreeRTOS diveram que ser modificadas para o LPC2148 com o GCC. É<br />

chamado <strong>de</strong> porting, ou adaptação, da última versão do FreeRTOS para o LPC2148. Esse trabalho<br />

foi feito com base no manual do LPC2148 [47].<br />

É importante <strong>de</strong>stacar que essa versão “portada” do FreeRTOS está disponível livremente<br />

na Wiki do <strong>LARA</strong>. A forma que o port foi feito está <strong>de</strong>ntro dos padrões estabelecidos pelos<br />

<strong>de</strong>senvolvedores do FreeRTOS, permitindo atualizações do código fonte sem gran<strong>de</strong>s dificulda<strong>de</strong>s.<br />

É importante resaltar que a modularização foi essencial para o <strong>de</strong>senvolvimento <strong>um</strong>a vez que<br />

o FreeRTOS foi implementado e testado. Todos os módulos <strong>de</strong> comunicação, processamento e<br />

atuação para cada dispositivo já haviam sido <strong>de</strong>senvolvidos e testados no LPC2148 sem sistema<br />

operacional, o que res<strong>um</strong>iu a implementação <strong>de</strong> cada tarefa a inicializar o módulo e adquir dados<br />

periodicamente.<br />

4.7.1.1 Tarefas utilizadas<br />

A principal motivação para utilizar <strong>um</strong> sistema operacional em tempo real foi a possibilida<strong>de</strong><br />

<strong>de</strong> se ter várias tarefas sendo executadas em paralelo. Logo, a <strong>de</strong>cisão principal <strong>de</strong> projeto foi<br />

77

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

Saved successfully!

Ooh no, something went wrong!