Home
Developer Resources
Technical Articles

QNX Technical Articles

QNX® Software Development Platform (SDP) 8.0: Release Notes

Date of this edition: December 11, 2023

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.

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, see 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

Notes:

  • 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?

To generate target images, you must install the appropriate BSP packages for the target boards you want to use. These packages are found in the Available tab. We've validated this QNX OS release on the following platforms:

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 No Screen Board support available
NXP Toradex Verdin i.MX8MP QNX SDP 8.0 BSP for Toradex Verdin i.MX8MP No Screen Board support available
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.

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, see 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 cluster).

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 mqeueue 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:
  • existing network drivers that require only minor changes to use the new stack version
  • improved performance, especially on 1G and 10G channels
  • many networking services, including CARP, TAP, and TUN
  • many networking protocols, including SCTP
  • many networking utilities, including jail (for process and network isolation) and netmap (for efficient packet I/O)
  • StrongSwan, which implements Internet Key Exchange (IKE) protocols and supports secure traffic in IPsec-based VPNs
  • development of custom BSP drivers and modules
  • a new DHCP client, dhcpcd, which replaces dhclient
For more information about the supported networking features, see the High-Performance Networking Stack (io-sock) User's Guide.
Wi-Fi Multiple features
  • Synaptics Wireless PCIE Chipset BCM43752 with Bluetooth 5.1 support
  • Driver support for aarch64 and x86_64 hardware
  • Wi-Fi 6 802.11ax chipset support
  • WPA2/WAP3
  • 802.1x authentication types using TLS 1.2 and TLS1.3
  • driver modes: Station, AP, AGO, Station + AGO Multi, Station + AP Multi
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
  • Secure process launcher
  • OpenSSL 3.0.X
  • POSIX permissions and Access Control Lists (ACLs) extension
  • Random number generator (/dev/[u]random)
  • QNX Trusted Disk (QTD)
  • QNX Cryptography Library (qcrypto)
  • QNX Crypto Device (/dev/crypto)
  • Process manager abilities
  • Address space layout randomization (ASLR)
  • Pathtrust
  • mkshadow utility
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, see 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, see 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, see 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, see 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 QNX Software Development Platform SDP 8.0 > QNX Software Development Platform SDP 8.0. Follow the prompts (e.g., the Next buttons) to perform the installation. Be sure to select a Conservative installation policy. For more information, see Install the QNX Software Development Platform in the QNX Software Center User's Guide.

To see 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 see 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 see the included files.


Note: Some packages in this release include experimental files. The maturity level of individual files is displayed in the Status column in the package contents table. In this release, the individual files in a package can have different maturity levels.

You can also obtain the maturity statuses of files by generating a manifest report. For information on doing so, see 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, see 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, see the QNX Software Development Platform 8.0: Discontinuation and Deprecation Notice.

Experimental items


Caution: Experimental software is primarily provided for customers and the community to try out, and perhaps to get an idea of what might be coming in the future. For information about the use of experimental software, see the Commercial Software License Agreement (CSLA) or Partner Software License Agreement (PSLA) in the Licensing area of our website: https://www.qnx.com/legal/licensing/

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 for each one, says whether it's 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 StrongSwan service QNX SDP 8.0 strongSwan - IPsec VPN
Networking Precision Time Protocol (PTP) daemon.

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, see the Quickstart Guide. Then you can refer to 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.