Decorative Background Image

Writing Drivers for the QNX Neutrino RTOS


This course is designed for anyone who wants to develop drivers for the QNX® Neutrino® RTOS. By the end of the course, you will have written several sample drivers. You will:

  1. Familiarize yourself with the methods for writing different types of drivers under the QNX Neutrino RTOS.
  2. Focus on real-world problems and the techniques for solving them.
  3. Get hands-on experience with exercises that allow you to apply the concepts introduced in 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. You should have completed the Real-Time Programming for QNX Neutrino RTOS course or have equivalent QNX Neutrino RTOS knowledge.

Please contact for further information.

Course Modules

QNX Neutrino RTOS Programming Basics

A review of basic programming topics for the QNX Neutrino RTOS, such as threads, mutexes, message passing, pulses and timing. This module provides a refresher course to students familiar with QNX programming and offers background for other course material.

Compiling and Debugging

This section provides a quick introduction to editing, compiling, running and debugging your application from the QNX® Momentics® IDE, giving you the minimum information necessary to do the exercises in the programming sections.

Writing a Resource Manager

A look at the capabilities of resource managers, including pathname-space resolution, IPC message formats and general structure. We provide several exercises, from a very simple resource manager that implements /dev/null to more complex examples that support multiple devices.

Further Topics for Resource Managers

Explores the various ways to return from handlers, manage access and modification times, leave clients blocked, use multi-threaded resource managers, implement combine messages, perform unblock handling, receive pulses and make select() and ionotify() work. Resource manager concepts are reinforced through a variety of hands-on exercises.


Covers in detail the I/O aspects of a driver, including how to do port I/O and memory-mapped I/O, how to perform DMA memory configuration and how to use the PCI API.


Explores how the QNX Neutrino RTOS makes it relatively easy to write and debug interrupt handlers. We present several approaches to interrupt handlers.

I/O Exercises

A collection of challenging exercises that are a must for anyone learning to write device drivers. The exercises used depend on the hardware available. Choose:

  • VGA Text Mode driver exercise: You'll write an I/O manager that does read()s from, write()s to and devctl()s for changing the configuration of VGA text mode memory.
  • Keyboard driver exercise: You will write a simple driver that handles x86 keyboard input.

File System Resource Managers

Instruction for writing file system resource managers which are processes that represent data in the form of files or file systems. You will learn to write a resource manager that presents a tar file as a file system.

Writing a Character driver

We'll look at using the QNX Neutrino io-char library to write a driver for character devices such as serial chipsets that support the RS-232 protocol.

Hands-On Exercises

In each section of the course, you will have an opportunity to put what you learn into practice. After learning each programming technique, you will apply it to situations that may arise in your own applications.

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.