Learn STM32 & FreeRTOS in a LIVE bootcamp with hands-on projects. From bare-metal to RTOS, build real embedded systems. Enroll now!
Course Timeline:
In this module, you will understand the fundamentals of Real-Time Operating Systems (RTOS) and how FreeRTOS works in embedded systems.
Basic LED Blink using FreeRTOS (first RTOS-based project bare-metal )
In this module, you will explore the core features of FreeRTOS and understand how it manages multiple tasks efficiently in an embedded system.
Demonstrate key FreeRTOS features such as task scheduling, non-blocking delays, and task states by running multiple tasks simultaneously.
Understand how multiple tasks run simultaneously in FreeRTOS and learn how the scheduler manages task execution efficiently.
Demonstrate multitasking in FreeRTOS by running two independent tasks simultaneously: LED blinking and UART message printing.
Learn how to create and manage multiple tasks in FreeRTOS. This module focuses on task creation, parameters, stack size, and priority.
Learn how to create multiple tasks dynamically in FreeRTOS and control different hardware outputs (LEDs) with independent timing.
Understand the concept of threads in FreeRTOS and how tasks behave like threads in embedded systems. Learn how to control task execution using external inputs.
Control the execution of a FreeRTOS task using a button input. The LED task will turn ON or OFF based on button press.
Understand how FreeRTOS uses task priorities to control execution and how higher priority tasks can preempt lower priority tasks.
Demonstrate how FreeRTOS uses task priority to control execution. Observe how a high priority task preempts a low priority task.
Understand how semaphores are used in FreeRTOS for task synchronization and communication between tasks and interrupts.
Learn how to use a binary semaphore for synchronization between an interrupt (button press) and a task (LED control).
Understand the concept of priority inversion in FreeRTOS, how it occurs, and why it can affect real-time system performance.
Demonstrate priority inversion by simulating three tasks (High, Medium, Low priority) and observing how a medium priority task blocks a high priority task.
Use a counting semaphore to count the number of characters received via UART and process them in a task.
Understand the concept of counting semaphores in FreeRTOS and how they are used to manage multiple events or resources.
Understand how to use queues in FreeRTOS for safe and efficient communication between tasks.
Demonstrate task-to-task communication using a FreeRTOS queue by simulating sensor data and printing it via UART.
Learn how to use structured data with FreeRTOS queues to transfer multiple related values between tasks efficiently.
Demonstrate how to send multiple related data (Temperature and Humidity) using a structured queue in FreeRTOS and display it via UART.
Understand how mutex is used in FreeRTOS to protect shared resources and avoid conflicts between multiple tasks.
Demonstrate how to protect a shared resource (UART) using a mutex when multiple tasks try to access it simultaneously.
Understand why semaphores cannot solve priority inversion and observe how the problem persists when using semaphores instead of mutex.
Demonstrate that using a semaphore for resource sharing does NOT resolve priority inversion and observe how the problem persists.
Understand how mutex solves priority inversion using priority inheritance in FreeRTOS.
Resolve priority inversion using a mutex and observe how priority inheritance allows the high priority task to execute without unnecessary delay.
Understand how software timers work in FreeRTOS and how to execute periodic or delayed tasks without blocking the CPU.
Use a FreeRTOS software timer to toggle an LED every 1 second without blocking any task.
Understand how to combine multiple FreeRTOS features such as tasks, queues, semaphores, and timers to build a complete embedded system.
Build a mini embedded system by combining multiple FreeRTOS features: tasks, queue, semaphore, and software timer.
Design and implement a complete embedded system using FreeRTOS by integrating all major concepts learned throughout the course.