¿Por qué necesitamos un RTOS?
Comenzar arrow_downwardCuando programas sin sistema operativo, todo es secuencial. Una tarea bloquea a todas las demás.
Todo el código en un único bucle while(1). Las tareas se ejecutan una tras otra, siempre en el mismo orden.
Si una tarea tarda mucho (leer sensor, esperar comunicación), todas las demás quedan bloqueadas.
No puedes dar más importancia a tareas críticas. Un LED parpadeando tiene la misma prioridad que una alarma.
El tiempo de respuesta depende de que estén haciendo las otras tareas. Imposible garantizar latencias.
Tarea 1 no puede ejecutarse de nuevo hasta t=515ms. Si era crítica (alarma, comunicación), el sistema falla.
Este patrón es común en sistemas embedded simples, pero escala muy mal.
Necesitamos un mecanismo que permita ejecutar múltiples tareas de forma "simultánea", dando prioridad a las más importantes y sin que unas bloqueen a otras.
Un Sistema Operativo en Tiempo Real (RTOS) permite ejecutar múltiples tareas de forma concurrente.
Cada tarea es un "hilo" separado con su propio contexto y pila. Se ejecutan de forma independiente.
Las tareas críticas tienen mayor prioridad y pueden interrumpir a las menos importantes.
El kernel decide qué tarea ejecutar en cada momento, optimizando el uso de la CPU.
El scheduler reparte el tiempo de CPU entre los threads según sus prioridades
El scheduler interrumpe al thread actual si aparece uno de mayor prioridad. El thread no decide cuándo ceder la CPU.
El thread cede voluntariamente la CPU (con k_yield() o k_sleep()). Nadie lo puede interrumpir.
Ejecución secuencial: cada tarea bloquea a las demás.
Ejecución concurrente: todas las tareas avanzan en paralelo.
Ventaja: BLE se ejecuta en segundo plano mientras sensores y display responden cada 100ms. El usuario percibe el sistema fluido.
Zephyr es un RTOS moderno, open source, soportado por la Linux Foundation y usado por Nordic Semiconductor.
Licencia Apache 2.0
Codigo completamente abierto. Puedes estudiarlo, modificarlo y usarlo en productos comerciales sin restricciones.
Proyecto de nivel platinum
Respaldado por Intel, Nordic, NXP, Texas Instruments y otras grandes empresas. Desarrollo activo y soporte a largo plazo.
nRF Connect SDK
Nordic usa Zephyr como base de su SDK. Todos los ejemplos y librerias están diseñados para funcionar con el.
Real-Time Operating System
Aunque añadir un RTOS aumenta la complejidad inicial, las ventajas superan los inconvenientes.
Zephyr proporciona APIs unificadas para GPIO, I2C, SPI, UART, etc. Escribes código una vez y funciona en diferentes microcontroladores.
Tu aplicación puede migrar entre Nordic, STM32, ESP32 u otros con cambios mínimos. No estás atado a un fabricante.
Sistema de build CMake, DeviceTree para configuración, Kconfig para opciones. Herramientas de debug y profiling incluidas.
Miles de desarrolladores contribuyendo. Documentación extensa, foros activos, ejemplos para casi cualquier caso de uso.
Soporte para TrustZone, secure boot, criptografía por hardware. Certificaciones de seguridad industriales.
Desde microcontroladores de 8KB hasta sistemas complejos con WiFi, BLE y más. Añadir funcionalidad no rompe lo existente.
Bare-metal ejecuta tareas secuencialmente. Una tarea lenta bloquea a todas las demás.
Un RTOS permite ejecutar múltiples threads con prioridades. El scheduler reparte el tiempo de CPU.
Zephyr es un RTOS moderno, open source, soportado por Nordic y la Linux Foundation.
"Un RTOS no hace tu código más rápido, pero sí más predecible"
La multitarea y las prioridades garantizan que las tareas críticas siempre respondan a tiempo.
Ahora que entiendes por qué necesitamos un RTOS, vamos a ver cómo se organizan las capas de abstracción en firmware moderno: desde el hardware hasta tu aplicación.
Continuar al Módulo 0.4 arrow_forward