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 ...
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