Decorative Background Image

Real-Time Programming for QNX Neutrino RTOS



This course is designed for anyone who develops QNX® Neutrino® RTOS applications. By the end of the course, you will have written several example programs and learned to apply QNX Neutrino RTOS concepts to real-world applications. You will:

  1. Familiarize yourself with the features, services and architecture of the QNX Neutrino RTOS.
  2. Focus on real-world problems and the techniques for solving them.
  3. Get hands-on experience applying the concepts introduced throughout the course.

Prerequisites: You must have a good working knowledge of C and a general knowledge of operating systems. Familiarity with embedded systems or real-time concepts is an asset. 

Please contact for further information.

Course Modules

QNX Neutrino RTOS Architecture

An overview of the QNX Neutrino RTOS architecture, covering what the microkernel and the process manager do. We talk about standards, protected address spaces, process/thread model, timing and scheduling. We also introduce various types of IPC, synchronization, what a resource manager is and where shared objects fit in.

Compiling and Debugging

A short introduction to editing, compiling, running and debugging your application from the QNX® Momentics® IDE.

Processes, Threads and Synchronization

Unlike many common legacy RTOSs, QNX Neutrino RTOS executes programs in separate, memory-protected processes. This section touches on how a system design problem can be broken down into separate processes, and how processes are started and terminated. Additionally, we discuss what a thread is, how to start and stop a thread and how to synchronize resource access via QNX Neutrino RTOS and POSIX function calls. Several hands-on lab exercises form a significant component of this section.

Interprocess Communication

The various methods that the QNX Neutrino RTOS provides for allowing two or more processes to exchange information and control. We focus on the QNX message passing that is fundamental to how QNX Neutrino works. We also examine pulses and shared memory.

Comparing QNX IPC Methods

The relative advantages and disadvantages of the various IPC methods supported by QNX with a view to choosing which method(s) to use in your system.

Introduction to Hardware Programming

An introduction to hardware access methods, including IO-mapped and memory-mapped IO, allocating DMA-safe memory and interrupt handling.

Timers, Clocks and Timeouts

How to meet deterministic timing requirements. We discuss timing architecture and how to handle periodic timing, one-shot timing, timestamping, benchmarking and timeouts.

Multicore Processing

How to configure your application for Multicore, how scheduling works, where ISRs run and processor affinity. Also examines how to perform synchronization among threads and between threads and ISRs.

Building a QNX Neutrino Boot/OS Image

A detailed look at building boot images which contain the binaries that run just after the reset vector. Boot images typically include components such as start-up code, the process manager, the kernel, drivers and a start-up script. We also explore various ways to load a boot image onto your target.

Introduction to Resource Managers

Any process can be a resource manager, and drivers usually are. This section looks at the capabilities of resource managers, including pathname-space resolution, IPC message formats and general structure. Through a set of exercises, we'll look at the initialization of a simple resource manager and the handling of read() and write() operations.

Dates and Locations

All BlackBerry QNX training courses are hands-on, instructor led using real-world examples to give your development team the grounding they need in QNX best practices so that you get the most out of your investment.