Mudando para um RTOS: experiência no RP2040
Martijn Braam
- Artigo de Martijn Braam, que trabalha com computação
- Está conduzindo vários projetos com microcontroladores
- Usa principalmente a placa Raspberry Pi Pico, com uma boa experiência de desenvolvimento
Visão geral do projeto
- Criação de um controlador de hardware para controlar equipamentos de vídeo
- Controle de câmeras PTZ e equipamentos de comutação de vídeo
- Como o controlador existente não tinha bom desempenho, foi necessário criar um novo painel
Design de hardware
- Inclui 9 botões RGB, joystick analógico e display
- Uso de módulos de comunicação RS-485 e Ethernet
- Após várias revisões de hardware, a implementação das funcionalidades foi concluída
Software inicial
- Começou como um projeto cmake usando o pico-sdk
- O segundo núcleo foi atribuído ao módulo Wiznet, enquanto o primeiro núcleo cuida do I/O da interface do usuário
- A complexidade aumentou por ser necessário processar várias tarefas ao mesmo tempo
FreeRTOS
- Uso do FreeRTOS para processar várias tarefas em paralelo
- Criação de várias tarefas (Task): botões, LED, rede, DHCP, mDNS, ATEM, VISCA
- Problemas do FreeRTOS: o sistema travava ao usar
printf, além da falta de abstração de hardware
Apache NuttX
- Fornece um ambiente semelhante a um sistema Unix
- Após a configuração inicial, é possível usar um shell real
- Permite configurar o hardware pelo sistema menuconfig/Kconfig
- As funções básicas não funcionavam por causa de problemas na configuração do barramento i2c
- Não havia necessidade de caminhos de sistema de arquivos nem de shell
Zephyr
- Fornece utilitários em Python para configuração do projeto
- Exige o download de um repositório git de 5 GB
- Requer a instalação do Zephyr SDK, embora seja possível usar o toolchain ARM existente
- Suporte insuficiente ao Raspberry Pi Pico, com tentativa de uso de outra placa
- Mesmo após resolver erros e avisos de build, não funcionou
Conclusão
- Conseguiu compilar com sucesso algumas aplicações usando FreeRTOS
- Foi necessário implementar uma alternativa ao
printf
- Pretende continuar usando FreeRTOS para tentar alcançar as funcionalidades desejadas
Resumo do GN⁺
- Este texto aborda o processo de migração para um RTOS em um projeto com microcontrolador
- Compara as vantagens e desvantagens de FreeRTOS, Apache NuttX e Zephyr
- Conclui que o FreeRTOS foi a escolha mais adequada
- Ajuda a entender os diversos fatores a considerar ao escolher um RTOS
- Projetos com funcionalidades semelhantes incluem FreeRTOS e Zephyr
1 comentários
Comentários do Hacker News
Parece que este autor espera que um RTOS seja igual ao ambiente do Arduino
mbedoufreertosResumo rápido dos RTOS:
Instalar uma toolchain para o sistema inteiro do jeito tradicional do UNIX é doloroso
O PlatformIO está indo na direção certa
Estou migrando projetos com RP2040 para Rust e Embassy
O Zephyr dá suporte 100% ao Pi Pico
O ThreadX é open source
Quero experimentar o Hubris em um projeto real
Acho que microPython é o caminho mais fácil
async/awaitfunciona bemImplementei um temporizador simples de green threads
FreeRTOS é basicamente o padrão da indústria
Rust RTIC oferece suporte ao rp2040 e é bem leve