QNX
QNX is a real-time operating system for embedded systems where process isolation, predictable timing, and stable system communication must be clarified in the project. PICKPLACE works with QNX in project contexts where simple microcontroller software or a small RTOS does not...

Content
The most important information in brief

What is QNX?
QNX is a real-time operating system used for embedded systems with higher requirements for execution behavior, system structure, and availability. In contrast to simple firmware, QNX provides an operating system environment in which processes, memory areas, drivers, services, and applications can be viewed and controlled independently. For projects, this means: the software is not just developed as a single program, but as a system of multiple components that communicate with each other, are prioritized, and take on defined tasks.
A central aspect is real-time behavior. In a QNX project, it must be clarified which processes are time-critical, which response times must be achieved, and which processes have priority over other tasks. This is not just about pure execution speed, but about predictable behavior under load. For example, if HMI functions, communication services, control logic, and diagnostic functions are running simultaneously, the system architecture must define which component receives CPU time and when, and how data is transferred between components.
QNX is POSIX-based. This has implications for development because many concepts from Unix-like systems can be utilized. These include processes, threads, file system access, signals, interprocess communication, and standardized programming interfaces. For project teams, this can structure the transition from traditional embedded development to a more operating system-oriented software architecture. At the same time, POSIX alone does not replace system design: scheduling, memory requirements, process limits, startup order, and error behavior must be defined for the specific target platform.
PICKPLACE therefore does not consider QNX in projects in isolation as an operating system installation. What is relevant is how QNX interacts with the target hardware, the applications, the drivers, and the communication interfaces. A QNX-based solution can be used in vehicles, gateways, HMI systems, or control systems when multiple software components need to work together in a controlled manner. As part of the project, processes, tasks, data flows, and responsibilities are described before the actual application software is implemented or extended.
What differentiates QNX from simple microcontroller software?
Simple microcontroller software often runs as firmware directly on the hardware. The code controls peripherals, processes inputs, sets outputs, and often maps the application logic into a single software structure. Depending on the system, there may be interrupts, timers, main loops, or simple schedulers. This form is suitable for tasks with a manageable scope, limited hardware, and clear functional separation.
QNX is used on a different project scale. Instead of a single firmware, an operating system environment is available in which multiple processes or applications can run in parallel. This separation changes the architectural work. It must be determined which function is executed as a separate process, which tasks are divided into threads, which priorities apply, and how communication between the components takes place. Errors in one process can thus be contained differently than in monolithic firmware because process isolation is part of the system structure.
Another difference lies in the handling of memory, services, and interfaces. Microcontroller software often works very closely with registers, peripheral modules, and fixed memory areas. QNX projects, on the other hand, additionally include operating system services, driver concepts, process communication, and often file system or network functions. This creates additional decision points: Which function belongs in the application, which in a service, which interface is mapped via messages, files, sockets, or other mechanisms, and how is it prevented that one component blocks other system parts?
The error analysis also differs. With microcontroller firmware, problems are often examined using debuggers, trace outputs, measurement points, or register states. With QNX, operating system-related questions are added: process states, thread priorities, scheduling behavior, communication paths, memory consumption, and startup sequences must be understood. If a system reacts differently under load than expected, it is not enough to just check the application code. It must also be analyzed how tasks compete with each other, whether messages are processed in a timely manner, and whether the architecture is suitable for load distribution.
For PICKPLACE, this means that in project work, QNX systems are viewed more through structure, task distribution, and runtime behavior. When setting up or expanding a QNX system, we clarify which components lie at which level, which applications should be separated from each other, and how task management is structured. The development of application software then does not take place independently of the operating system, but rather taking into account priorities, communication paths, and system boundaries.
When is QNX better suited than a small RTOS?
A small RTOS can suffice if an embedded system performs few tasks, hardware is limited, and the software architecture remains manageable. Typical characteristics include a small number of tasks, direct hardware control, and limited requirements for process isolation or separate application areas. If the software mainly processes sensor values, controls actuators, and executes clearly defined control logic, a small RTOS can be the appropriate technical foundation.
QNX then becomes the obvious option when the system grows larger and multiple software areas are to be operated separately from each other. This applies, for example, to HMI systems, gateways, vehicle components, or control systems where communication, display, diagnostics, data processing, and control functions run in parallel. In such projects, the need arises to isolate processes from each other, clearly define interfaces, and use system services in a controlled manner. A small RTOS offers less structure for this, depending on its configuration, or requires more in-house development in the system architecture.
Another reason for QNX is the combination of real-time behavior and a POSIX-based environment. If a project requires both predictable response times and an operating system-like software base, the platform must bring both together. This can become relevant when existing software components are to be ported, when applications rely on standardized interfaces, or when multiple developers work on separate modules. In such cases, QNX allows for an architecture in which applications, services, and communication mechanisms can be more strongly separated from each other.
QNX may also be a better fit when the system involves a longer development chain: platform setup, driver integration, application development, error analysis, integration, and handover into an existing system environment. In such projects, it's not just about implementing a single function. It's about building an operating environment where different functions can run simultaneously and be managed in a traceable manner. Task management, process startup, prioritization, communication, and diagnostics become their own work packages.
The decision between QNX and a small RTOS should therefore not be based solely on whether real-time is needed. Both approaches can cover real-time aspects. The deciding factors are the size of the system, the number of components involved, the isolation requirements, the interfaces needed, and how the software is to be maintained or extended in the project. PICKPLACE supports this classification by considering the tasks of the target application, the existing hardware, the communication paths, and the planned application structure.
Our Services
In QNX projects, PICKPLACE takes on tasks related to platform setup, task management, and application software development. The specific scope depends on the project stage: some initiatives start with existing target hardware and an unconfigured QNX environment, while others involve existing software that needs to be expanded, analyzed, or brought into a clearer process structure.
When setting up QNX, we clarify the technical starting situation of the target platform. This includes the hardware basis, boot sequence, required system components, available interfaces, and the question of which services are needed for the planned application. The goal is a comprehensible system basis on which application software can be developed, started, and tested. If a QNX installation already exists, we check which components are relevant to the project and where adjustments will be necessary.
In the area of Task Management, we structure the system's tasks. We consider which functions run as processes or threads, what priorities they require, and how they communicate with each other. This involves concrete runtime questions: Which task is allowed to block, which is not, which data must be processed cyclically, and which processes react to events. From this information, a system structure emerges that can be developed, tested, and traced in case of errors.
When developing or extending application software, we create QNX-native applications based on project requirements. This includes functions for control, communication, data processing, or integration with other system components, as dictated by the target application. The implementation takes into account the characteristics of the QNX environment, particularly process boundaries, inter-process communication, priorities, and the management of system resources.
Additionally, we support analysis and debugging tasks when a QNX system does not behave as expected. We then examine process states, task behavior, communication paths, and potential deadlocks. The findings serve as a basis for adjustments to application logic, task distribution, or system configuration.
PICKPLACE documents the technical decisions made so that they remain usable for development and handover. This includes process division, communication relationships, timing assumptions, and notes on start-up or run-time behavior. This allows a QNX project to not only be implemented but also to be traced throughout its further development.