Você está na página 1de 19

Sistemas de Tempo Real:

FreeRTOS
Graduação em Eng. De Computação – Departamento de Teleinformática
Liuz Guerreiro Palácio
Introdução
FreeRTOS

 É um kernel de tempo real de código aberto projetado para funcionar em


microcontroladores e pequenos processadores.
 Foi criado em 2003 por Richard Barry e foi mantido por sua companhia
Real Time Engineers Ltd até 2017 onde passou a fazer parte da Amazon
Web Services (AWS).
 Surgiu então o Amazon FreeRTOS que foi baseado no FreeRTOS mas
adiciona novas funcionalidades para permitir a conexão de pequenos
dispositivos à serviços de nuvem, facilitando assim que dispositivos de IOT
sejam conectados à rede.
 Apesar de grátis, o FreeRTOS é um dos líderes de mercado, suportando
mais de 35 arquiteturas, sendo desenvolvido e mantido sob um alto
controle de qualidade, garantindo segurança, confiabilidade e robustez.
FreeRTOS
 O FreeRTOS segue padrões de codificação de alta qualidade, facilitando a
leitura e implementação.
 A implementação do timer só utiliza CPU se o timer realmente precisar ser
utilizado.
 O modelo de filas usado gerencia de tal forma a combinar simplicidade e
flexibilidade em um código curto, características que são geralmente
mutuamente exclusivas
 É um sistema que pode operar em modo preemptivo ou cooperativo
 Possui atribuição de prioridades flexível
 Mecanismo leve e rápido de notificações de processos (flags)
 Semáforos Binários e semáforos contadores, mutexes, software timers e event
groups.
 Verificação de estouro de pilha
OpenRTOS e SafeRTOS

 O freeRTOS e o Amazon FreeRTOS são distribuídos sob a licença de código


aberto do MIT, porém há duas versões comerciais disponíveis.
 OpenRTOS é uma versão comercial do sistema. É fornecida sob licença da
AWS.
 SafeRTOS é uma versão derivada da FreeRTOS que foi analisada, testada e
documentada para se adequar a restrições criticas em aplicações
industriais (IEC 61508 SIL 3), médicas (IEC 62304 e FDA510K) e automotivas
(ISO 26262), além de outros padrões internacionais de segurança. O
SafeRTOS é auditado de forma segura e independente mantendo toda
documentação.
Portabilidade
 O freeRTOS pode ser portado para diversas arquiteturas de
microcontroladores e ser compatível com suas respectivas ferramentas de
desenvolvimento (IDEs).
 Existem diversos projetos demo disponíveis para o freeRTOS, esses projetos
visam facilitar o aprendizado, diminuir o tempo de projeto e fornecer um
ponto de partida para novos usuários, além de facilitar a troca de
microcontrolador de forma mais rápida, desde que seja mantida a
arquitetura.
 No site oficial www.freertos.org podemos encontrar esses projetos e
documentação para os mais diversos dispositivos.
 Abaixo algumas das arquiteturas e dispositivos suportados, e suas
respectivas fabricantes.
 Actel (now Microsemi)
• Supported processor families: SmartFusion, SmartFusion2 - see Microsemi listing
• Supported tools: IAR, Keil, SoftConsole (GCC with Eclipse)
 Altera
• Supported processor families: Cyclone V SoC (ARM Cortex-A9), Nios II
• Supported tools: Altera SoC EDS (ARM DS-5 with GCC), Nios II IDE with GCC
 Atmel
• Supported processor families: SAMV7 (ARM Cortex-M7), SAM3 (ARM Cortex-M3),
SAM4 (ARM Cortex-M4 ), SAMD20 (ARM Cortex-M0+), SAMA5 (ARM Cortex-A5),
SAM7 (ARM7), SAM9 (ARM9), AT91, AVR and AVR32 UC3
• Supported tools: IAR, GCC, Keil, Rowley CrossWorks
 Freescale
• Supported processor families: Kinetis ARM Cortex-M4, Coldfire V2, Coldfire V1,
other Coldfire families, HCS12, PPC405 & PPC440 (Xilinx implementations) (small
and banked memory models), plus contributed ports
• Supported tools: Codewarrior, GCC, Eclipse, IAR
 Fujitsu (Now Spansion)
• Supported processor families: FM3 ARM Cortex-M3, 32bit (for example MB91460) an
16bit (for example MB96340 16FX)
• Supported tools: Softune, IAR, Keil
 Luminary Micro / Texas Instruments. See also TI.
