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.
Através de uma abordagem prática, o treinamento visa introduzir o participante nos conceitos de um sistema operacional de tempo real, cobrindo toda a API do FreeRTOS, incluindo:
- 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.
Algumas fotos dos treinamentos já realizados podem ser visualizadas aqui.
Público-alvo
Estudantes, engenheiros, desenvolvedores e líderes de equipes de desenvolvimento de software para sistemas embarcados.
Pré-requisitos
Conhecimentos básicos de sistemas embarcados, desenvolvimento de firmware bare-metal para microcontroladores, conhecimentos intermediários de linguagem C.
Equipamentos
Todos os equipamentos necessários são fornecidos pela Embedded Labworks.
Material de estudo
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.
Kit de desenvolvimento
Neste treinamento será utilizada a plataforma Freedom da freescale (FRDM-KL46Z), composta por um microcontrolador Kinetis KL46 (ARM Cortex-M0+) e diversas interfaces de comunicação e controle. Para mais informações sobre esta plataforma, clique aqui.
Turmas abertas
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 esteja interessado em participar do treinamento e não exista uma turma aberta, faça a pré-inscrição clicando aqui. Entraremos em contato assim que uma nova turma for aberta.
Treinamentos in-company
Se você planeja capacitar a sua equipe, considere um treinamento na sua empresa.
Turmas fechadas para treinamento in-company possuem as mesmas características de uma turma aberta. Neste modelo, a empresa é responsável por fornecer os recursos necessários para a realização do treinamento, incluindo sala, datashow e as máquinas de desenvolvimento. Esse modelo também traz grande economia para a empresa, já que o custo do transporte e estadia de vários funcionários é reduzido apenas ao do instrutor.
Se sua empresa tem uma necessidade especial, podemos estudar um programa que atenda sua necessidade de forma direcionada, como preparar o treinamento para uma plataforma de hardware específica ou desenvolver um conteúdo adicional. Não hesite em entrar em contato por e-mail ou pela página de contato.
Treinamentos na sua cidade
Você pode levar os treinamentos para sua comunidade, em qualquer cidade do Brasil.
Você não tem condições de realizar o curso em São Paulo? Você tem um grupo de estudos e quer aprender mais sobre determinada tecnologia? Você coordena ou participa da coordenação de algum curso na sua universidade e gostaria de treinar seus alunos? Você tem um espaço, quer reunir os amigos e passar agradáveis horas aprendendo sobre sistemas embarcados?
Mande um e-mail ou uma mensagem para nós. Informe seu curso de interesse e também a sua cidade. Se conseguirmos formar uma turma, poderemos levar o treinamento para a sua cidade!
Clientes que já fizeram o treinamento
Ainda tem dúvidas?
Em caso de dúvidas, críticas ou sugestões, envie um e-mail ou deixe uma mensagem na página de contato.
Entre em contato