8 Comentários

RTOS: Um ambiente multi-tarefas para Sistemas Embarcados

Atire a primeira pedra quem nunca tenha sofrido com problemas de multi-tarefas em embarcados, já que em qualquer sistema, desde pequeno ou grande, pode-se ter mais de um sensor ou atuador realizando tarefas específicas no sistema. Fazer o controle simultâneo de todos pode exigir um alto grau de programação e sincronização, deixando o projeto muito complexo. Por fim, acabamos usando outro embarcado para ajudar no sistema principal. Com esse mesmo pensamento, pode ser resolvido com um embarcado multi-core, mas os custos aumentam e não é interessante em produtos comerciais.

Então como podemos tirar essa pedra do caminho? Utilizando Sistemas Operacionais, mais especificamente Sistemas Operacionais de Tempo Real (Real Time Operating Systems - RTOS) que se difere em alguns aspectos de um Sistema Operacional Genérico (Generic Purpose Operating System - GPOS) como Windows, Mac e baseados em Linux...

O que é um Sistema Operacional?

Sistema Operacional.
Figura 1 - Sistemas Operacionais.

Um Sistema Operacional é um conjunto de ferramentas (softwares) que criam um ambiente multi-tarefas e também é uma abstração entre software e hardware, incluindo gerenciamento de recursos internos.

Principais itens de um Sistema Operacional

Kernel: É o núcleo do sistema operacional, sendo uma camada de abstração entre o Software e Hardware para gerenciar diversos recursos, como por exemplo:

  • Gerenciamento de memória RAM;
  • Gerenciamento de processos.

Scheduler: Scheduler algorithm é o software do sistema operacional que decide quais tarefas serão escolhidas para serem executadas. Normalmente são selecionadas pela maior prioridade ou, em caso de prioridades iguais, o scheduler tenta dividir o tempo entre todas tarefas. Vamos entender melhor na segunda parte desta série.

Tarefas: São como “mini programas”. Cada tarefa pode desempenhar algo totalmente diferente das outras ou também iguais e compartilhar recursos, como periféricos. São nas tarefas que iremos dividir nosso código em partes, deixando que o scheduler execute todas com suas devidas importâncias.

Quais são as diferenças entre GPOS e RTOS?

GPOS: É amplamente utilizado em computadores e similares por ter um alto throughput (vazão) de dados, é focado na execução de muitas tarefas simultaneamente, onde atraso de uma não é crítico, irá apenas atrasá-la. As tarefas do GPOS não tem um tempo limite para serem executadas, então é comumente chamado de “Not Time Critical”.

RTOS: É um sistema operacional mais especializado onde o tempo de resposta é mais importante do que executar centenas de tarefas simultaneamente. O tempo de resposta não precisa necessariamente ser o mais rápido possível, como o nome pode sugerir, mas deve ser previsível, logo, “Real-Time” pode ser uma resposta de vários minutos ou nanos segundos, dependendo da forma que seu sistema funciona. As tarefas do RTOS contam com tempo limite para serem executadas, então é comumente chamado de “Time Critical”.

Pensando em aplicações práticas

As aplicações práticas para um RTOS são normalmente quando precisamos efetuar muitas tarefas ao mesmo tempo ou trabalhar com “Real-Time” onde falhas além do tempo definido é crítico. Vamos imaginar um cenário onde o sistema embarcado efetua 5 tarefas simultaneamente, listadas a seguir na figura 3:

Exemplo de ambiente multi-tarefa.
Figura 2 - Exemplo de ambiente multi-tarefa.

Nosso embarcado precisa fazer todas essas tarefas simultaneamente, sem que uma atrase a outra, já que implicaria em falha crítica. Nesse sistema, dados são colhidos através de entradas digitais e analógicas, e são enviados através de Modbus, I2C e um Web Server para o usuário, tudo ao mesmo tempo!

Programar esse pequeno sistema em Bare Metal (programação sem sistemas operacionais) poderia ser tão complexo, pelo fato de ser necessário efetuar toda sincronização com que uma tarefa não “trave” a outra, que acabaria forçando o desenvolvedor a utilizar mais microcontroladores ou similares para dividir as tarefas entre eles, causando um custo maior no projeto e podendo inviabilizá-lo por custos.

RTOS será nossa salvação para problemas em ambientes multi-tarefas. Nos próximos artigos da série vamos aprender e praticar os principais conceitos de RTOS com o FreeRTOS, como Tarefas, Queues (Filas de dados), Semáforos e assim por diante.

Saiba mais

Desenvolvendo um RTOS: Introdução

Implementando elementos de RTOS no Arduino

Criando um projeto no IAR com o FreeRTOS

Referências

https://freertos.org/Documentation/RTOS_book.html
https://en.wikipedia.org/wiki/Operating_system
https://en.wikipedia.org/wiki/Real-time_operating_system

Outros artigos da série

RTOS: Scheduler e Tarefas >>
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Software » RTOS: Um ambiente multi-tarefas para Sistemas Embarcados
Comentários:
Notificações
Notificar
guest
8 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Sara Monteiro
Sara
07/02/2019 14:13

Olá José! Venho acompanhando alguns posts seus! Parabéns pela iniciativa, tem me ajudado muito! Comecei a usar o ESP no arduino e as vezes acessava o main.cpp e modificava diretamente de lá. Mas sempre ficava presa na IDE do arduino para compilar e carregar. Agora descobri e instalei o ESP-IDF nativo, mas não consigo importar e usar as muitas bibliotecas prontas disponíveis no git para IDE do arduino para interfacear periféricos. Sei que usando o ESP-IDF configuramos um IDF-PATH voltando apenas para a pasta com as bibliotecas do SDK. Você já tentou algo do tipo? Tem alguma dica para me… Leia mais »

Pedro Jorge Lima da Silva
06/08/2018 00:14

Qual IDE será utilizada para programar a ESP32?

F813
F813
21/07/2018 19:44

Artigo bacana!

Um detalhe que talvez fique melhor: GPOS está mais pra General Purpose Operating System (de propósito geral) do que pra Generic Purpose Operating system; este último termo não é muito frequente...

Alexandre Venito
Alexandre Venito
10/07/2018 08:57

Muito bom. Parabéns pela iniciativa!

Jonathan Gonzaga
09/07/2018 16:45

Só um pequeno detalhe: Linux não é um sistema operacional, é um kernel genérico (GNU/Linux). Sistema operacional seriam aqueles criados apartir do Linux (Ubuntu, Arch Linux, Kali Linux).

Talvez você goste:

Séries



Outros da Série

Menu

WEBINAR
 
Redes Mesh para Monitoramento
e Controle de Sensores

Data: 15/07 às 14:00h Apoio: Artimar| Microchip| Tecsus
 
INSCREVA-SE AGORA »



 
close-link