Sistemas Operativos en Tiempo Real (RTOS) para Microcontroladores: Lo Básico que Debe Conocer

Cuando se trata de sistemas embebidos, existe un componente central de hardware que debemos seleccionar según las necesidades del proyecto.

Este componente es el procesador, y podemos elegir entre un microcontrolador o un microprocesador. En nuestro artículo “Microcontrolador Vs Microprocesador ¿Cuál escoger?”, mencionamos las características, ventajas y principales usos de estos dos.

El procesador de un sistema embebido se encarga de ejecutar las instrucciones programadas para que el producto electrónico cumpla con su función. Dicho programa también se conoce como firmware o software embebido.

En caso de haber muchas funcionalidades que atender y restricciones de tiempos de ejecución estrictas, se hace necesario incorporar un sistema operativo embebido. Para el caso de los microcontroladores, suele ser un Sistema Operativo en Tiempo Real o RTOS.

En esta entrega hablaremos sobre algunos de los RTOS más populares para microcontroladores. Veremos las generalidades y ventajas de este tipo de sistemas, y en próximas entregas ahondaremos sobre metodologías de diseño y buenas prácticas de programación con RTOS.

Aplicaciones de los Microcontroladores

Pese a que los microcontroladores suelen tener menores capacidades de cómputo que los microprocesadores, son dispositivos muy versátiles y ampliamente utilizados en todas las áreas de la industria para realizar tareas específicas. 

Como afirma la Universidad La Salle de México, algunas de las principales aplicaciones de los microcontroladores son:

  • Robótica móvil
  • Cerraduras electrónicas
  • Domótica y casas inteligentes
  • Vehículos autónomos

Entre muchas otras aplicaciones presentes en tecnologías de la industria 4.0 como el Internet de las cosas y el Edge computing.

En años recientes, los microcontroladores de 32 bits han ganado gran popularidad, dado que pueden procesar a gran velocidad datos de hasta 32 bits de ancho. Esto es cuatro veces más que sus hermanos menores de 8 bits. En una próxima entrega exploraremos el asunto de los bits en detalle.

Los sistemas operativos en tiempo real se orientan generalmente hacia los microcontroladores de 32 bits, ya que estos manejan altas velocidades, mayor memoria y capacidades de cómputo que se adaptan adecuadamente a los requisitos de un sistema operativo.

De acuerdo con Grand View Research, el mercado global de los microcontroladores de 32 bits superó los USD 32.000 millones en 2023, y se espera que crezca a un ritmo superior al 11% anual, impulsado por las aplicaciones de medida inteligente en redes de energía eléctrica, y el crecimiento de la demanda de estos dispositivos en los sectores médico y automotriz. 

Sistemas Operativos en Tiempo Real - RTOS

Intel define un sistema de tiempo real, como aquel que puede responder a eventos con limitaciones de tiempo predecibles y específicas, es decir, se caracteriza por la capacidad de producir un resultado esperado en un plazo establecido.

DigiKey define específicamente un RTOS, como un sistema ligero que facilita la multitarea en diseños con recursos y tiempo limitados. Donde el término «tiempo real» indica determinismo en el tiempo de ejecución más que velocidad bruta.

Los principales componentes de un RTOS son:

  • Tareas: también conocidas como procesos o hilos, son funciones independientes que se ejecutan en bucles infinitos.
  • Planificador: controla qué tarea debe ejecutarse en la CPU y durante cuánto tiempo.
  • Comunicación entre tareas: son los mecanismos para pasar datos y eventos entre las distintas tareas que están en ejecución.
  • Tic del sistema: es el temporizador principal o base de tiempo que controla de forma precisa los tiempos de ejecución de las tareas.

A continuación, presentamos algunos de los sistemas operativos para microcontroladores más utilizados en la industria, sus características y ventajas.

FreeRTOS

De acuerdo con AWS, FreeRTOS es un sistema operativo en tiempo real (RTOS) diseñado específicamente para sistemas con recursos limitados, como los microcontroladores. Fue desarrollado en 2003 y evolucionó hasta ser adquirido por Amazon Web Services en 2017.

Distribuido bajo la licencia de código abierto del MIT, FreeRTOS ofrece un kernel robusto acompañado de bibliotecas que incluyen conectividad, seguridad y actualizaciones over-the-air (OTA). Estas características hacen de FreeRTOS una herramienta versátil para desarrollar soluciones de IoT.

Según sus creadores, FreeRTOS fue desarrollado en colaboración con las principales compañías de semiconductores durante más de 15 años, soporta más de 40 arquitecturas de procesadores y se ha convertido en un estándar de la industria, con miles de descargas al día.

