Real-Time Programming for QNX OS
Overview
This course is designed for anyone who develops QNX® OS applications. By the end of the course, you will have written several example programs and learned to apply QNX OS concepts to real-world applications. You will:
- Familiarize yourself with the features, services and architecture of the QNX OS.
- Focus on real-world problems and the techniques for solving them.
- 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 training@qnx.com for further information.
Course Modules
QNX OS Architecture
An overview of the QNX OS 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 OS 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 OS and POSIX function calls. Several hands-on lab exercises form a significant component of this section.
Interprocess Communication
The various methods that the QNX OS 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 OS 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 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.