Breve introducción
¿Qué es un RTOS?
Es un SO de tiempo real, en el cual hay un gran control en el tiempo de ejecución de c/tarea que se está realizando.
La mayoría de los SO operativos permiten ejecutar tareas al mismo tiempo, esto se llama multi-tasking (multi-tarea). En realidad lo que sucede es que cada core del procesador puede ejecutar una tarea a la vez, sin embargo hay una parte del SO llamada Scheduler (organizador) que se encarga de decidir que tarea se ejecuta, cuanto tiempo dicha tarea permanece en estado de ejecución y cuando se pasa a ejecutar otra tarea, esto permite la ilusión de estar ejecutar varias tareas al mismo tiempo.
En un RTOS, el scheduler está diseñado de tal forma que permita ejecutar tareas en tiempos predecibles (normalmente descrito como determinístico). Esto resulta de gran utilidad en sistemas embebidos donde se busca que el sistema responda en un tiempo estricto.
Para conseguir ese control, el usuario evaluará y definirá que prioridades tendrán c/tarea a ejecutar, para luego ser ejecutadas por el scheduler.
¿Qué es FreeRTOS?
Un SO de tiempo real de código abierto, lo suficientemente chico como para funcionar en un microcontrolador (uC a partir de ahora). Esto significa que lo podemos usar en nuestros proyectos comerciales, simplemente cumpliendo con las exigencias que índica su licencia.
¿Qué ventajas tiene usar un RTOS?
Ejemplo muy completo que compara las distintas soluciones para una cierta aplicación:
http://www.freertos.org/tutorial/
Resumiendo, en una aplicación de este tipo:
Si empleamos una solución convencional (típico loop principal), nuestras ventajas/desventajas serán:

En cambio si empleamos un RTOS, nuestras ventajas/desventajas serán:

¿Cuándo usar un RTOS?
Está pregunta está directamente relacionada con el tipo de aplicación que necesitamos realizar y la capacidad que tendrá nuestros uC.
- El tipo de aplicación ya se vió en el ejemplo anterior, distintos periféricos que trabajan a velocidades muy distintas, implican un mayor control en los tiempos de ejecución de c/periférico, haciendo complicado el código y el mantenimiento de soluciones del tipo LOOP.
- Por el lado de la capacidad de nuestros uC, a medida que crezca el poder de procesamiento y los recursos que este posea, se llega un punto en el que conviene pasarse a una solución del tipo RTOS, tal como se vé en este gráfico:

Video muy completo que explica cuando nos conviene usar un RTOS y como funciona el FreeRtos:
En el próximo mensaje empezaré con código aplicado en arquitectura de PC (para que les resulte sencillo traducirlo a sus propias arquitecturas de uC) y en ARM-Cortex M3 (familia LPC176x).
Yo conseguí el libro con un excelente tutorial del propio creador del FreeRTOS (Richard Barry) aplicado en arquitectura de PC, lo cual no me resultó para nada difícil llevarlo a ARM. El libro se llama "Using the FreeRTOS Real Time Kernel - A Practical Guide" y lo pueden conseguir en su tienda electrónica favorita (
), sé que también es conseguible el tutorial para PIC de 32 bits.
¿Qué es un RTOS?
Es un SO de tiempo real, en el cual hay un gran control en el tiempo de ejecución de c/tarea que se está realizando.
La mayoría de los SO operativos permiten ejecutar tareas al mismo tiempo, esto se llama multi-tasking (multi-tarea). En realidad lo que sucede es que cada core del procesador puede ejecutar una tarea a la vez, sin embargo hay una parte del SO llamada Scheduler (organizador) que se encarga de decidir que tarea se ejecuta, cuanto tiempo dicha tarea permanece en estado de ejecución y cuando se pasa a ejecutar otra tarea, esto permite la ilusión de estar ejecutar varias tareas al mismo tiempo.
En un RTOS, el scheduler está diseñado de tal forma que permita ejecutar tareas en tiempos predecibles (normalmente descrito como determinístico). Esto resulta de gran utilidad en sistemas embebidos donde se busca que el sistema responda en un tiempo estricto.
Para conseguir ese control, el usuario evaluará y definirá que prioridades tendrán c/tarea a ejecutar, para luego ser ejecutadas por el scheduler.
¿Qué es FreeRTOS?
Un SO de tiempo real de código abierto, lo suficientemente chico como para funcionar en un microcontrolador (uC a partir de ahora). Esto significa que lo podemos usar en nuestros proyectos comerciales, simplemente cumpliendo con las exigencias que índica su licencia.
¿Qué ventajas tiene usar un RTOS?
Ejemplo muy completo que compara las distintas soluciones para una cierta aplicación:
http://www.freertos.org/tutorial/
Resumiendo, en una aplicación de este tipo:

Si empleamos una solución convencional (típico loop principal), nuestras ventajas/desventajas serán:

En cambio si empleamos un RTOS, nuestras ventajas/desventajas serán:

¿Cuándo usar un RTOS?
Está pregunta está directamente relacionada con el tipo de aplicación que necesitamos realizar y la capacidad que tendrá nuestros uC.
- El tipo de aplicación ya se vió en el ejemplo anterior, distintos periféricos que trabajan a velocidades muy distintas, implican un mayor control en los tiempos de ejecución de c/periférico, haciendo complicado el código y el mantenimiento de soluciones del tipo LOOP.
- Por el lado de la capacidad de nuestros uC, a medida que crezca el poder de procesamiento y los recursos que este posea, se llega un punto en el que conviene pasarse a una solución del tipo RTOS, tal como se vé en este gráfico:

Video muy completo que explica cuando nos conviene usar un RTOS y como funciona el FreeRtos:
En el próximo mensaje empezaré con código aplicado en arquitectura de PC (para que les resulte sencillo traducirlo a sus propias arquitecturas de uC) y en ARM-Cortex M3 (familia LPC176x).
Yo conseguí el libro con un excelente tutorial del propio creador del FreeRTOS (Richard Barry) aplicado en arquitectura de PC, lo cual no me resultó para nada difícil llevarlo a ARM. El libro se llama "Using the FreeRTOS Real Time Kernel - A Practical Guide" y lo pueden conseguir en su tienda electrónica favorita (