Es conocido por su fiabilidad, facilidad de uso y su amplia adopción. Su documentación es colaborativa, con guías detalladas sobre su uso y portabilidad, disponibles bajo la licencia Creative Commons.

Una característica clave de FreeRTOS es su soporte a largo plazo (LTS), que garantiza actualizaciones de seguridad y correcciones de errores críticos durante al menos dos años después del lanzamiento de una versión. 

FreeRTOS puede ser integrado en proyectos que van desde simples dispositivos hasta complejas soluciones de IoT conectadas. Sus características principales son:

  • Planificador tipo “Preemptive”: permite definir prioridades para administrar la ejecución de tareas según su nivel de prioridad.
  • Mecanismos de comunicación entre tareas: incluye colas, mutex, semáforos, notificaciones a tareas, buffer de mensajes y grupos de eventos. Todos estos pueden usarse para comunicar tareas con tareas, o tareas con rutinas de interrupción.
  • Temporizadores: FreeRTOS incluye temporizadores en software ligados al Tic del sistema, que permiten gestionar tiempos de espera y acciones repetitivas (como la lectura periódica de un sensor), soportadas sobre los recursos del sistema operativo para garantizar precisión y repetibilidad en los tiempos de ejecución.
  • Gestión de memoria: FreeRTOS permite seleccionar entre distintos modos de gestión de memoria para reservar recursos de forma estática y dinámica.
  • Modo de bajo consumo: FreeRTOS cuenta con una tarea especial conocida como “Idle Task”, que en conjunto con la desactivación temporal del Tic del sistema, brindan la opción de poner el microcontrolador en modo de bajo consumo de energía. Esto es ideal para soluciones IoT alimentadas por batería.

FreeRTOS tiene grandes ventajas, entre las cuales se destacan:

  • No se requiere de licencias para utilizarlo y puede portarse a más de 40 arquitecturas distintas de microcontroladores y microprocesadores.
  • Al ser propiedad de AWS, hoy en día cuenta con diversas librerías de libre uso que permiten realizar conexiones con aplicaciones y servicios en la nube de AWS, de forma fácil y segura.
  • Se mantiene en constante actualización. Para la fecha de lanzamiento de este artículo, apenas habían pasado un par de meses desde que salió su última versión.
  • Amplia documentación y comunidad. Al ser uno de los líderes del mercado, existen muchos recursos educativos disponibles en Internet. Además, hay librerías para su implementación en Arduino y en microcontroladores como el ESP-32 gracias al paquete ESP-IDF FreeRTOS.

Su principal desventaja es que, en caso de requerir funcionalidades avanzadas de seguridad, garantía, soporte extendido, entre otras, se debe incurrir en costos adicionales por licenciamiento de los sistemas OPENRTOS y SAFERTOS, que son las versiones comerciales de FreeRTOS que AWS distribuye.

µC/OS

µC/OS es un kernel en tiempo real con multitarea y capacidad de manejo de interrupciones, desarrollado originalmente por la empresa Micriµm, y custodiado actualmente por Weston Embedded Solutions

Fue diseñado para sistemas embebidos y es reconocido por su portabilidad y versatilidad. Está escrito principalmente en ANSI C con algunas porciones en Assembler, y se ha adaptado a más de 40 arquitecturas de procesadores, desde 8 hasta 64 bits.

µC/OS fue lanzado en 1992, luego fue reemplazado por µC/OS-II en 1998 y en 2009 salió al mercado µC/OS III. Se ha implementado en una amplia gama de aplicaciones comerciales, incluyendo dispositivos médicos, robots industriales, controladores de motores y más.

La empresa Weston Embedded Solutions brinda soporte para el sistema operativo µC/OS, el cual hoy en día es open source, pero ha desarrollado una versión licenciada a la cual denomina Cesiµm RTOS. Este ofrece características especiales orientadas a agilizar el ciclo de desarrollo y brindar mayor confiabilidad.

No obstante, no hay que subestimar la versión abierta de µC/OS. La misma Weston Embedded Solutions afirma que, en el año 2000, µC/OS-II fue certificado por la Administración Federal de Aviación (FAA) para su uso en aeronaves comerciales, cumpliendo con el estándar RTCA DO-178B. Esto garantiza su robustez y seguridad en todo tipo de aplicaciones embebidas.

Incluso Arduino cuenta con una librería para el uso de µC/OS-II sobre sistemas basados en microcontroladores ARM Cortex-M3, como la tarjeta Arduino Due.

La estructura de μC/OS incorpora componentes como:

  • Gestión de tareas (crear, borrar, suspender, etc.)
  • Temporizadores
  • Bloques de control de eventos
  • Semáforos y Mutex
  • Banderas de eventos
  • Buzones de mensajes y colas de mensajes
  • Gestión de memoria dinámica
  • Atención de interrupciones, y comunicación entre interrupciones y tareas

