El Ecosistema Arduino, desarrollado por la compañía italiana Arduino, está compuesto de software y hardware open-source. La plataforma incluye un ambiente de desarrollo integrado (IDE) llamado el Arduino IDE, donde los usuarios pueden escribir, compilar y subir sus códigos a un tablero de desarrollo, equipado usualmente con un microcontrolador Atmel AVR.

El sistema operativo Arduino ha sido desarrollado con un sistema de tiempo real RTOS. Esto implica garantías de tiempo, las cuales han sido cubiertas por la compañía usando 2 tipos de programación para alternar entre tareas: cooperativa y preventiva. La cooperativa requiere llamados a funciones especiales que permiten alternar tareas de acuerdo al contexto. La programación preventiva tiene interrupciones basadas en timers que pueden alternar tareas de acuerdo al contexto en cualquier momento.

Arduino UNO Rev3

 

Pros y Contras

Los sistemas operativos preventivos son estupendos ya que siempre tendrán en cuenta los tiempos programados. Por ejemplo, si desea repetir un proceso cada 10ms, el sistema operativo se encargará de garantizar eso. El lado negativo es que implica mayor complejidad en el código.

Los sistemas cooperativos son mucho más simples ya que solo alternan al ser activados por ciertos llamados, como demoras o métodos de suspensión. Sin embargo, esto hace que no sean buenos priorizando tareas.

En este artículo le mostraremos 5 sistemas operativos para Arduinos, incluyendo sus tipos de programación, que tan bien documentados están y que tablero de Arduino soportan.

 

FreeRTOS

FreeRTOS es un sistema operativo de tiempo real open-source que soporta programaciones tanto cooperativas como preventivas, dependiendo de su configuración. Entre los microcontroladores Arduino compatibles encontramos ATmega328, ATmega32u4, ATmega1284p, and ATmega2560.

FreeRTOS es popular, por ende, obtener soporte y encontrar ejemplos será muy sencillo. Además, el nivel de documentación disponible es muy bueno. También cuenta con cualidades adicionales como manejo de memoria dinámica, comunicación entre tareas y otros primitivos útiles.

Tipo de multitasking: Preventivo o cooperativo
Nivel de documentación: Excelente
Plataformas compatibles: Más de 40 arquitecturas incluyendo AVR (Arduino, Nano, Uno, Leonardo y Mega)
Popularidad: Alta
Dónde encontrarlo: GitHub, Página oficial

FreeRTOS

 

CoopThreads

CoopThreads es un planificador cooperativo diseñado para ser ligero y correr en microcontroladores de 8-bits (a diferencia de un sistema operativo de tiempo real completo). Tiene soporte para varios Arduinos, incluyendo microcontroladores AVR, ESP32- y ESP8266.

Su librería no tiene tanta documentación a comparación de otros sistemas operativos, pero si tiene suficientes ejemplos para familiarizar a nuevos usuarios.

Tipo de multitasking: Cooperativo
Nivel de documentación: Limitado con buenos ejemplos
Plataformas compatibles: Microcontroladores AVR, ESP32- y ESP8266.
Popularidad: Baja
Dónde encontrarlo: GitHub

 

TaskManagerIO

TaskManagerIO es un planificador cooperativo con soporte para una gran grama de tableros de desarrollo, incluyendo Arduinos. No es un sistema operativo de tiempo real completo, sino más bien un planificador que puede correr en paralelo a otros sistemas en esta lista para definir tareas múltiples. Para aquellos que necesiten un planificador cooperativo, esta es una excelente opción.

La documentación es fácil de entender, y la naturaleza de su sistema operativo garantiza un código amigable para principiantes sin tener que hacer uso de locks. La librería es popular en GitHub, con una comunidad muy activa.

Tipo de multitasking: Cooperativo
Nivel de documentación: Excelente
Plataformas compatibles: Compatible con una gran gama de tableros de desarrollo.
Popularidad: Alta
Dónde encontrarlo: GitHub

 

HeliOS

HeliOS es un planificador cooperativo diseñado para brindar facilidad en su uso. Al optar por un sistema operativo cooperativo, escribir código es más seguro que nunca.

HeliOS tiene soporte para microcontroladores AVR-, ARM- y SAMD. Sigue en desarrollo activo, pero tiene una cantidad sorprendente de características extra, como manejo de memoria, queues y temporizadores.

Tipo de multitasking: Cooperativo
Nivel de documentación: Bueno
Plataformas compatibles: Compatible con una gran gama microcontroladores
Popularidad: Media
Dónde encontrarlo: GitHub

 

Simba

Simba se diferencia de todas las opciones en esta lista al poder hacer más que administrar tareas. Además, su nivel de documentación es muy bueno y soporta un buen número de plataformas.

Simba también es compatible con drivers de periféricos comunes como SPI e I2C. Su compatibilidad también se extiende a archivos del sistema, networking y registros. También tiene soporte tanto preventivo como cooperativo, dependiendo de su configuración. Su popularidad es alta entre usuarios, lo que garantiza un fácil acceso a soportes.

Tipo de multitasking: Preventivo o Cooperativo
Nivel de documentación: Excelente
Plataformas compatibles: Compatible con una gran gama microcontroladores Arduinos.
Popularidad: Alta
Dónde encontrarlo: GitHub, Simba

Simba

Share This
TRESDE DENTAL