Download FreeRTOS

Quality RTOS & Embedded Software


Ac6 Training: Real Time Programming with FreeRTOS

Ac6 has been providing FreeRTOS training for years, helping thousands of engineers from all over the world master it. In this article, we'll take a closer look at Ac6's Real Time Programming with FreeRTOS course, which is designed to give you a comprehensive understanding of the FreeRTOS architecture, along with the practical skills to develop and debug FreeRTOS applications.

This course is designed for both experienced embedded systems programmers who want to expand their skillset and newcomers to multitasking programming. Throughout the course, you will learn about the fundamentals of real-time programming, such as task scheduling, multitasking, synchronization, communication and memory management, and how they apply to FreeRTOS. Additionally, you will develop a complete understanding of the FreeRTOS API and its various components, allowing you to develop efficient and reliable real-time applications.

Course Content

The Real Time Programming with FreeRTOS course covers a wide range of topics to ensure a comprehensive learning experience. In addition, the content can be tailored to the customer’s need. Some of the key areas covered include:

  • Fundamentals of real-time programming:

    Learn about task scheduling, multitasking, synchronization, communication, interrupt handling and memory management.

  • FreeRTOS architecture:

    Gain in-depth knowledge of the FreeRTOS kernel, its core components, and how they interact to provide real-time functionality.

  • FreeRTOS API:

    Explore the various services and APIs offered by FreeRTOS, allowing you to leverage its features effectively in your projects.

  • Developing and debugging FreeRTOS applications:

    Learn practical skills for developing, testing, debugging and tracing real-time applications using FreeRTOS.

Course Duration

The total duration of the course is 21 hours- 7 hours per day for 3 days in the Face-to-Face format or divided into four sessions of around five hours each for live online training. The course strikes a balance between theoretical instruction and practical activities, with approximately 40-50% of the training time devoted to hands-on labs and exercises.

Delivery Format

This course is conducted in two delivery formats: live online training and face-to-face training.

Face-to-Face Training

For an in-person training experience, Ac6 offers face-to-face training. This option is available not only at Ac6's training center but also on the customer's premises, whether they are located in the USA, Europe, or anywhere else in the world.

Live Online Training

The live online training option allows participants to attend the course remotely from anywhere in the world. The sessions are conducted using a video-conferencing platform. Practical activities are performed using an online or an offline virtual machine based on STM32 based QEMU emulator.

Regardless of the chosen delivery format, the course content and objectives remain the same, ensuring a comprehensive learning experience for all participants.

Hands-On Labs

The hands-on labs constitute a significant portion of the course. Participants will have the opportunity to apply their knowledge in a practical setting, working on real-world scenarios and challenges. Ac6 provides example code, labs, and solutions that guide participants through various exercises. These exercises cover different aspects of FreeRTOS. The trainer will be available during the labs to provide technical and pedagogical assistance.

This figure summarizes one of the labs where you will learn about interrupt management, task synchronization, data passing, queue sets, and resource management. The lab involves synchronizing a task with an Interrupt Service Routine (ISR) and implementing a gatekeeper task. You will use the shared resource “printf function” accessible only through the gatekeeper task.

Firstly, you will develop a task that prints the elapsed seconds since the kernel started. Secondly, you will implement the handler task synchronized with the button pressed interrupt using semaphores. This handler task generates a random character and sends it to the gatekeeper task. The gatekeeper task can receive messages of different types (char or array of char) and will wait until any message arrives to print it. This is done using a queue set.

Contact us

To learn more about the Real Time Programming with FreeRTOS course and to inquire about enrollment, please contact us at For a detailed course outline and additional information, visit our website.

Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.