Su principal ventaja es que se trata de un RTOS de código abierto, con más de 30 años de evolución, lo que brinda una alta confiabilidad para su implementación.

Por otra parte, la principal desventaja que destacamos es que la empresa se encuentra enfocada fuertemente en la versión comercial del sistema operativo (Cesiµm RTOS), lo cual puede acelerar la obsolescencia de µC/OS en la medida en que se quede por fuera de nuevas funcionalidades y actualizaciones.

Keil RTX5

Keil RTX5 es un RTOS diseñado específicamente para microcontroladores basados en la arquitectura ARM Cortex-M.

Es parte del ecosistema Keil MDK (Microcontroller Development Kit) de ARM y se basa en la especificación CMSIS-RTOS2. El entorno Keil ofrece una solución completa que incluye compiladores, depuradores, y simuladores avanzados, todo optimizado para maximizar el rendimiento de los microcontroladores ARM.

En nuestro informe “Explorando 5 entornos de Desarrollo para Software Embebido”, presentamos en detalle algunos de los IDE más utilizados para la programación de sistemas embebidos, entre ellos Keil-MDK. 

Keil RTX5 se destaca por una serie de características que lo hacen bastante útil en el desarrollo de aplicaciones embebidas basadas en ARM Cortex-M:

  • Compatibilidad con CMSIS-RTOS2: Permite el uso de una API estándar para sistemas operativos en tiempo real, lo que facilita la portabilidad entre plataformas ARM.
  • Multitarea: Soporte para la ejecución de múltiples tareas concurrentes con la capacidad de asignar prioridades a cada tarea, lo que garantiza que las más críticas se ejecuten primero.
  • Bajo consumo de recursos: Optimizado para microcontroladores con limitaciones de memoria y procesamiento, lo que lo hace ideal para dispositivos embebidos.
  • Sincronización avanzada: Soporte para semáforos, colas de mensajes, temporizadores y banderas de eventos, orientados a facilitar la comunicación y coordinación entre tareas.
  • Depuración en tiempo real: Integración con el entorno de desarrollo Keil MDK, con herramientas avanzadas para monitoreo y depuración de aplicaciones mientras se ejecutan.
  • Configurabilidad: Los desarrolladores pueden ajustar el kernel del sistema operativo, personalizando el uso de recursos para satisfacer requisitos específicos de una aplicación.

Los principales servicios de RTX5 son:

  • Planificador configurable: Preemptive, Round robin o Cooperativo
  • Temporizador
  • Gestión de tareas
  • Gestión de eventos
  • Mutex y semáforos
  • Gestión de memoria

Podemos ver en este punto (y en el resto del artículo), que los RTOS disponibles en el mercado suelen compartir casi los mismos tipos de servicios y módulos.

Keil RTX5 ofrece múltiples beneficios que lo posicionan como una herramienta ideal para desarrolladores que trabajan con microcontroladores ARM:

  • Al estar optimizado para utilizar pocos recursos, Keil RTX5 es ideal para sistemas embebidos donde la memoria y el procesamiento son limitados.
  • Permite gestionar tareas en tiempo real, garantizando que las tareas críticas se ejecuten en los momentos precisos.
  • La compatibilidad con CMSIS-RTOS2 y el entorno Keil MDK facilitan un desarrollo ágil y seguro, ayudando a identificar y corregir errores en el rendimiento de las aplicaciones.

Pero no todo son ventajas, Keil RTX5 presenta algunas limitaciones que podrían influir en la decisión de usarlo o no:

  • Para quienes no están familiarizados con la arquitectura ARM o con el uso de sistemas operativos en tiempo real, la implementación de RTX5 puede requerir tiempo y esfuerzo. (Aunque esto último aplica igual para todos los RTOS)
  • RTX5 está optimizado para microcontroladores ARM Cortex-M, por lo que no es una opción adecuada para otras arquitecturas.
  • Aunque la versión básica es gratuita para dispositivos ARM, algunas características más avanzadas pueden requerir licencias comerciales de pago.
  • En proyectos muy sencillos o de baja complejidad, el uso de un RTOS como Keil RTX5 puede añadir un nivel de complejidad innecesario al código. (Aunque de nuevo, esto aplica igual para todos los RTOS).

Zephyr RTOS

Zephyr es un RTOS de código abierto, diseñado para satisfacer necesidades de dispositivos de Internet de las cosas (IoT) y sistemas embebidos en general, con soporte para más de 600 tarjetas de desarrollo.

