Transición a un RTOS: la experiencia en el RP2040
Martijn Braam
- Artículo de Martijn Braam, quien trabaja en temas relacionados con computación
- Está llevando adelante varios proyectos con microcontroladores
- Usa principalmente la placa Raspberry Pi Pico y ha tenido una buena experiencia de desarrollo
Resumen del proyecto
- Creación de un controlador de hardware para manejar equipos de video
- Control de cámaras PTZ y equipos de conmutación de video
- Como el rendimiento del controlador existente no era bueno, fue necesario crear un panel nuevo
Diseño de hardware
- Incluye 9 botones RGB, un joystick analógico y una pantalla
- Usa módulos de comunicación RS-485 y Ethernet
- Después de varias revisiones de hardware, se completó la implementación de las funciones
Software inicial
- Comenzó como un proyecto cmake usando pico-sdk
- El segundo núcleo se asignó al módulo Wiznet y el primero se encargó del I/O de la interfaz de usuario
- Aumentó la complejidad por tener que procesar varias tareas al mismo tiempo
FreeRTOS
- Uso de FreeRTOS para procesar varias tareas en paralelo
- Creación de múltiples tareas (Task): botones, LED, red, DHCP, mDNS, ATEM, VISCA
- Problemas de FreeRTOS: el sistema se congela al usar
printf y falta de abstracción de hardware
Apache NuttX
- Ofrece un entorno similar a un sistema Unix
- Después de la configuración inicial, se puede usar un shell real
- Permite configurar el hardware mediante el sistema menuconfig/Kconfig
- Las funciones básicas no operaban por un problema de configuración del bus i2c
- No se necesitan las rutas del sistema de archivos ni el shell
Zephyr
- Proporciona una utilidad en Python para la configuración del proyecto
- Requiere descargar un repositorio git de 5 GB
- Exige instalar el Zephyr SDK, aunque también se puede usar una toolchain ARM existente
- El soporte para Raspberry Pi Pico es insuficiente, por lo que se intentó usar otra placa
- Incluso después de resolver errores y advertencias de compilación, no funcionó
Conclusión
- Se logró compilar con éxito algunas aplicaciones usando FreeRTOS
- Hace falta implementar un reemplazo para
printf
- Se intentará seguir usando FreeRTOS para lograr la funcionalidad deseada
Resumen de GN⁺
- Este artículo trata sobre el proceso de migrar a un RTOS en un proyecto con microcontroladores
- Compara ventajas y desventajas de FreeRTOS, Apache NuttX y Zephyr
- Concluye que FreeRTOS es la opción más adecuada
- Ayuda a entender los distintos factores que conviene considerar al elegir un RTOS
- Entre proyectos con funciones similares se encuentran FreeRTOS y Zephyr
1 comentarios
Opiniones de Hacker News
Parece que este autor espera que un RTOS sea igual al entorno de Arduino
Resumen rápido de RTOS:
Instalar un toolchain para todo el sistema al estilo tradicional de UNIX es un dolor
PlatformIO va en la dirección correcta
Estoy migrando un proyecto de RP2040 a Rust y Embassy
Zephyr soporta Pi Pico al 100%
ThreadX es de código abierto
Me gustaría probar Hubris en un proyecto real
Creo que microPython es el camino más fácil
Implementé un temporizador simple de green threads
FreeRTOS es básicamente el estándar de la industria
Rust RTIC soporta rp2040 y es muy ligero