
Conheça mais sobre mim!
Seja muito bem-vindo ao curso de FreeRTOS Essencial.
Entenda sobre o que iremos aprender sobre RTOS neste incrível curso!
Pegue seu lápis, seu caderno, e afivele o cinto na cadeira, e te aguardo em nossas aulas.
Documentos utilizados durante o curso.
Resumo do que veremos neste módulo de Introdução.
Vamos analisar o problema de um Sistema Embarcado para contextualizar a solução de problemas que os sistemas de RTOS buscam sanar. É importante entender o que um RTOS trás de ganhos em soluções práticas.
Nesta aula, buscamos compreender o que é um Sistemas Operacional, mais específico, os Real Time Operational Systems.
O FreeRTOS é um sistema em tempo real muito popular e utilizado pelos desenvolvedores, nesta aula vamos entender um pouco do que se trata.
Nesta aula, introduzimos o conceito de Tasks, e porque estás são o cerne de RTOS.
Um dos elementos mais importantes que compõem um sistema de RTOS, é o Schedular, vamos entender qual o seu papel dentro de um sistema operacional, e porque, compreende-lo é tão essencial.
Nesta aula apresento alguns usos e aplicações do FreeRTOS.
Resumo do módulo de Documentação do FreeRTOS.
Entender a documentação e uma obrigação de todo Engenheiro e Desenvolvedor de Sistemas Embarcados, entenda mais.
O FreeRTOS define algumas convenções e padronizações para facilitar a vida de todos os Desenvolvedores, entende-las é primordial!
Antes de aplicarmos o FreeRTOS em nossos projeto, é importante que você meu caro desenvolvedor, conheça os arquivos e pastas que compõe este sistema, para entender os recursos que temos disponíveis, e para incluí-lo em nosso projeto.
Resumo do Módulo de Configuração do Sistema.
Um recado importante sobre esta seção que foi regravada, buscando apresentar mais detalhes sobre como instalar o FreerRTOS.
Vamos aprender como adicionar o FreeRTOS de forma mais fácil, através do CMSIS-RTOS, dentro do próprio plugin do CubeMX na STM32CubeIDE.
Podemos adicionar o FreeRTOS de forma manual, baixando a biblioteca direto do Github, ou do próprio site oficial, e instalar de forma manual, configurando o microcontrolador e fazendo os links necessários.
Nesta aula bônus iremos aprender como configurar o configCHECK_HANDLER_INSTALLATION para 1 e configurar, de forma adequada, as funções de chamada do SysTick, SVC e PendSV.
Resumo do Módulo de Tasks/Tarefas.
Nesta primeira aula sobre Tarefas, vamos entender como elas funcionam e seus estados, e qual sua função dentro do FreeRTOS.
Vamos entender como incluir as Tarefas dentro de nossos projetos e as principais funções que iremos utilizar no dia a dia.
Vamos dar uma analisada na documentação oficial do FreeRTOS relacionado as Tarefas, como encontrar as informações e interpretá-las.
Através de exemplos práticos, vamos aprender a criar Tarefas em nossos projetos.
Vamos entender o que são as prioridades das tarefas, e a sua importância, além dos cuidados que devemos empregar durante seu uso.
Vamos criar tarefas com prioridades diferentes e compreender o impacto delas no sistema de RTOS.
Os delays são recursos muito úteis que permitem gerar os primeiros tipos de sincronismos entre rotinas e tarefas dentro de nossos projetos.
Um uso adequado desta ferramenta é essencial para criar projetos eficientes.
Vamos implementar Delays e observar seu funcionamento observando a alteração de estados em LEDs.
Analisaremos também o TaskDelayUntil, muito útil para gerar sincronismos precisos.
A Idle Task é a tarefa de menor prioridade do sistema de RTOS, mas, apesar disto, tem uma enorme importância dentro de nossos projetos.
Dando sequência, e na mesma aula, vamos analisar os Hooks do FreeRTOS, recursos muito úteis durante nosso trabalho de desenvolvimento.
Vamos criar projetos com o Hooks e observar seu funcionamento, afim de enxergar as possíveis aplicações.
O Stack Size é o terror dos desenvolvedores que trabalham com FreeRTOS, é muito comum gerarmos estouros de pilha, que trazem danos severos no funcionamento do programa. Mas, existe uma manteira de calcularmos este Stack Size e evitar esta dor de cabeça.
Podemos, de forma contínua, detectar o quanto temos de espaço livre em nossa Tarefa. Além do mais, dentro da STM32CubeIDE temos uma ferramenta que permite realizar o debugging de diversos parâmetros do FreeRTOS.
Resumo do Módulo de Queues/Filas e Sincronização.
Nesta aula, introduzimos o conceito de Filas e como elas funcionam dentro do FreeRTOS.
Vamos analisar as funções que o FreeRTOS fornece para nós desenvolvedores utilizar no dia-a-dia.
Neste exemplo, vamos entender como implementar uma simples Queue.
A sincronização de tarefas se torna mandatória quando tarefas distintas querem acessar um mesmo recurso, que é limitado, simultaneamente. Analisamos isto tomando uma porta SERIAL/UART como cobaia.
Vamos utilizar uma Queue para controlar elementos de hardware, e, aproveitando esta oportunidade, vamos transferir uma estrutura por ponteiro, permitindo apresentar o poder das filas no FeeRTOS.
O recurso de QueueSets são bastante úteis no dia-a-dia, e vamos entender o por que neste vídeo.
Após entendermos como funcionam os Conjuntos de Filas, vamos analisar a sua documentação e as funções utilizadas para manipulá-las.
Vamos entender como utilizar uma QueueSet na prática.
Quando temos uma interrupção e é necessário utilizar uma chamada do FreeRTOS, temos que realizar um tratamento especial dentro das ISRs.
Resumo do Módulo de Semaphores e Mutexes.
Nesta aula vamos entender o que são os semáforos, como eles funcionam, e qual a sua utilidade no desenvolvimento de projetos multi-thread.
Vamos analisar os três tipos de semáforos implementados pelo FreeRTOS, suas diferenças e quando estes devem ser aplicados, a depender da situação.
Vamos conhecer as principais funções implementadas pelo FreeRTOS para gerenciamento dos semáforos binários, e onde encontrar as informações na documentação oficial.
As interrupções e o DMA são recursos poderosos dentro de nossos microcontroladores, e em um ambiente de RTOS, os semáforos são elementos que permitem extrair o máximo de eficiência deste recurso, possibilitando que outras tarefas usem da CPU enquanto o periférico estiver trabalhando.
Vamos conhecer as funções disponibilizadas pelo FreeRTOs para gerenciar o uso de Semáforos Contadores.
Os semáforos permitem também que realizemos o sincronismo entre tarefas, e neste exemplo, veremos como podemos implementar esta sincronização entre diferentes contextos.
Neste último elemento dos semáforos, iremos analisar as funções disponíveis para gerenciar os Mutexes do FreeRTOS.
Um dos principais usos do Mutex é proteger um recurso que só pode ser acessado por uma única na tarefa, dentro do período em que a funcionalidade é requerida.
Por isto, o mutex precisa ser liberado somente pela tarefa que bloqueou,
Aprendemos que os Semáforos são um recurso poderoso dentro de um ambiente de RTOS, no entanto, é necessário ter alguns cuidados na hora de utilizar este recurso.
Resumo do módulo sobre os Gatekeepers.
Os Gatekeepers são uma forma de implementar os recursos presentes em um RTOS de forma eficaz e funcional, permitindo que um recurso que precisa ser protegido seja acessado sempre, de forma exclusiva por uma única tarefa.
Entenda o Gatekeeper nesta incrível aula!
Vamos elaborar um exemplo, utilizando uma memória EEPROM como recurso a ser protegido, utilizando uma Task Gatekeeper para realizar o acesso direto ao periférico. As demais tarefas irão acessá-la de forma indireta, utilizando Filas neste exemplo.
Observação: O exemplo realmente é longo, mas eu quero dar uma atenção especial com você neste exemplo, para que você entenda, exatamente, tudo o que está sendo feito.
Resumo do módulo sobre as Task Notifies.
Possuem um uso semelhante aos dos Semáforos, no entanto, apresentam algumas diferenças, vantagens e desvantagens, vamos entende tudo nesta aula.
Vamos conhecer quais são as funções e chamadas que o FreeRTOS nos fornecem para manipular o recurso de Task Notify.
Um exemplo de aplicação de Task Notify, para você usar no seu dia-a-dia como desenvolvedor.
Resumo do módulo sobre as Eventos Groups/Flags.
Vamos entender como funciona os Eventos/Event Groups, ou ainda Flags, suas configurações principais dentro do FreeRTOS e qual sua importância no dia-a-dia do desenvolvedor, e em quais situações este se torna a melhor opção a ser empregada.
Vamos analisar quais rotinas o FreeRTOS expõe, através de sua API, para que nós desenvolvedores possamos manipular os Eventos dentro de nossa aplicação.
Neste exemplo, vamos utilizar os eventos para distinguir qual botão foi pressionado, gerando uma operação distinta estre si, aqui, sendo indicado pelo Toggle de um LED associado a cada botão.
Analisamos também a diferença entre aguardar por todos, ou por qualquer bit de evento.
Um tipo especial de função do Evento, o xEventGroupSync, vamos entender como este funciona, e como implementar em nossos softwares embarcados.
Crie Firmwares utilizando o FreeRTOS para gerenciar os recursos da CPU do seu microcontrolador!
Neste curso você aprenderá sobre:
Configurar o FreeRTOS para o STM32G431KB, e qualquer outro microcontrolador.
Configurar o FreeRTOS utilizando a STM32CubeIDE.
Configurar o FreeRTOSConfig.h, compreendendo quais os impactos na aplicação.
Depuração do FreeRTOS, e corrigir problemas comuns que podem ocorrer durante o desenvolvimento.
Uso adequado de Semáforos, Filas e Eventos, e também da alocação dinâmica do RTOS.
Entender as diferenças dos esquemas de Alocação Dinâmica de Memória do FreeRTOS.
Desenvolvimento de um Projeto Final utilizando o FreeRTOS como ferramenta de gerenciamento dos recursos.
Neste curso, iremos utilizando a NUCLEO-G431KB para compreendermos como o FreeRTOS é adicionado, configurado e utilizado em sua aplicação. Evidentemente que, caso você possua um outro kit, como outra Nucleo ou Bluepill, não há qualquer impedimento para que você, meu caro desenvolvedor acompanhe as aulas, o que você tiver em mãos, é mais que suficiente para você compreender este incrível RTOS.
É essencial que você, Desenvolvedor de Sistemas Embarcados, não so saiba o que é um RTOS, mas tenha domínio da ferramenta e compreenda como utilizá-la de forma adequada e eficiente, por esta razão, trago este curso para você, te ensinar e fornecer o caminho para o domínio da ferramenta.
É esperado que, ao final do curso, você tenha pleno conhecimento do FreeRTOS, conheça suas APIs, saiba como utilizar suas ferramentas, identificando os cenários nos quais cada ferramenta melhor se encaixa, com performance e eficiência.
Espero ver você no curso, e qualquer dúvida, estou à disposição.