Já faz algum tempo que minha carreira em sistemas embarcados se distanciou do modelo clássico, no qual o firmware era composto por algumas tarefas com responsabilidades bem definidas, coordenadas por um mecanismo de concorrência, normalmente um RTOS.
Com o acesso a processadores, como MPUs e MCUs, cada vez mais complexos e oferecidos a preços competitivos, as stacks de software embarcadas nesses dispositivos também se tornaram significativamente mais sofisticadas. Como consequência, surgiram novos desafios relacionados ao gerenciamento de memória, níveis de privilégio, coerência de cache, entre outros.
Já sabemos que sistemas operacionais como o Linux tratam desses aspectos em plataformas baseadas em MPUs. No universo dos microcontroladores, RTOSs como o Zephyr e até mesmo o NuttX também oferecem recursos para gerenciamento de memória, isolamento entre aplicações e mecanismos para transição entre diferentes níveis de privilégio.
Depois de lidar com todas essas entranhas, fiquei me perguntando: qual seria a melhor forma de transmitir esse conhecimento e, principalmente, a mensagem de que isolamento de memória e controle de privilégios, mesmo em softwares tradicionalmente considerados simples, deixaram de ser opcionais?
A solução que encontrei foi refatorar o sistema operacional de tempo real que havia desenvolvido para fins de aprendizado, transformando-o em um microkernel mais completo. O objetivo era explorar, na prática, como os kernels, sejam eles monolíticos ou baseados em microkernel, tratam questões como gerenciamento de memória e níveis de privilégio, além de mostrar por que um software seguro e previsível deve adotar políticas de isolamento de memória e controle de privilégios em seus diferentes níveis de firmware.
O que você vai aprender neste webinar
- Por que você deveria utilizar a MPU e o sistema de privilégios oferecidos pelo seu chip, independentemente da complexidade do software.
- Como sistemas operacionais modernos, sejam eles de propósito geral (OS) ou de tempo real (RTOS), isolam privilégios e o acesso à memória de forma transparente para a aplicação.
- A estrutura de um microkernel, suas vantagens e desvantagens em comparação com kernels monolíticos.
Apresentação
Felipe Neves – Engenheiro de Sistemas Embarcados
Minibio: Felipe Neves é engenheiro de sistemas embarcados, com experiência significativa no desenvolvimento de software com restrições de tempo real e latência de processamento tendo em seu portfólio a participação no desenvolvimento de dispositivos em tecnologias como Robótica, Automação, e mais recentemente semicondutores e processamento heterogêneo. Possui interesse em áreas específicas como controle motor, controle digital, processamento de sinais e arquitetura de computadores para processamento heterogêneo.