Respaldado por la Linux Foundation, Zephyr destaca por su modularidad, seguridad y amplio soporte para múltiples arquitecturas de microcontroladores, lo que lo convierte en una opción ideal para proyectos de diversa complejidad.

Es conocido por su flexibilidad y capacidad de adaptación a diferentes entornos, con una serie de características que lo destacan en el desarrollo sobre sistemas embebidos:

  • Arquitectura modular: permite a los desarrolladores incluir solamente los componentes necesarios para su aplicación. Esto optimiza el uso de recursos y rendimiento, adaptando cada componente, desde la gestión de memoria hasta la pila de red, según los requisitos específicos.
  • Soporte multiplataforma: es compatible con diversas arquitecturas de hardware, como ARM, RISC-V, x86, y ARC, lo que lo hace extremadamente versátil y permite a los desarrolladores trabajar con diferentes microcontroladores sin cambiar de sistema operativo.
  • Gestión avanzada de energía: está optimizado para dispositivos IoT alimentados por baterías. Esto mediante la gestión dinámica de energía y modos de suspensión profunda.
  • Soporte de redes y protocolos de comunicación: incorpora una pila de red IP nativa, compatible con IPv4, IPv6, y protocolos de red personalizados. Además, es compatible con protocolos de comunicación estándar como Bluetooth, Zigbee, y LoRa, lo que facilita su integración en aplicaciones IoT.
  • Seguridad: ofrece características de seguridad robustas, incluyendo soporte para criptografía, aislamiento de procesos, y políticas de seguridad definidas para proteger los datos y las comunicaciones en dispositivos conectados.
  • Comunidad activa y ecosistema: como proyecto de código abierto respaldado por la Linux Foundation, tiene una comunidad activa que contribuye con mejoras y soporte continuo. Así se mantiene en constante evolución para satisfacer las necesidades del mercado.

Sus componentes son similares a los demás RTOS que hemos presentado, aunque destacan algunas funcionalidades como:

  • Soporte de criptografía para aplicaciones que requieran altos niveles de seguridad
  • Librerías para procesamiento digital de señales (DSP)
  • Soporte de protocolo Modbus para aplicaciones de control industrial

De acuerdo con lo anterior, podemos resaltar las siguientes ventajas de Zephyr para el desarrollo de sistemas embebidos:

  • Flexibilidad modular: Permite personalizar el sistema operativo según las necesidades específicas del proyecto.
  • Soporte multiplataforma: Compatible con una amplia gama de arquitecturas y hardware.
  • Código abierto: Libre de costos de licencia, permitiendo modificaciones y adaptaciones según los requerimientos del proyecto.
  • Comunidad activa: Actualizaciones constantes y mejoras continúas impulsadas por una comunidad global.

Ahora, aunque Zephyr es una solución poderosa, también presenta algunos desafíos que deben considerarse:

  • Curva de aprendizaje pronunciada: Su flexibilidad y modularidad pueden requerir un mayor esfuerzo inicial en configuración y adopción, especialmente para equipos sin experiencia previa en RTOS.
  • Complejidad en la integración: La falta de un entorno de desarrollo tan sofisticado como Keil (si comparamos a Zephyr contra RTX5), puede requerir herramientas adicionales y aumentar la complejidad en las primeras etapas del proyecto.

Conclusión

Cuando se trata de sistemas embebidos, existen ciertos niveles de complejidad en los cuales el desarrollo clásico de software embebido basado en funciones simples o en máquinas de estados se queda corto.

El paradigma de programación en estos casos debe cambiar, y para ello los RTOS brindan herramientas de gestión de tiempos de ejecución, control de tareas, gestión de memoria y demás componentes que contribuyen al desarrollo de un sistema embebido robusto y confiable.

En esta entrega aprendimos que, así como existen sistemas operativos para computadores de propósito general como el que ustedes están usando para leer este texto, también existen sistemas operativos llamados RTOS, que pueden ser montados en dispositivos con recursos limitados como los microcontroladores.

Presentamos algunos de los RTOS más conocidos, e introdujimos algunos conceptos sobre sus características y componentes. En próximas entregas analizaremos más a fondo ejemplos y casos de uso de este tipo de sistemas operativos.

Si quiere conocer más acerca de las tendencias en tecnologías y aplicaciones de la electrónica y la Industria 4.0, suscríbase a nuestro blog. Si desea estudiar a fondo alguna tecnología en particular, consulte por nuestros servicios de Vigilancia e Inteligencia Competitiva, o si está listo para apropiar tecnologías emergentes y agregar valor a sus productos y servicios, agende una cita de Diseño y Prototipado de Producto Electrónico, Analítica de Datos o Estructuración de Proyectos de I+D+i.