In this course, attendees will learn how to design and develop embedded software with FreeRTOS.

Detailed agenda

  • Introduction to real-time systems: types of real-time systems, foreground/background based systems, shortcomings of the super-loop technique, the real-time kernel, multitasking systems, context switches, task scheduler, scheduling policies, advantages of using an RTOS.
  • Hardware and development environment: introduction to the Freedom boards, FRDM-KL46Z development kit, development environment, MCUXpresso IDE and SDK, documentation, and references.
  • Introduction to FreeRTOS: history, FreeRTOS and Amazon FreeRTOS, market position, features, source code and coding standard, conventions, license, OpenRTOS, and SafeRTOS, porting and integrating FreeRTOS.
  • Task management: what is a task, creating and deleting tasks, event-based tasks, task states, priorities, task scheduler, preemptive and collaborative modes, tick interrupt, tick interrupt hook, delay routines, idle task, idle task hook, energy saving and tickless idle mode, co-routines.
  • Task communication: queues, reading from and writing to queues, stream buffers, message buffers, queue sets.
  • Notification mechanisms: binary semaphores, counter semaphores, managing resource access with semaphores, task notifications, event groups.
  • Interrupt management: hardware events, introduction to interrupt handling in ARM Cortex-M, implementing an interrupt service routine (ISR), top-half and bottom-half, delegating interrupt handling to tasks, data transfer techniques, interrupts used by the kernel, interrupt priority configuration.
  • Software timers: introduction to software timers, enabling and configuring software timers, types of software timers, handling interrupts on timers, daemon task startup hook.
  • Concurrency management: shared resources and the need for concurrency management, thread safety and reentrance, critical sections and mutual exclusion, mutex, recursive mutex, disabling interrupts, pausing the scheduler, priority inversion, priority inheritance, deadlocks, gatekeeper tasks.
  • Memory management: advantages and disadvantages of static allocation and dynamic allocation, static memory allocation functions, dynamic memory allocation algorithms, memory fragmentation, monitoring the heap, monitoring the stack and identifying stack overflows.
  • Support tools: displaying information about running tasks, enabling Run Time Statistics, tracing, trace hook macros, kernel-aware debugging, simulators and emulators.
  • Designing with FreeRTOS: dividing the system into tasks, setting priorities, RMS (Rate Monotonic Scheduling) technique, defining the size of the stack, memory allocation, communication between tasks, interrupt handling, selecting the scheduler.
  • Final Thoughts: Additional links and resources, book recommendations, final questions and comments, closing.

For more details on the content of this training, you can download the agenda and the slides (in Portuguese).

Additional information

Students, engineers and software developers of embedded systems projects.

Basic knowledge of embedded systems, firmware (bare-metal) development for microcontrollers, intermediate knowledge of the C language.

The course material contains the slides of the presentations, the book of activities and exercises, reference guides, and additional reference documents. All materials will be provided in an electronic format at the start of the training session.

The training exercises are executed on a Freescale’s Freedom platform (FRDM-KL46Z ), based on the Kinetis KL46 microcontroller (ARM Cortex-M0+) and several communication and control interfaces. The development kits are loaned to students to carry out practical activities during the training. If necessary, and depending on the needs of the contracting company, the training can be carried out on another hardware platform.

The training can be presented in the following languages: Brazilian Portuguese and English.

If you plan to train your team or a group of people, consider a training session inside your company. In an in-company training session, the company is responsible for providing the necessary resources needed for the training, including the training room, data projector and development machines. This model also brings big advantages for the company, since the cost of transportation and accommodation of several employees is reduced only to the instructor. If your company has a special requirement, we can study a program that meets your needs, like preparing the training material for a specific hardware platform or developing additional content. Don’t hesitate to get in touch via email or the contact page .

Open training sessions are presented in a pleasant environment, with a properly equipped laboratory and Internet access. Classes are usually presented full-time, with a stop for lunch and a coffee break in the morning. If you are interested in attending an open session but there are no classes available, send a message via the contact page and we will notify you as soon as new classes open.

Due to the need to use a development kit to carry out practical activities, this training cannot currently be carried out online.

Some pictures from previous training sessions:

Customers testimonials

Testimonials from companies and students who have already attended an Embedded Labworks training session

highlight shape

Samsung is a company leader in the market of high technology and digital media

“One of the best training courses I have ever attended. The instructor has total control of the training agenda and excellent teaching skills”

Adriano Saviolli, Samsung

LG Electronics is a South Korean multinational company and one of the largest electronics companies in Brazil

“I am used to being very critical and it’s been some time since I don’t evaluate a training course with high scores in all aspects. Congratulations on the training!”

Vitor de Paula, LG Electronics

AOC International is the brand of TPV Technology Limited, a manufacturer of LCD and LED displays for computers and televisions

“Unique training and no doubt much more valuable than many university degrees we have today on the subject”

Lucas Tadeu Portela, AOC International

CTEx is a Brazilian military organization subordinate to the science and technology department of the Brazilian government

“The Embedded Labworks training fully met all objectives, as well as being motivating for us to continue learning embedded Linux. I recommend it!”

José Antonio de Sousa Fernandes, CTEx

Inatel is a center of excellence in teaching and research in telecommunications engineering

High-quality training, very helpful and with a highly structured agenda"

Luis Gustavo, Inatel

Intelbrás is a 100% Brazilian company that operates in the areas of security, telecom and networking, being a leader in several market segments

“An excellent professional applying a very good practical training session with a rich study material. Thanks!”

Paulo Morgado, Intelbrás

Still have questions?

Send an email to or leave a message by filling out the form below:


Subscribe to the Embedded Labworks newsletter to receive messages about training, services and news from the embedded systems industry.

highlight shape