Real-time deals with guarantees, not with raw speed. (Soft realtime and Hard Realtime)
In Real-Time Computing timeliness is more important than performance.
Time Deterministic – Response time to events is always almost constant.
To deal with Priority Inversion problem, either it reschedules the tasks or change the LP Task to HP. Priority inversion avoidance
Priority based preemptive scheduling mechanism
No or very short Critical sections which disables the preemption
1. Introduce
FreeRTOS is a real-time operating system kernel for embedded devices that has been ported to 35 MCU platforms
It is designed to be small and simple. To make the code readable, easy to port, and maintainable, it is written mostly in C, but there are a few assembly functions included where needed (mostly in architecture-specific scheduler routines).
It provides methods for multiple threads. A tick-less mode is provided for low power applications.
FreeRTOS
├── Demo (Contains demo application for every official FreeRTOS port)
├── Test (contains the tests performed on common code and the portable layer code)
└── Source //------ (Core FreeRTOS kernel file) ------//
├── include (Consists of The core FreeRTOS kernel header files)
└── portable {==== (Consists of Processor specific code) ====}
├── Compiler (Contains all the ports created by compiler)
├── MemMang (Contains The sample heap implementations)
└── ...
Structure & Hierarchy:
FreeRTOS.h
├── FreeRTOSConfig.h (Application specific configuration options)
├── projdefs.h (Basic FreeRTOS definitions)
└── portable.h (Definitions specific to the port being used)
├── portmacro.h
└── mpu_wrappers.h
FreeRTOS.h
├── list.c
├── croutine.c
├── timers.c
├── heap_?.c
├── queue.c
└── tasks.c
3. Goal
Understanding various RTOS concepts with FreeRTOS Programming and Debugging
Using STM32 Standard Peripheral Driver APIs to configure peripherals
FreeRTOS Debugging using SEGGER SystemView Software
Using FreeRTOS API with code examples
Learn Complete Step by step method to run FreeRTOS on STM32 MCUs using OpenSTM32 System Workbench