ac6-training, un département d'Ac6 SAS
Site displayed in English (GB)
Site affiché en English (GB)View the site in FrenchVoir le site en English (USA)

ac6 >> ac6-training >> Operating Systems >> RTOS >> FreeRTOS Programming Inquire Download as PDF Write us

OS3 FreeRTOS Programming

Programming applications using the FreeRTOS operating system

  • Understanding the FreeRTOS architecture.
  • Discovering the various FreeRTOS services and APIs.
  • Learning how to develop FreeRTOS applications.
  • Learning how to debug FreeRTOS applications.
  • Becoming familiar with FreeRTOS APIs.
  • Managing the Task priorities and clarifying the scheduling algorithm.
  • Explaining the inter-task communication.
  • Developping interrupt service routines.

Practical labs are conducted on STM32 boards under System Workbench for STM32.
(Keil or IAR can also be used for on site courses).
ACSYS is able to adapt the course to the Cortex-M based microcontroller chosen by the customer.
See our website for the various families we are covering: ST STM32, NXP LPC and Kinetis, TI Stellaris.
  • Theoretical course
    • PDF course material (in English) supplemented by a printed version for face-to-face courses.
    • Online courses are dispensed using the Teams video-conferencing system.
    • The trainer answers trainees' questions during the training and provide technical and pedagogical assistance.
  • At the start of each session the trainer will interact with the trainees to ensure the course fits their expectations and correct if needed
  • Familiarity with embedded C concepts and programming
  • Basic knowledge of embedded processors
  • Any embedded systems engineer or technician with the above prerequisites.
  • The prerequisites indicated above are assessed before the training by the technical supervision of the traineein his company, or by the trainee himself in the exceptional case of an individual trainee.
  • Trainee progress is assessed by quizzes offered at the end of various sections to verify that the trainees have assimilated the points presented
  • At the end of the training, each trainee receives a certificate attesting that they have successfully completed the course.
    • In the event of a problem, discovered during the course, due to a lack of prerequisites by the trainee a different or additional training is offered to them, generally to reinforce their prerequisites,in agreement with their company manager if applicable.

Course Outline

  • Introduction to FreeRTOS
    • The FreeRTOS architecture and features
    • The FreeRTOS license
  • Getting FreeRTOS source code
    • Files and directories structure
    • The demo applications
  • Data types and coding style
    • Naming conventions
  • FreeRTOS on the Cortex/M processors
  • The Task life-cycle
    • Creating tasks
    • Deleting tasks
    • The Endless-loop pattern
  • Task Priorities
    • Assigning task priorities
    • Changing task priorities
  • The idle task
    • Idle task hooks
  • Deterministic preemptive scheduling
    • Scheduling strategies
    • Cyclic scheduling (RMA)
    • Deadline scheduling
  • Cooperative scheduling
    • Hybrid scheduling
  • Purpose of queue management
  • Basic use
    • Creation
    • Sending on a queue
    • Receiving from a queue
  • Data management
    • Sending compound types
    • Transfering large data
  • Mutual exclusion
    • Mutexes and binary semaphores
    • Deadlocks
    • Priority inversion
    • Priority inheritance
  • Critical sections
    • Critical sections
    • Suspending (locking) the scheduler
    • Gatekeeper tasks
  • FreeRTOS-provided memory allocation schemes
    • Allocate-only scheme
    • Best-fit without coalescing
    • Thread-safe default malloc
  • Checking remaining free memory
  • Adding an application-specific memory allocator
  • FreeRTOS interrupt processing
    • Writing ISRs in C
    • Interrupt safe functions
    • Interrupt nesting
  • Deferred interrupt processing
    • Using semaphores within an ISR
    • Counting semaphores
    • Using queues within an ISR
    • Tasks with interrupt synchronization
  • The timer daemon task
  • Timer configuration
  • One-Shot and Auto-reload timers
  • The Software Timer API
  • Checking for stack problems
  • Common pitfalls
  • The Cortex/M MPU
    • User and privileged modes
    • Access permissions
  • Defining MPU regions
    • Overlapping regions
    • Predefined regions
    • Programmer-defined regions
  • Needed linker configuration
  • Practical usage tips