Objetivo
Este treinamento visa capacitar o participante no desenvolvimento de software embarcado utilizando o FreeRTOS, um dos sistemas operacionais de tempo real (RTOS) de código aberto mais utilizados no mundo.
Conteúdo programático
- Introdução a sistemas de tempo real: tipos de sistemas de tempo real, sistemas foreground/background, deficiências do super-loop, o kernel de tempo real, sistemas multitarefa, trocas de contexto, escalonador de tarefas, políticas de escalonamento, vantagens do uso de um RTOS.
- Hardware e ambiente de desenvolvimento: placas Freedom, kit de desenvolvimento FRDM-KL46Z, ambiente de desenvolvimento, MCUXpresso IDE e SDK, documentação e referências.
- Introdução ao FreeRTOS: histórico, FreeRTOS e Amazon FreeRTOS, posição no mercado, características, código-fonte e padrão de codificação, convenções, licença, OpenRTOS e SafeRTOS, portando e integrando o FreeRTOS.
- Gerenciamento de tarefas: o que é uma tarefa, criando e excluindo tarefas, tarefas baseadas em eventos, estados de uma tarefa, prioridades, escalonador de tarefas, modos preemptivo e colaborativo, interrupção do tick, tick interrupt hook, rotinas de delay, tarefa idle, idle task hook, economia de energia e tickless idle mode, co-routines.
- Comunicação entre tarefas: queues, lendo e escrevendo em queues, stream buffers, message buffers, queue sets.
- Mecanismos de notificação: semáforos binários, semáforos contadores, gerenciando acesso a recursos com semáforos, task notifications, event groups.
- Gerenciamento de interrupção: eventos de hardware, introdução ao tratamento de interrupção no ARM Cortex-M, implementando uma rotina de tratamento de interrupção (ISR), top-half e bottom-half, delegando o tratamento de interrupções para tarefas, técnicas de transferência de dados, interrupções utilizadas pelo FreeRTOS e configuração de prioridade.
- Software timers: introdução a software timers, habilitando e configurando software timers, tipos de software timers, tratando interrupções em timers, daemon task startup hook.
- Gerenciamento de concorrência: recursos compartilhados e a necessidade de gerenciamento de concorrência, thread-safe e reentrância, seções críticas e exclusão mútua, mutex, mutex recursivo, desabilitando as interrupções, pausando o escalonador, inversão de prioridade, herança de prioridade, deadloks, tarefas gatekeeper.
- Gerenciamento de memória: vantagens e desvantagens de alocação estática e alocação dinâmica, funções de alocação estática de memória, algoritmos de alocação dinâmica de memória, fragmentação de memória, monitorando o heap, dimensionando e monitorando o uso da pilha, identificando estouro de pilha (stack overflow).
- Ferramentas de suporte: exibindo informações sobre as tarefas em execução, habilitando Run Time Statistics, tracing, trace hook macros, kernel aware debugging, simuladores e emuladores.
- Projetando com o FreeRTOS: dividindo o sistema em tarefas, definindo prioridades, técnica RMS (Rate Monotonic Scheduling), dimensionando o stack, alocação de memória, comunicação entre tarefas, tratamento de interrupção, escolhendo o escalonador.
- Considerações finais: links e recursos adicionais, recomendações de livros, dúvidas e comentários finais, encerramento.
Para mais detalhes sobre o conteúdo, você pode consultar a agenda e os slides do treinamento.
Informações adicionais
Estudantes, engenheiros, desenvolvedores e líderes de equipes de desenvolvimento de software para sistemas embarcados.
Conhecimentos básicos de sistemas embarcados, desenvolvimento de firmware bare-metal para microcontroladores, conhecimentos intermediários de linguagem C.
O material de estudo é composto pelos slides das apresentações, o livro de atividades e exercícios, os guias de referência e documentos de estudo adicionais. Todo o material será fornecido de forma eletrônica no início do treinamento.
Os exercícios do treinamento são realizados na plataforma Freedom da NXP (FRDM-KL46Z ), composta por um microcontrolador Kinetis KL46 (ARM Cortex-M0+) e diversas interfaces de comunicação e controle. Os kits de desenvolvimento são emprestados aos alunos durante o treinamento para a execução das atividades práticas. É utilizada por padrão Se necessário, e conforme a necessidade da empresa contratante, o treinamento pode ser realizado em uma outra plataforma de desenvolvimento.
O treinamento pode ser apresentado nos seguintes idiomas: Português brasileiro e Inglês.
Se você planeja capacitar a sua equipe, considere um treinamento na sua empresa. Nos treinamentos in-company, a empresa contratante é responsável por fornecer os recursos necessários para a realização do treinamento, incluindo sala, projetor e máquinas de desenvolvimento para os alunos. Esse modelo traz grande economia para a empresa, já que o custo do transporte e estadia de vários funcionários é reduzido apenas ao do instrutor. Caso a empresa contratante tenha alguma necessidade específica, podemos estudar a criação de um conteúdo programático especial, como preparar o treinamento para uma plataforma de hardware específica ou desenvolver algum conteúdo adicional. Não hesite em entrar em contato por e-mail ou pela página de contato .
Os treinamentos em turmas abertas são realizados em um ambiente agradável, com um laboratório devidamente equipado e acesso à Internet. As aulas são normalmente ministradas em período integral, com uma parada para o almoço e um coffee-break pela manhã. Caso tenha interesse em participar de um treinamento mas não exista uma turma disponível, envie uma mensagem pela página de contato que avisamos assim que uma nova turma for aberta.
Devido à necessidade do uso de um kit de desenvolvimento para a execução das atividades práticas, no momento este treinamento não pode ser realizado de forma online.
Galeria de fotos
Algumas fotos dos treinamentos já realizados: