FreeRTOS

Acerca del Curso

Este curso está diseñado para introducirte de forma práctica al desarrollo con FreeRTOS, el sistema operativo en tiempo real más utilizado en sistemas embebidos. Aprenderás a crear aplicaciones robustas, eficientes y escalables, dominando conceptos clave como tareas, temporizadores, colas, interrupciones y más.

  • Modalidad: 100% en línea, con sesiones en vivo junto al instructor.
  • Interacción: Posibilidad de hacer preguntas y resolver dudas en tiempo real.
  • Frecuencia: 2 sesiones por semana.
  • Duración de cada sesión: 2 horas.
  • Duración total del curso: 6 semanas.
  • Acceso a plataforma: Con ejemplos y prácticas del curso disponibles durante todo el programa.
  • Fecha de inicio: TBD

Está dirigido a estudiantes, ingenieros o cualquier persona interesada en llevar su programación embebida al siguiente nivel.


Objetivos del Curso

Comprender cómo funciona un sistema operativo en tiempo real.

Diseñar y estructurar aplicaciones embebidas usando FreeRTOS.

Crear y manejar múltiples tareas concurrentes.

Sincronizar eventos entre tareas y manejar recursos compartidos.

Medir y optimizar el rendimiento del firmware utilizando herramientas como SystemView.


¿Qué es FreeRTOS?

FreeRTOS es un sistema operativo en tiempo real ligero y de código abierto que se ejecuta en microcontroladores. Proporciona mecanismos esenciales para manejar multitarea, sincronización, comunicación entre procesos y control de tiempo.
Es utilizado ampliamente en la industria debido a su:

  • Bajo consumo de recursos
  • Portabilidad
  • Amplio soporte de microcontroladores
  • Licencia permisiva (MIT)

Requisitos

El curso incluye un kit de desarrollo completo, el cual recibirás al inscribirte. Este kit contiene todo lo necesario para realizar las prácticas: una tarjeta Nucleo F411RE con carcasa protectora, un shield con componentes como EEPROM, botones, LEDs, potenciómetros y un slot para acelerómetro MPU6050, además de una caja organizadora con compartimentos para cables y accesorios. Puedes ver más detalles y fotografías del kit en la sección de cursos.

Aparte del kit necesitarás

  • Computadora con Windows.
  • Internet
  • Conocimientos básicos de microcontroladores.
  • USB-TTL.

Configuración de Herramientas

No te preocupes si nunca has trabajado con FreeRTOS o herramientas de desarrollo embebido. El instructor te guiará paso a paso en la configuración de todo lo necesario para comenzar a programar.

  • Instalación del entorno de desarrollo (STM32CubeIDE).
  • Configuración del proyecto.
  • Instalación y puesta en marcha de SystemView para visualizar el comportamiento de tus tareas.
  • Acompañamiento personalizado para resolver problemas técnicos durante la instalación.

TASKS

El concepto fundamental en FreeRTOS son las tareas. Cada tarea representa una unidad de ejecución independiente y permite estructurar el programa en múltiples funcionalidades que se ejecutan concurrentemente. Aprender a crearlas y gestionarlas es el primer paso para dominar este sistema operativo en tiempo real.

Aprenderás a :

  • Crear tareas y asignar prioridades
  • Planificación cooperativa y basada en prioridades
  • Suspensión, retardo y eliminación de tareas

Queues

Las queues (colas) son uno de los mecanismos más importantes de comunicación entre tareas en FreeRTOS. Permiten enviar y recibir datos de forma segura entre tareas que se ejecutan en paralelo, evitando condiciones de carrera y sincronizando la ejecución. Gracias a las colas, se pueden diseñar sistemas más estructurados, donde cada tarea tiene un rol claro y comunica sus resultados a otras.

Aprenderás :

  • Comunicación entre tareas usandocolas
  • Envío y recepción con diferentes funciones
  • Diseño de patrones como productor/consumidor

Software Timers

Los Software Timers permiten ejecutar funciones automáticamente después de un intervalo de tiempo, sin necesidad de que una tarea esté esperando activamente. Son ideales para programar eventos diferidos o periódicos, como timeouts, refrescos de sensores o activación de tareas. Gracias a su integración con el planificador, los temporizadores en FreeRTOS permiten una mayor eficiencia y mejor organización del código.

Aprenderás :

  • Creación y gestión de temporizadores
  • Temporizadores periódicos vs. de una sola vez
  • Casos de uso: timeouts, eventos periódicos

Interrupts

Las interrupciones (ISRs) son esenciales en sistemas embebidos para responder rápidamente a eventos externos, como señales de sensores, botones o periféricos. En FreeRTOS, es posible integrar las ISRs con las tareas mediante mecanismos seguros y eficientes. Aprender a enviar notificaciones o eventos desde una interrupción hacia una tarea permite diseñar sistemas reactivos, bien estructurados y con mínimo consumo de CPU.

Aprenderás :

  • Integración de ISR con FreeRTOS
  • Envío de eventos desde ISR a tareas
  • Buenas prácticas y consideraciones de tiempo real

Semaphores

Los semáforos son mecanismos de sincronización fundamentales en FreeRTOS. Permiten coordinar el acceso a recursos compartidos entre tareas o entre una tarea y una interrupción, evitando condiciones de carrera. Existen semáforos binarios, útiles para notificar eventos, y semáforos de conteo, que permiten gestionar múltiples accesos. Aprender a usarlos correctamente te ayudará a construir sistemas robustos y seguros.

Aprenderás :

  • Sincronización entre tareas e ISR
  • Control de acceso a recursos compartidos
  • Semáforos binarios y de conteo

Mutexes

Los mutexes (mutual exclusions) son herramientas clave para proteger secciones críticas en sistemas multitarea. En FreeRTOS, permiten garantizar que solo una tarea acceda a un recurso compartido a la vez, evitando condiciones de carrera y errores de concurrencia. Además, los mutexes implementan herencia de prioridad para prevenir problemas como la inversión de prioridades en sistemas con tareas de diferentes niveles.

Aprenderás :

  • Protección de secciones críticas
  • Evitar condiciones de carrera
  • Herencia de prioridad

Task Notifications

Las Task Notifications son un mecanismo eficiente y liviano que permite la comunicación directa entre tareas en FreeRTOS. Están integradas en el propio control de tareas, lo que las hace más rápidas y con menor sobrecarga que otros mecanismos como colas o semáforos. Se pueden usar tanto para enviar señales simples como para implementar contadores, y son especialmente útiles en aplicaciones donde el rendimiento es crítico.

Aprenderás :

  • Mecanismo ligero de comunicación entre tareas
  • Notificaciones simples y con contadores
  • Comparación con colas, semáforos y event groups

Stream and Message Buffers

Los Stream Buffers y Message Buffers son mecanismos avanzados en FreeRTOS para la comunicación entre tareas basada en flujos de datos. A diferencia de las colas, estos buffers permiten enviar bloques de datos más grandes o flujos continuos sin necesidad de estructuras rígidas.

Los Stream Buffers están orientados al envío secuencial de bytes (tipo flujo), mientras que los Message Buffers permiten separar los datos en mensajes bien definidos. Elegir entre uno u otro depende del tipo de aplicación y la estructura del contenido transmitido.

Aprenderás :

  • Comunicación tipo flujo entre tareas
  • Envío de mensajes grandes o por fragmentos
  • Diferencias y cuándo usar cada uno

Proyecto Final

Al finalizar el curso, aplicarás todos los conceptos aprendidos en un proyecto final práctico, ideal para reforzar tu comprensión y consolidar habilidades de programación en tiempo real.

¿Qué harás en el proyecto final?

  • Diseñarás una aplicación embebida completa usando FreeRTOS.
  • Crearás múltiples tareas que se comunican entre sí
  • Usarás temporizadores, colas, semáforos y notificaciones.
  • Simularás eventos del mundo real (sensores, botones, actuadores).
  • Analizarás el comportamiento de tu sistema en SystemView.