• Supported processor families: All Luminary Micro ARM Cortex-M3 and
ARM Cortex-M4 based Stellaris microcontrollers
• Supported tools: Keil, IAR, Code Red, CodeSourcery GCC, Rowley CrossWorks
 Microchip
• Supported processor families: PIC32MX, PIC32MZ, PIC32MZ EF, PIC24, PIC24EP,
• dsPIC, MEC14xx, CEC13xx, CEC17xx, MEC17xx, MEC51xx
• Supported tools: MPLAB C32, MPLAB C30
 Microsemi
• Supported processor families: SmartFusion, SmartFusion2
• Supported tools: IAR, Keil, SoftConsole (GCC with Eclipse)
 NEC (now Renesas)
• Supported processor families: V850 (32bit), 78K0R (16bit)
• Supported tools: IAR
 NXP
• Supported processor families: LPC1500 (ARM Cortex-M3), LPC1700 (ARM Cortex-M3)
• LPC1800 (ARM Cortex-M3), LPC1100 (ARM Cortex-M0), LPC2000 (ARM7),
LPC4000 (ARM Cortex-M4F/ ARM Cortex-M0)
• Supported tools: GCC, Rowley CrossWorks, IAR, Keil, LPCXpresso IDE, Eclipse
Funcionamento
 Quatro estados possiveis para cada processo:
• Executando
• Pronto
• Bloqueado
• Suspenso

 Prioridades
• As prioridades no FreeRTOS variam de 0 a um valor máximo -1. Quanto
maior esse número maior é a prioridade do processo.
• O escalonador do FreeRTOS garante que tarefas no estado pronto ou
executando, sempre terão
• oportunidade de ser executadas pelo processador desde que seu nivel
de prioridade seja o mais alto.
Trace Hook Macros

 São uma ferramenta poderosa que permite a coleção de dados de


como a aplicação embarcada está se comportando.
 Pontos de interesse dentro do código fonte do FreeRTOS contem macros
vazias para que uma aplicação possa redefini-los para permitir aplicações
especificas. Sendo assim, apenas as macros de interesse são
apresentadas. As que não forem implementadas não impactam no tempo
de execução da aplicação.
 Por exemplo: Configurar uma saída digital para indicar qual processo está
executando, permitindo que um analisador lógico seja usado para ver e
gravar a sequencia e o tempo de execução do processo.
Suporte à Unidade de Proteção de Memória

 FreeRTOS é compatível com ARM- Cortex M3 e ARM Cortex M4F, e possui


uma implementação que possibilita a utilização de proteção à memória
 Usar Memory Protection Unit (MPU) pode proteger as aplicações de alguns
erros como erros de programação ou até mesmo falhas de hardware.
 Esse mecanismo costuma ser usado para proteger o funcionamento do
kernel em si, mas também protege periféricos de modificação indesejadas
ou de estouro de pilha.
 As tarefas podem ser criadas em modo de Usuário ou em modo
Privilegiado
 Tarefas no modo Usuário só podem acessar sua própria pilha e até três
regiões de memória pré-definidas.
Suporte à Unidade de Proteção de Memória

 No modo de Usuário nem uma informação de memória é compartilhada


entre os processos, mas os processos podem se comunicar usando
mecanismo de fila e semáforos.
 A API do FreeRTOS e os dados mantidos pelo RTOS kernel estão localizados
em uma porção da RAM que só pode ser acessado no modo privilegiado.
 No modo privilegiado um processo pode acessar todo o mapa de
memória enquanto que o modo usuário só acessa sua própria pilha.
 Para facilitar a criação de processos preocupado com MPU existe uma
função especifica que recebe uma estrutura como parâmetro de
configurações. Essa função cria processos tanto no modo usuário.
Informações
complementares
 O FreeRTOS também possui funcionalidades extras que deixam o sistema
ainda mais completo.
 O “ecossistema” possui ferramentas otimizam o uso de protocolos de rede
como TCP e UDP permitindo melhor desempenho nesse tipo de aplicação.
 Há também ferramenta de análise e para tempo de execução. O
FreeRTOS+Trace cptura o comportamento dinâmico e oferece
informações offline para serem visualizada de forma gráfica e organizada.
 O FreeRTOS+Trace pode ser usado juntamente com um debugger para
visualização em tempo de execução dos processos e das rotinas de
interrupção.
Parceiros do FreeRTOS
Obrigado!

Você também pode gostar