Please contact us

DURATION 4 Days

Course Overview

This course serves as a detailed introduction to FreeRTOS operating system including hands-on lab exercises

Who should attend?

Embedded/real-time systems software developers.

Prerequisite:

  • Experience with developing embedded/real-time software
  • Working knowledge of C programming language

Course Outline:

  1. RTOS Introduction and Concepts
  • Real-time operating systems core principles
  • Deterministic and predictability
  • Priority-based scheduling, preemption
  1. Bare-metal vs. RTOS implementations
  • Pros and cons of each approach
  • When to choose RTOS over bare-metal implementation
  1. RTOS main building blocks
  • Task management and scheduling
  • Inter-task communication and synchronization mechanisms
  • Time management and timer services
  • Memory management in RTOS
  1. The Development Environment
  • Toolchain & IDE, common output formats
  • Flash organization, linker scripts
  • Flash & RAM consumption, map file
  1. FreeRTOS Introduction
  • Overview of FreeRTOS API organization
  • Understanding naming conventions and function categories
  • Documentation and resources available
  1. How FreeRTOS works
  • FreeRTOS architecture and core components
  • Kernel internals and scheduling algorithm
  • Configuration options and customization possibilities

 

 

  1. Heap memory management
  • FreeRTOS memory management schemes
  • Comparing different heap implementations
  • Best practices for dynamic memory allocation in real-time systems
  1. Timer tick
  • System ticks in FreeRTOS
  • Configuring tick rate and its impact on system performance
  1. What’s in a Task?
  • Task structure and attributes in FreeRTOS
  • Stack allocation and management for tasks
  • Task control block (TCB) and its role in task management
  • System tasks
  1. Task creation
  • API functions for creating tasks in FreeRTOS
  • Parameters involved in task creation
  • Static and dynamic creation
  1. Task priority
  • Understanding priority levels in FreeRTOS
  • Implementing priority-based scheduling
  • Avoiding priority inversion and using priority inheritance
  1. Task Life Cycle
  • Understanding the different states a task can be in
  • Transitions between task states and their triggers
  • API functions for manipulating task states
  1. Round-Robin & Time-Slicing
  • FreeRTOS scheduling policies
  • Implementing round-robin scheduling for tasks of equal priority
  • Time-slicing and its effects
  1. Tasks control API
  • FreeRTOS task management functions
  • Suspending, resuming, and deleting tasks
  • Changing task priorities dynamically
  1. Delay functions
  • Using vTaskDelay() and vTaskDelayUntil() for task timing
  • Relative and absolute delays
  • Periodic tasks
  1. Application Timers
  • FreeRTOS software timers
  • One-shot and periodic timers
  • Timer callback functions and their execution context

 

  1. Interrupt handling with Tasks
  • Integrating ISRs with FreeRTOS tasks
  • Deferred interrupt processing
  • API functions safe for use in interrupt context
  1. Message Queues
  • FreeRTOS queue data structure
  • Using queues for inter-task communication
  • Blocking and non-blocking queue operations
  1. Counting vs. Binary Semaphores
  • Differentiating between counting and binary semaphores
  • Implementing synchronization and signaling using semaphores
  1. Mutex synchronization objects
  • FreeRTOS mutual exclusion (mutex)
  • Creating and using mutexes to protect shared resources
  • Avoiding deadlocks and priority inversion
  1. Direct task communication
  • FreeRTOS direct-to-task notifications
  • Comparing task notifications with other communication methods
  1. Event Flag Groups
  • FreeRTOS event groups
  • Creating and manipulating event flags
  • Synchronizing tasks using event groups
  1. Memory Buffers
  • Stream buffers
  • Message buffers
  1. Debugging Mechanisms
  • Assertions
  • Using the debugger
  • Debugging considerations
  • FreeRTOS Run-time statistics
  • FreeRTOS Stack overflow detection
  • FreeRTOS Tracing
  1. FreeRTOS & Low power
  • Tickless idle mode
  • Wakeup sources
  1. Best Practices & Considerations
  • Tasks allocation
  • SysTick optimization
  • Critical sections
  • Memory allocations
  • ISR efficiency
  • Waiting efficiency

Interested to hear more details, talk to me

Accessibility Toolbar