General Availability Release Notes
QNX SDP is a cross-compiling and debugging environment, including an IDE and command-line tools, for building binary images and programs for target boards running the QNX OS 8.0. These release notes describe the key features of this new release and the notable improvements since the previous release, and provide installation instructions.
Date of this edition: March 21, 2024
Target hardware
This product can run on x86_64 hardware platforms and AArch64 platforms that support the ARMv8.0 or v8.2 instruction sets.
For the list of specific boards that this release supports,
refer tp Which platforms does the QNX OS support?
below.
Development host OSs
You must install QNX SDP onto a development host with one of the following 64-bit operating systems:
- Microsoft Windows 11, or Windows 10
- Ubuntu Desktop 22.04 LTS, Ubuntu Desktop 20.04 LTS, or Red Hat Enterprise Linux 9
- QNX SDP isn't supported on host systems that use ARM processors.
- QNX SDP isn't supported on macOS anymore.
Contents
Which platforms does the QNX OS support?
Silicon Supplier | Chipset or Board Name | QNX Board Support Package | Screen Board Support |
---|---|---|---|
Broadcom | Raspberry Pi4 Model B | QNX SDP 8.0 BSP for Raspberry Pi BCM2711 R-PI4 | QNX SDP 8.0 Screen Board Support Raspberry Pi 4 |
Intel | Celeron J6413 | QNX SDP 8.0 BSP for Generic x86-64 (64-bit) | No Screen Board support available |
Intel | Raptor Lake i9-13900 | QNX SDP 8.0 BSP for Generic x86-64 (64-bit) | No Screen Board support available |
NXP | i.MX8M+ EVK | QNX SDP 8.0 BSP for NXP i.MX 8M Plus | QNX SDP 8.0 Screen Board Support i.MX8MP |
NXP | i.MX8QM MEK | QNX SDP 8.0 BSP for NXP i.MX 8 QuadMax MEK | QNX SDP 8.0 Screen Board Support i.MX8QM |
NXP | i.MX93xx EVK | QNX SDP 8.0 BSP for NXP i.MX93 EVK board | No Screen Board support available |
NXP | Toradex Apalis i.MX8QM Ixora | QNX SDP 8.0 BSP for Toradex Apalis i.MX8QM Ixora | QNX SDP 8.0 Screen Board Support i.MX8QM |
NXP | Toradex Verdin i.MX8MP | QNX SDP 8.0 BSP for Toradex Verdin i.MX8MP | QNX SDP 8.0 Screen Board Support i.MX8MP |
Texas Instruments | Jacinto 7 TDA4VM Starter Kit | QNX SDP 8.0 BSP for Texas Instruments Jacinto 7 TDA4VM Starter Kit | QNX SDP 8.0 Screen Board Support for TI J721E |
For more details on all supported BSPs, visit the QNX Board Support Packages page.
Screen board support i.MX8QM
Screen Board Support i.MX8 can be used on the i.MX8 Toradex Apalis board. If you want to use a Toradex Apalis board, make the modifications below to your graphics.conf file.
Toradex Apalis
- Replace the sections on setting for WFD port1, port2, and port3
with:
#Setting for WFD port 1 (DPU0/HDMI) wfd-port-dpu0-hdmi = enabled #Setting for WFD port 2 (DPU0/LVDS) wfd-port-dpu0-lvds = 0 #Setting for WFD port 3 (DPU0/MIPI) wfd-port-dpu0-mipi = 0 #Setting for WFD port 4 (DPU1/LVDS) wfd-port-dpu1-lvds = 0 #Setting for WFD port 5 (DPU1/MIPI) wfd-port-dpu1-mipi = 0
- Add the following settings to
begin display 1
:#Modes supported by the HDMI/DP controller video-mode = 3840 x 2160 @ 30 video-mode = 1920 x 1080 @ 60 video-mode = 1280 x 720 @ 60 video-mode = 720 x 480 @ 60 #When default pipe to port binding is disabled, use this parameter to specify the list of pipelines. #that will be attached to this port. Sequence of pipelines ids will specify z-order of overlaid hw pipelines. #E.g 1,2,3,4 sequence is not the same as 2,1,3,4. The default is 1,2. pipelines = 1,2
- Edit the
#For display #1
section to match the following:begin class framebuffer-1 display = 1 #For wide videomode(width > 2880) move the framebuffer to the virtual pipeline pipeline = 2 format = rgba8888 usage = nxp-g2d end class
- Make sure the
begin display 2
section is commented out or removed. - Make sure the
#For display #2
section is commented out or removed.
What's new in QNX SDP?
Component | Feature | Details |
---|---|---|
Kernel | Scalable, fully pre-emptable, multi-threaded kernel | QNX SDP 8 supports an environment in which threads running on different processor cores can access kernel services in a predictable and deterministic manner. The QNX OS kernel works in SoCs with between 1 and 64 cores. Kernel calls execute in parallel on all cores as long as they do not involve shared resources. |
Kernel | Fixed-time, strict-priority scheduler with support for multiple policies | The new kernel provides predictable and deterministic scheduling for threads in an SMP environment. The kernel supports these scheduling policies: FIFO, round-robin, and sporadic. For more information, refer to the QNX OS System Architecture Guide. Thread affinity can be set to all cores, a specific core, or a subset of cores that is pre-defined for this system
(a |
Kernel | Fast, secure, POSIX message queues | A set of nonblocking message-passing facilities consisting of named objects that operate with readers and writers; similar to mailboxes. Processes can exchange fixed-size, prioritized messages. This mechanism replaces mqueue and mq. |
Kernel | Core-bound, tickless timer subsystem | Timer hardware is programmed on demand. Software timers fire on the core on which the thread programming them is running when it activates them (e.g., through TimerSettime()). This avoids both repeated clock interrupts and IPI-based synchronization. |
Kernel | Faster synchronization due to finer-grained locking | The common case of process-private synchronization objects has been optimized to avoid sharing resources and internal locks with other processes. Shared mutexes, semaphores, and condvars are handled differently than process-private objects. Any shared synchronization objects must be declared as such, as per POSIX standards (previous QNX OS versions allowed implicit sharing). |
Kernel | Light-weight, low-latency, safe, and secure interrupt handling | The new kernel uses interrupt service threads (ISTs), which are faster and provide lower latency for interrupt handling than in previous versions. Our new interrupt threads mechanism is also safe and secure. QNX OS no longer supports interrupt service routines (ISRs). |
Kernel | Thread execution deadline monitoring | The QNX OS can monitor the deadline of a thread's execution and raise an exception if the thread exceeds its deadline. |
Kernel | Virtualization support | The new kernel fully supports virtualization, meaning the QNX OS can act as the host in
a hypervisor system.
There's no need to change your system configuration by editing the OS image (IFS) buildfile to support this use case.
In previous releases, virtualization support was implemented in a separate module that had to be explicitly added to the configuration. |
System libraries | New heap memory allocator | The libc library in this release uses the ptmalloc memory allocator to manage heap memory. This new allocator is faster than the one in previous releases, and it supports the same API functions such as malloc(), calloc(), free(), etc. |
SPI (Serial Peripheral Interface) framework | Framework for exchanging data between SoCs and SPI devices | The SPI framework API supports uni-directional and bi-directional communication, and also DMA, SMMU, and secpol. QNX OS provides device control commands (DCMD_SPI_*) for this framework. |
Filesystems | QNX compressed filesystem (QCFS) | QCFS is a read-only QNX filesystem that supports transparent decompression of files and metadata.
This release ships with the shared object that supports this filesystem type (fs-qcfs.so)
and the utility that generates images based on it (mkqfs).
Note: To generate a working QCFS image, you need to explicitly include fs-qcfs.so in the OS image (IFS) buildfile, and also either liblz4.so.1 or libzstd.so.1., depending on your choice of "compressor". |
Filesystems | Squash filesystem (SquashFS) | This is a read-only Linux filesystem that supports transparent decompression of files and directories using several different algorithms. This release ships with the shared object that supports this filesystem type (fs-squash.so) and the utility that generates images based on it (mksquashfsimg). |
Filesystems | Filesystem layout flexibility | QNX SDP 8 allows applications, their runtime dependencies, and their configuration data to be relocatable within the filesystem layout. For the filesystem notification system, the inotify_init() function reads the FSNOTIFY_PREFIX environment variable to learn the location of the filesystem event manager, fsevmgr (e.g., /dev/fsnotify). |
Networking | High-performance networking stack | The io-sock networking stack in QNX SDP 8 is based on FreeBSD 13.2 and supports:
|
Wi-Fi | Multiple features |
|
Wi-Fi | WPA supplicant | This release supports wpa_supplicant and hostapd version 2.10, which support OpenSSL 3.0.X |
Wi-Fi | Hardware support | Wi-Fi is supported on these boards: i.MX8QM MEK, Jacinto 7 TDA4VM Starter Kit, and Celeron J6413 |
Security | Multiple features |
|
Screen | True headless configurations | Screen can operate without a display and/or GPU. |
Screen | True Virtual display | A virtual display can be configured in graphics.conf or using the new API functions screen_create_display() and screen_destroy_display(). |
Screen | Rendering APIs | This release supports Vulkan 1.3.x and OpenCL 3.0.x. |
Screen | Debugging framework | Several improvements have been made to the debug interface (/dev/screen). |
Screen | VNC server | The new VNC server software has better usability. |
Screen | Wayland | Support for the Wayland 1.21.0 framework has been added to the graphics framework. A reference Weston implementation (with a Screen backend) is available upon request. |
Host Tools | GNU C compiler | GCC 12.2 is available; this compiler version uses binutils v2.41.0. |
Host Tools | GNU debugger | GDB 11.2 is available. |
Host Tools | C++ libraries and language standards | LLVM libc++ version 16 is provided; this is the recommended C++ library. GNU libstdc++ version 12.2 is also provided. In this release, these libraries support the C++17 and C++20 standards. For more information, refer to the libc++ C++20 Status page from the LLVM Project website and the C++20 Support in GCC page from the GNU website. |
Host Tools | QNX Toolkit for Microsoft Visual Studio Code | The QNX Toolkit extends the Visual Studio Code product to provide users with access to the QNX development environment. For more information, refer to the QNX Toolkit for Visual Studio Code User's Guide. |
Host Tools | Python | Python version 3.11 is available. |
Host Tools | Valgrind | The Valgrind tool suite supports runtime analysis of programs and can be used from the QNX Momentics IDE or the command line. |
Target Tools | Toybox | The toybox package combines many command-line utilities into a single executable. Many utilities available in previous QNX SDP versions have been replaced with Toybox tools and some have been discontinued. For information about specific utilities, refer to the Utilities Reference in the SDP documentation and the QNX Software Development Platform 8.0: Discontinuation and Deprecation Notice. |
Target Tools | Address Sanitizer (ASan) | The libasan library detects memory errors such as out-of-bounds and use-after-free bugs. |
Target Tools | Undefined Behavior Sanitizer (UBSan) | The libubsan library detects undefined behavior at runtime. |
Target Tools | Unwinder | The libunwind library is a production-quality unwinder that's useful for exception handling and debugging. |
Installing QNX SDP
To use QNX SDP 8.0, you need to have QNX Software Center 2.0. For information about installing
and opening this other product, refer to Install and launch the QNX Software Center
in the QNX Software Center
User's Guide.
After you've opened QNX Software Center, you must install the QNX SDP packages as a new baseline
product. On the Welcome page, click Add Installation on the left to
launch the New Installation Wizard. In the first dialog, select . Follow the prompts (e.g., the Next buttons) to
perform the installation. Be sure to select a Conservative installation policy.
For more information, refer to Install the QNX Software Development Platform
in the QNX Software
Center User's Guide.
To access the contents of a package, right-click it in the QNX Software Center, choose Properties, then click Package Contents. Some of the packages may contain no files but instead references to contained packages (or subpackages), in which case the contents page will display a note saying so. To access the list of subpackages, right-click the package, choose Properties, then click Package Dependencies. Because the baseline OS product has many inter-package dependencies, sometimes you have to go through multiple levels of subpackages to access the included files.
You can also obtain the maturity statuses of files by generating a manifest
report. For information on doing so, refer to the Manifest Reports & File Lookup
chapter of the QNX Software Center User's Guide.
Each package has its
own maturity level. You can learn this by right-clicking the package, choosing
Properties, then clicking General
Information. In the Legal and Regulatory
Information panel, there's a Status field. For more
information about this field, including its possible values, refer to the Package
status
section in the Deploy licenses to users
topic in the QNX
Software Center User's Guide.
Debug information for shipped binaries
The QNX SDP target binaries are generated with debug information (-g), with the debug form of the binary stored in a separate binaryName.sym file. The non-sym form is stripped of the debug and .ident information (use -s works only on files containing the .ident section).
Most target packages include debug information (.sym files). The binaries and their .sym files are linked, so gdb understands where to find the symbol data. There's no need to store .sym files for the binaries on a target.
If the debug symbols are especially large, there might be a separate debug package in the QNX Software Center. To install debug symbols in this case, select your installation from the toolbar, then go to the Advanced tab. Click Edit Installation Properties. In the property dialog that opens, ensure that the Install debug symbols checkbox is checked (this box is checked by default). Click OK.
If you decide to not install the debug information but later want it, you can right-click a package and choose Install debug symbols.
Discontinued and deprecated items
For documentation on all items that are no longer shipped in this release or will be removed in a future release, refer to the QNX Software Development Platform 8.0: Discontinuation and Deprecation Notice.
Experimental items
Some experimental items are implemented in the packages of the baseline product. This means these items are installed when you install QNX SDP and, hence, there's nothing else you must do to be able to use them. Other experimental items are contained in their own packages that aren't installed when you install QNX SDP. To locate and install these packages so you can use the items they contain, go to the Available tab in QNX Software Center and search for part or all of the package name. Then, click the package in the search results and then the Install button in the bottom right corner.
The table that follows lists the experimental items by functional area and indicates whether each one is contained in an additional package that must be installed separately.
Functional area | Item description | Additional package |
---|---|---|
Kernel | Dynamic Processor State Management.
The SchedCtl() kernel call accepts two new commands: SCHED_PROCESSOR_ONLINE and SCHED_PROCESSOR_OFFLINE. |
N/A (included in baseline product) |
High Availability Manager (HAM) | Mechanism for monitoring system processes and services. The HAM can perform multistage recovery for processes that fail, do not respond, or provide an unacceptable level of service. | QNX SDP 8.0 High Availability Manager |
SMMU | SMMU hardware module for ARM SMMUv3 controllers (smmu-armsmmuv3.so) | N/A |
SMMU | Configuration example for the SMMUMAN service on the Texas Instruments Jacinto 7 TDA4VM Starter Kit | QNX SDP 8.0 SMMUMAN Configuration Example for the TI J721e SoC |
SMMU | Support for the SMMUMAN service on the Texas Instruments Jacinto 7 TDA4VM Starter Kit | QNX SDP 8.0 SMMUMAN TI J721e SoC Support |
Networking | Texas Instruments Jacinto 7 network drivers (devs-cpsw-j721e.so, devs-cpsw-j784s4.so, devs-cpsw-j721s2.so) | N/A |
Networking | Texas Instruments Jacinto 7 virtual network drivers (devs-cpvsw-j721e.so, devs-cpvsw-j784s4.so) | N/A |
Networking | Texas Instruments Sitara network driver (devs-cpsw-am62x.so) | N/A |
Networking | DWC gmac network driver (devs-dwc.so) | N/A |
Networking | CDCE USB network driver (devs-cdce.so) | N/A |
Networking | SMSC USB network driver (devs-smsc.so) | N/A |
Networking | RNDIS USB network driver (devs-urndis.so) | N/A |
Networking | Marvell Network PHY driver (devs-marvell_phy.so) | N/A |
Networking | RT9010 network PHY driver (devs-rt9010phy.so) | N/A |
Networking | StrongSwan service | QNX SDP 8.0 strongSwan - IPsec VPN |
Networking | Precision Time Protocol (PTP) daemon (ptpd2).
This protocol implementation is compliant with 802.1AS and IEEE1588. |
N/A |
Networking | Multicast DNS service | N/A |
Networking | i225 / i226 network drivers (devs-igc.so and devs-igc-diag.so) | N/A |
Networking | Intel 316x, 726x, 826x, 9xx0 Wi-Fi drivers (devs-iwm.so and devs-iwm-diag.so) | N/A |
Networking | Intel x710-t4 network drivers (devs-ixl.so and devs-ixl-diag.so) | N/A |
Networking | Virtual drivers that support VMware targets (devs-vmx.so and devs-vmx-diag.so) | N/A |
Networking | Virtual drivers that support QEMU and VirtualBox targets | N/A |
Networking | QEMU target support | N/A |
Networking | VirtualBox target support | N/A |
Screen | Support for the core Wayland communication library and the Weston compositor for Screen | QNX SDP 8.0 Wayland/Weston |
Screen | Tools for using Wayland on Linux 64-bit hosts | QNX SDP 8.0 Wayland host tools (Linux 64-bit) |
Screen | Tools for using Wayland on Windows 64-bit hosts | QNX SDP 8.0 Wayland host tools (Windows 64-bit) |
Known issues
The known issues for this release are described in the QNX Software Development Platform 8.0: Known Issues document that's stored in the QNX Download Center at: https://www.qnx.com/download/group.html?programid=74127
Licensing information
The QNX SDP licensing, packaging, and fulfillment model from the previous release has been carried forward to this release. That is, QNX SDP will be available in the QNX Download Center and QNX Software Center as a new product baseline. Additionally, the license agreements will include a few enhancements for clarifications but otherwise will remain unchanged.
Getting started with the documentation
The QNX SDP 8.0 documentation is found on our public website at https://www.qnx.com/developers/docs/8.0/#com.qnx.doc.qnxsdp.nav/topic/bookset.html.
This roadmap
page contains links to the various booksets that accompany the QNX OS. For a short tutorial that will help you set up a QNX OS target and run a simple program, refer to the Quickstart
Guide. Then you can access the other key documents (QNX OS System Architecture, Programmer's Guide,
C Library Reference, and more) to learn about how the QNX OS is designed and how to write programs that run on it.
Technical support
To obtain technical support for any QNX product, visit the Support area on our website: https://blackberry.qnx.com/en/support. You'll find a range of support options.
For product experience and roadmap information, please contact QNX Product Management.