Syllabus
Unit 1 Introduction to QNX OS Architecture: Overview of QNX OS architecture: microkernel, process manager, and standards. Protected address spaces, process/thread model, and scheduling. Introduction to inter-process communication (IPC) and synchronization. Resource managers and shared objects. Unit 2 Processes, Threads, and Synchronization: Process management: creation, termination, and memory protection. Thread management: creation, termination, and synchronization. Synchronization techniques: mutexes, semaphores, and condition variables. Hands-on exercises: process/thread creation and synchronization. Unit 3Inter-Process Communication (IPC): Overview of IPC methods in QNX: message passing, pulses, and shared memory. Comparing IPC methods: advantages and disadvantages. Practical implementation of IPC in QNX. Hands-on exercises: message passing and shared memory. Unit 4Hardware Programming and Timing: Hardware access methods: IO-mapped and memory-mapped IO. Interrupt handling and DMA-safe memory allocation. Timing architecture: periodic timing, one-shot timing, and timeouts. Hands-on exercises: interrupt handling and timing mechanisms. Unit 5Building and Configuring QNX Boot/OS Images: Overview of QNX boot/OS image structure. Components of a boot image: startup code, kernel, drivers, and scripts. Building and loading boot images onto target hardware. Introduction to resource managers and their implementation.
Experiments
Lab Experiments1. QNX configuration and application development using QNX Momentics IDE. 2. Process and thread creation, management, and synchronization. 3. Implementation of IPC methods: passing message and shared memory. 4. Interrupt handling and hardware access programming. 5. Building and deploying QNX boot/OS images. 6. Mini capstone project: Design and implement a QNX-based embedded system.
Objectives and Outcomes
Course Objectives
- Understand the architecture and core concepts of the QNX RTOS.
- Learn to develop and debug applications using the QNX Momentics IDE.
- Gain knowledge of process and thread management, including synchronization techniques.
- Explore Inter-Process Communication (IPC) methods and their applications in QNX.
- Understand hardware programming concepts, including interrupt handling and memory access.
- Learn to build and configure QNX boot/OS images for embedded systems.
Course Outcomes
CO1: Understand the QNX OS architecture and its microkernel.
CO2: Develop and debug QNX-based applications using appropriate tools.
CO3: Apply process/thread management and synchronization techniques in QNX.
CO4: Implement inter-process communication methods for real-time systems.
CO5: Configure and build QNX boot/OS images for specific hardware platforms.
CO6: Develop strong knowledge on the POSIX standards that help in System Application Development.
CO-PO Mapping
|
PO/PSO
|
PO1
|
PO2
|
PO3
|
PO4
|
PO5
|
PO6
|
PO7
|
PO8
|
PO9
|
PO10
|
PO11
|
PSO1
|
PSO2
|
PSO3
|
|
CO
|
|
CO1
|
3
|
2
|
1
|
–
|
–
|
–
|
–
|
–
|
–
|
–
|
–
|
1
|
–
|
–
|
|
CO2
|
3
|
3
|
2
|
2
|
3
|
–
|
–
|
–
|
–
|
1
|
1
|
2
|
3
|
1
|
|
CO3
|
3
|
3
|
3
|
3
|
3
|
–
|
–
|
–
|
–
|
1
|
1
|
1
|
1
|
1
|
|
CO4
|
3
|
3
|
3
|
3
|
3
|
–
|
–
|
–
|
–
|
1
|
1
|
1
|
3
|
1
|
|
CO5
|
3
|
3
|
3
|
3
|
3
|
–
|
–
|
–
|
–
|
1
|
1
|
2
|
2
|
2
|
|
CO6
|
2
|
2
|
1
|
1
|
1
|
–
|
–
|
–
|
–
|
1
|
1
|
1
|
1
|
1
|
Text Books / References
References:1 QNX Neutrino RTOS User’s Guide, QNX Software Systems. 2 Brian Amos, Hands-on RTOS with Microcontrollers, Packt Publishing, 2020. 3 Abraham Silberschatz, Peter B. Galvin, Greg Gagne, Operating System Concepts, 9th Edition, Wiley, 2018. 4 Michael Barr, Anthony Massa, Programming Embedded Systems: With C and GNU Development Tools, O’Reilly Media, Inc., 2006.QNX Resources:QNX Everywhere page – https://blackberry.qnx.com/en/products/qnx-everywhere QNX Gitlab page – https://gitlab.com/qnx QNX on Reddit: https://www.reddit.com/r/QNX/ QNX on StackOverflow: https://stackoverflow.com/questions/tagged/qnx QNX on YouTube: https://www.youtube.com/qnxcam QNX open-source projects: https://gitlab.com/qnx/projects QNX on github: https://github.com/qnx-ports