Real Time Programming with FreeRTOS
Course Description
Objectives
Get an overview on Cortex-M4 architecture
Discover the concepts of real time multitasking
Understand Real Time constraints
Determinism
Preemption
Interrupts
Understand the FreeRTOS architecture
Discover the various FreeRTOS services and APIs
Learn how to develop FreeRTOS applications
Learn how to debug FreeRTOS applications
Requirements
Familiarity with embedded C concepts and programming
Basic knowledge of embedded processors
Course duration
Total: 20 hours
4 sessions, 5 hours each (excluding break time)
From 40% to 50% of training time is devoted to practical activities
Some Labs may be completed between sessions and are checked by the trainer on the next session
Target Audience
Any embedded systems engineer or technician with the above prerequisites.
Day 1
Cortex-M Overview
ARMv7-M Architecture
Cortex-M4 Architecture
Registers and Execution States
Privileges, Mode and Stacks
Reset Behavior
Exception and Interrupts
The System Timer
Memory Model
Power Management
STM32F407x Implementation Example
Exercise: | Create a new project |
Exercise: | Interrupt Management |
Real-Time Concepts
Embedded system architectures
Tasks and process
Real-Time
Exercise: | Context Switch |
Day 2
Introduction to FreeRTOS
The FreeRTOS Family
FreeRTOS+Ecosystem
Why use FreeRTOS
FreeRTOS Code Structure
Scheduling
Scheduler
Schedulability
Task Management
Creating Tasks
Task Priorities
Task States
The idle task
Delays
Changing Task Priority
Deleting Tasks
Suspending Tasks
Kernel Structures
Thread Local Storage
Kernel Interrupts on Cortex-M4
Scheduling Traces
Visual trace diagnostics using Tracealyzer
Exercise: | Task Management |
Exercise: | Periodic Tasks |
Exercise: | Task Statistics |
Day 3
Memory Management in FreeRTOS
FreeRTOS Memory Managers
Out of Memory management
Stack overflow detection
Exercise: | Context Switch Measurement |
Resource Management
Mutual Exclusion
Critical Sections
Mutexes
Gatekeeper Tasks
Lock-Free Data Structures
Exercise: | Resource Management |
Synchronization Primitives
Queues
Queues Sets
Synchronization
Events and Event Groups
The Readers/writer problem
Using Other Primitives within an ISR
Exercise: | Queue Management |
Exercise: | Readers Writer Problem |
Day 4
Interrupt Management
Tasks and Interrupts
FreeRTOS Binary and Counting Semaphores
Task Notifications
Stream Buffers
Message Buffers
Interrupt Nesting
Low Power Support
Exercise: | Interrupt Management |
Exercise: | Tickless Mode |
Software Timer
Software Timers
Deferred Interrupt Handling
Exercise: | Implement Soft Timers |
Exercise: | Software Timer Management |
FreeRTOS-MPU
The Cortex-M MPU
The FreeRTOS-MPU Port
Defining MPU Regions
Creating User and System Tasks
Practical Usage Tips
Appendix
Data Structures
FIFO
Linked list
Memory Management and Real-Time
Memory Management
Memory Errors
CMSIS – RTOS
Overview
Kernel Information and Control
Threads Management
Generic Wait Functions
Communication and Resource Sharing
Semaphores
Mutex
Message Queue
Signal Events
Event Flags
Memory Pool
Mail Queue
Timer Management
Interrupt Service Routines
Nohau Training Partner
This course is provided by a Nohau Training Partner, a trusted provider of hands-on training for professionals in embedded systems, software development, and engineering.





