First Technology Transfer

Standard and Advanced Technical Training, Consultancy and Mentoring

Implementing Multi-Tasking Real Time Applications on ARM Cortex M3 and ARM Cortex M4 in C Using FreeRTOS

Duration: 5 Days

Intended Audience

This course is for engineers who have a good knowledge of C programming but little experience of programming using real time operating systems application programming interfaces (APIs).The course is also useful for engineers who need to gain a rapid understanding of the FreeRTOS API and an ability to configure FreeRTOS for various ARM Cortex M4 and ARM Cortex M3 target board configurations.


'C' programming of embedded systems using a real time operating system requires a deep understanding of the mechanisms,both general and OS specific, used to control and synchronise tasks and to exchange information between tasks. It also requires an awareness of strategies for setting task priorities appropriately and avoiding unpleasant situations such as deadlock and starvation. For tiny real time executives it is also important to be able to implement device drivers for the various specialised devices that will form part of the application.

Course Outline

  • Overview of real-time and embedded systems concepts
  • Overview of Linkers and Linking
  • Embedded system initialisation
  • Characteristics of a Real Time Operating system
    • Scheduler
    • Objects
    • Services
  • Features of FreeRTOS
    • Task and Scheduler API - task management and scheduling
    • Queue API - Queues and queue management
    • Semaphore API - Semaphores and semaphore management
    • Memory management
    • Interrupts and interrupt handling
    • Integrating USB and Ethernet Protocol stacks into FreeRTOS
  • Understanding tasks
    • creation, scheduling, operations
    • synchronization, communication and concurrency
  • Semaphores
    • Creation, operations, usage
    • Producer-consumer scenario - implementation using circular buffers and semaphores
  • Queues
    • Concepts
    • States
    • Storage
    • Queue operations
    • Queue use
  • Timers and timer management
  • Memory management
  • Implementing device drivers