In this course attendees will learn how to develop and customize embedded software using the NXP MQX real-time operating system.

The following topics will be covered:

  • Real-time systems classification, foreground/background systems and its disadvantages, real-time kernel and multitask systems, context switching, scheduler and other concepts of an RTOS.
  • Hardware and development environment.
  • MQX versions and features, documentation and source code.
  • Architecture of an application based on tasks, task template, starting MQX, creating and completing tasks, setting priorities, scheduling policies, tick interrupt, developing periodic tasks with delay routines, the Idle task.
  • Sending messages between tasks, messages and lightweight messages, message pools, private message queues and system message queues.
  • MQX Synchronization mechanisms, semaphores and lightweight semaphores, event flags and lightweight events, task queues and timers.
  • Developing an interrupt service routine (ISR), synchronizing ISRs and tasks.
  • Critical sessions and mutual exclusion, disabling interrupts, disabling preemption, using semaphores and mutexes, component name, priority inversion and priority inheritance, deadlock and gatekeeper tasks.
  • Memory allocation and deallocation, memory pools, lightweight memory manager, working with partitions, reading the available space in the heap, stack usage and stack overflow, monitoring the stack of a task.
  • Integrating external libraries on a project with MQX, selecting libraries, MQX I/O, MQX RTCS, MQX USB host/device, MQX MFS, community libraries.
  • Application logs, lightweight logs, kernel logs, run-time testing, task watchdog, task-aware debugging.
  • Design techniques to develop real-time systems.
  • Final project design and development.
  • Online resources, documentation, application notes, books.

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

The slides of this training session are released under the Creative Commons BY-SA 3.0 license, and the source code can be found here.

Some pictures of training sessions already presented is available here.


Students, engineers and software developers of embedded systems projects.


Intermediate knowledge of the C programming language and software development with microcontrollers.


All required development tools and equipment will be provided by Embedded Labworks.


The course material contains the slides of the presentations, 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.

Development kits

The training exercises will be performed on a NXP's Freedom platform (FRDM-KL46Z), based on a Kinetis KL46 microcontroller (ARM Cortex-M0+) and several communication and control interfaces. For more information on this platform, click here.

Open sessions

The 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 participating in the training but there is no open session available, please fill the pre-registration form clicking here. We will contact you as soon as a new training session is opened.

In-company sessions

If you plan to train your team or a group of people, consider a training session in your company.

In-company classes have the same characteristics of an open training session. In this model, the company is responsible for providing the necessary resources needed for the training, including 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 in a specific way, like preparing the training material for a specific hardware platform or developing additional content. Do not hesitate to contact us by e-mail or leaving a message in the contact page.

Take the training to your city

You can take the training session to your community at any city in Brazil!

Can't afford to take the course in São Paulo? Do you have a study group and want to learn more about a specific technology? Do you coordinate or participate in the coordination of a course at your university and would like to train the teachers and students? Do you have a space and would like to get some friends together and spend enjoyable hours learning about embedded systems?

Send an e-mail or leave a message in the contact page. Send the name of the course you are interested and the city. If we can get together a group of interested people, we can bring the training to your city!


If you have any question, please send an e-mail or leave us a message on the contact page.

Contact us