Documente Academic
Documente Profesional
Documente Cultură
embarcados
Hugo Marcondes
Instituto Federal de Santa Catarina
Departamento Acadmico de Eletrnica
{hugo.marcondes}@ifsc.edu.br
Abstract
Este artigo apresenta o sistema operacional de tempo
real chamado ChibiOS/RT. O ChibiOS/RT um sistema operacional de tempo real rpido e compacto
projetado para aplicaes embarcadas. Ele oferece componentes como threads, mutexes, semforos, eventos, temporizadores, alm de dispositivos de E/S flexveis e com
suporte a chamadas temporizadas com timeout. Atualmente o ChibiOS/RT suporta uma vasta gama de plataformas baseadas nas arquiteturas ARM7, Cortex-M3, AVR,
MSP430 e x86.
uma chamada de sistema no ir falhar, a mesmo que se esteja passando parmetros incorretos.
Outro aspecto importante do ChibiOS/RT a variada
gama de arquiteturas que o mesmo suporta, permitindo o
seu uso prtico em uma srie de microprocessadores utilizados atualmente pela indstria. As arquiteturas suportadas
so ARM7, Cortex-M3, AVR, MSP430 e x86.
2. ChibiOS/RT
1. Introduo
2.1. Kernel
de E/S mais complexos com um sistema de arquivos ou uma pilha de comunicao em rede.
Drivers de Plataforma: Esta classe de drivers so especficos de uma plataforma e no so construdos para serem portados. Geralmente representam cdigo que so compartilhados entre diversos
drivers de uma mesma plataforma.
ser que o sistema tenha sido projetado para tal. Cada tarefa
pode estar em trs estado distintos:
Running: A tarefa est atualmente em execuo.
Ready: A tarefa est apta a ser executada (aguardando ser
escalonada).
Waiting: A tarefa est aguardando a execuo de algum
evento.
Cada ncleo de processamento existente no sistema sempre executa a tarefa de maior prioridade que est apta a execuo. Quando uma tarefa de maior prioridade se torna apta
(Ready) para execuo, e outra de menor est executando,
a mesma preemptada para que a tarefa de mairo prioridade execute. Desta forma, se o sistema possui N ncleos
de processamento, o escalonador garante que as N tarefas
de maior prioridade estaro em execuo no sistema.
Sistemas profundamente embarcados geralmente possuem apenas um ncleo de processamento, de forma que
nestes casos, haver apenas uma tarefa em execuo em um
dado momento.
As prioridade no ChibiOS/RT so definidas atravs de
um conjunto de inteiros contnuos, que comeam a partir da
constante LOWPRIO at a HIGHPRIO. A funo main() de
um programa executa com a prioridade padro NORMALPRIO, que esta no meio do alcance de prioridades definidas
entre LOWPRIO e HIGHPRIO.
Durante o desenvolvimento de uma aplicao interessante sempre utilizar prioridades relativas as constantes
HIGHPRIO, LOWPRIO e NORMALPRIO, de forma a permitir que o cdigo se portavel mais facilmente para futuras
verses do SO. A seguir apresentada todos os nveis de
prioridade atualmente existentes no ChibiOS/RT.
zero: Prioridade reservado. Todas as prioridades possveis
do sistemas so maiores do que zero.
IDLEPRIO: Prioridade especial reservada para a tarefa
IDLE.
LOWPRIO: Menor prioridade possvel que pode ser utilizada pelas tarefas do usurio.
NORMALPRIO: Prioridade central dentro da faixa de
prioridades que so reservadas para o usurio.
HIGHPRIO: Maior prioridade possvel para uso de tarefas do usurio.
ABSPRIO: Maior prioridade possvel do sistema. As nicas tarefas que esto acima desta prioridade so o
tratamento das interrupes geradas pelo hardware.
2.7.2. Semforo Contador 2.7.3. Mutexes Um semforo contador um objeto para sincronizao
de tarefas que pode contuer um nmero arbitrrio de estados (fig. 5).. O estado interno que um semforo contador
definido por uma varivel inteira sinalizada, o contador.
A semntica do contador do semforo definada como se
segue:
Negativo: Existem -N tarefas na fila aguardando o
semforo.
Zero: No h tarefas na fila, uma operao de wait
deve colocar na fila a tarefa que a executar.
Positivo: no h tarefas aguardando na fila, uma operao de wait no ir colocar uma tarefa na fila.
A duas operaes definidas por um semforo contador
so:
Wait (chSemWait() no ChibiOS/RT). Esta operao
decrementa o contador do semforo, se o resultado for
negativo, a tarefa que chamou a operao bloqueada
no semforo.
Signal (chSemSignal() no ChibiOS/RT). Esta operao incrementa o contador do semforo. Se o valor
do semforo for negativo antes do incremento, uma
tarefa que esta aguardando retirada da fila e retorna
ao estado de APTA.
Assim como semforos binrios, semforos contadores
no possuem um atributo de proprietrio e podem ser liberados por qualquer tarefa ou tratador de interrupo do sistema, independente de quem realizou a ltima operao.
Um mutex um objeto para a sincronizao de tarefas que pode ter dois estados possveis, adquirido e no
adquirido (fig. 4). As duas operaes possveis de ocorrer
em um mutex:
Lock (chMtxLock() no ChibiOS/RT). Esta operao
tenta adquirir a propriedade do mutex, se o mutex j
tiver um proprietrio, a tarefa que invocou a operao
Lock suspensa e inserida em uma fila de espera.
Unlock (chMtxUnlock() no ChibiOS/RT). Esta operao libera a propriedade de um mutex. Se existir tarefas na fila do mutex, esta retirada da fila e se torna a
nova proprietria do mutex, alm de ser resumida.
Note que, diferentemente dos semforos, mutexes possuem donos. Um mutex s poder ser destravado pela tarefa
que o possui. Esta caracteristca impossibilita o uso de mutexes em tratadores de interrupes, mas viabiliza a implementao do protocolo de herana de prioridade, de forma
a contornar os problemas gerados pela inverso de prioridade. Mutexes so otimizados para a implementao de excluso mtua entre tarefas.
ChibiOS/RT extende os conceitos bsicos em relao a
essas primitivas de sincronizao de diversas forma, em especial, os semforos podem ser temporizados, delimitandose assim o tempo mximo de espera de uma tarefa por um
recurso, algo extremamente til quando utilizados na sincronizao de primitivas de E/S.
3. Concluses
Este artigo apresentou uma viso geral do sistema operacional de tempo real ChibiOS/RT, um sistema de cdigo
fonte aberto focado no uso em sistemas profundamente embarcados. Em especial, este artigo focou na descrio dos
principais componentes relacionados a sistemas de tempo
real; escalonadores de tarefas e sincronizadores. Nota-se
como boa parte dos sistemas operacionais de tempo real existente, o ChibiOS/RT apresenta um algoritmo de escalonamento baseado em prioridades, permitindo a existencia de
tarefas com mesma prioridade, onde neste caso, o escalonamento passa a trabalhar com um algoritmo Round-Robin.
Do ponto de vista de sincronizadores, o ChibiOS/RT apresenta a implementao de mutex com o protocolo de herana de prioridde de forma a contornar os problemas relacionados com a inverso de prioridade.
O ChibiOS/RT apresenta porte do sistema para uma srie
de arquiteturas, que aliado com os componentes existentes
neste sistema o torna um forte condidado para o uso como
um RTOS.
References
[Sir] Giovanni Di Sirio. Chibios/rt. http://www.chibios.
org/. Accessed October 1, 2014.