Through sophisticated software solutions BlackBerry QNX helps ensure the proper operation of embedded systems that require mission-critical and life-critical operations. Since 1980, BlackBerry QNX has established itself as a trusted partner for companies building vehicles, medical devices, heavy machinery, power and energy, robotics, and industrial automation systems that are required to be safety-certified, extremely reliable, and highly secure.
The QNX Neutrino Real-time Operating System (RTOS) is a full-featured, microkernel RTOS with proven reliability in more than 500 million embedded systems. Since 1980, thousands of companies have deployed QNX's real-time operating systems to ensure the ideal combination of performance, security, and reliability in mission-critical systems. At the core of QNX technology is the QNX Neutrino® Real-time Operating System (RTOS), a full-featured RTOS enabling next-generation products in every industry where reliability matters, including automotive, medical devices, robotics, transportation, and industrial embedded systems.
This Partner Demo Image makes it easy for you to evaluate QNX on Toradex Computer on Modules since you can deploy a pre-compiled binary image to the hardware in a few steps. It is also a great starting point since it saves time and costs since you don't need to port a BSP from zero but instead use the BSP source-code to add your customizations on top.
The evaluation BSP supports the following hardware and features:
Note: there are QNX BSP ports available for other Toradex Computer on Modules in addition to the one supported by this Partner Demo Image. Learn more about all supported SoMs on the QNX software page.
The pre-built evaluation image is provided as-is by Toradex, meant for evaluation only, and it may be suitable for application development as long as you don't need extra dependencies. It is built from the QNX BSP provided by BlackBerry/QNX to Toradex. Read the Detailed Information and Additional Resources on the QNX software page for more details.
It is expected that you customize the BSP, build, and validate your own image before production.
This section provides instructions for you to get started with QNX quickly.
Load the Toradex Easy Installer on the target module and select QNX from the list of available images. Toradex Easy Installer has two available QNX options, each for a specific carrier board, and you must choose the corresponding one accordingly as illustrated in the screenshot below:
Attention: flashing the image for the wrong version of the carrier board will not present any errors. It will install and boot as if all went well, except some carrier board features might not work! Please double-check before installing it.
The version of Ixora is printed on the label glued to the carrier board:
Once the installation is done, power-off the board and make sure that you have access to the debug UART. Instructions and parameters are the same as from Configuring Serial Port Debug Console (Linux/U-Boot).
Power-on the board, and it will boot to a terminal on the debug UART interface:
Welcome to QNX Neutrino Initial Program Loader for Apalis iMX8QM CPU Evaluation Board (ARM Cortex-A53/A72) SCFW build version: 4124, SCFW commit: B929EDFE SECO version: 2.5.6, commit: 27167FF2 eMMC download... load image done. Found image @ 0x88000000 Jumping to startup @ 0x80800800 board_smp_num_cpu: 6 cores MAC address for ENET0 is not programmed in Fuses. Random MAC will be used. MAC address for ENET1 is not programmed in Fuses. Random MAC will be used. MMFLAGS=1 Welcome to QNX Neutrino 7.0.4 on the Apalis i.MX8QM Board (ARM Cortex-A53/A72) Starting Watchdog driver... Setting OS clock from RTC Starting Serial driver (/dev/ser1)... Starting Serial driver (/dev/ser2)... Starting Serial driver (/dev/ser3)... Starting Serial driver (/dev/ser4)... Starting SPI0 driver (/dev/spi1)... Starting SPI2 driver (/dev/spi2)... Starting CAN driver (/dev/can1/*)... Starting CAN driver (/dev/can2/*)... Starting I2C driver (/dev/i2c0)... Starting I2C driver (/dev/i2c1)... Starting I2C driver (/dev/i2c2)... Starting eMMC driver (/dev/emmc0)... Starting SD1 memory card driver (/dev/sd0)... Unable to access "/dev/sd0" (2) Starting Audio driver... Starting Network driver... Starting USB xHCI controller in the host mode (/dev/usb/*)... Starting USB eHCI controller in the host mode (/dev/otg/*)... Starting Screen ... Starting Touch Screen driver ... setting env variables. Launching devb-umass... #
Now you have access to the QNX terminal.
Since QNX is a Unix-like OS, it has several utilities well-known for Linux users. For instance, given that you have an Ethernet cable plugged to the carrier board, to get your board IP you can run
# ifconfig lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33136 inet 127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 fec0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 address: 3a:a9:5d:cc:21:73 media: Ethernet autoselect (100baseTX full-duplex,flowcontrol) status: active inet 192.168.10.41 netmask 0xffffff00 broadcast 192.168.10.255 inet6 fe80::38a9:5dff:fecc:2173%fec0 prefixlen 64 scopeid 0x11
In the example above, the IP is
Some basic graphical application samples are provided, mostly to validate that the graphic and the display software stacks are working.
sw-vsync command to start a graphical application that only makes use of the CPU:
# sw-vsync sw-vsync self layout 0 292 frames in 5.008 seconds = 58.307 FPS 292 frames in 5.006 seconds = 58.330 FPS 292 frames in 5.005 seconds = 58.342 FPS ...
gles3-gears command to start a graphical application that makes use of the GPU:
# gles2-gears Mempool Map addr range[2e20f000-3320f000] Mempool Map paddr range[84000000-89000000] Galcore version 188.8.131.52076 Resource manager inited [Interrupt] Attached irqLine 96 with id 43. Attached resmgr to /dev/galcore with id:11. 293 frames in 5.012 seconds = 58.460 FPS 292 frames in 5.005 seconds = 58.342 FPS 292 frames in 5.005 seconds = 58.342 FPS ...
calib-touch command to start a graphical application to calibrate the touch screen. We use it only to verify that touch is working:
Alternatively, to test touch you can run the command
events to start a non-graphical application that logs touch events to the terminal:
# events # events SCREEN_EVENT_PROPERTY(window=0x100e4090, pname=84) SCREEN_EVENT_PROPERTY(window=0x00000000, pname=84) SCREEN_EVENT_PROPERTY(window=0x100e4090, pname=154) SCREEN_EVENT_PROPERTY(window=0x100e4090, pname=154) SCREEN_EVENT_MTOUCH_TOUCH(window=0x00000000, port id=4, touch id=0, sequence=73, pos=[689,453], size=[0,0], source pos=[689,453], source size=[0,0], orientation=0, pressure=1) SCREEN_EVENT_MTOUCH_MOVE(window=0x00000000, port id=4, touch id=0, sequence=74, pos=[696,446], size=[0,0], source pos=[696,446], source size=[0,0], orientation=0, pressure=1) SCREEN_EVENT_MTOUCH_MOVE(window=0x00000000, port id=4, touch id=0, sequence=75, pos=[704,442], size=[0,0], source pos=[704,442], source size=[0,0], orientation=0, pressure=1) SCREEN_EVENT_MTOUCH_MOVE(window=0x00000000, port id=4, touch id=0, sequence=76, pos=[718,434], size=[0,0], source pos=[718,434], source size=[0,0], orientation=0, pressure=1) SCREEN_EVENT_MTOUCH_MOVE(window=0x00000000, port id=4, touch id=0, sequence=77, pos=[737,423], size=[0,0], source pos=[737,423], source size=[0,0], orientation=0, pressure=1) SCREEN_EVENT_MTOUCH_MOVE(window=0x00000000, port id=4, touch id=0, sequence=78, pos=[755,411], size=[0,0], source pos=[755,411], source size=[0,0], orientation=0, pressure=1) SCREEN_EVENT_MTOUCH_RELEASE(window=0x00000000, port id=4, touch id=0, sequence=79, pos=[755,411], size=[0,0], source pos=[755,411], source size=[0,0], orientation=0, pressure=1) ...
This section explores how to deploy and debug a Hello World application to the board. Please note that our summarized instructions don't replace the comprehensive QNX instructions and documentation. If you have questions, search on the QNX documentation.
To deploy and debug your own Hello World application, you need a QNX Software Development Platform (SDP) 7.0 license. You can get a trial from the 30 Day Evaluation on the QNX website. Instructions are provided on the page.
Follow the instructions from QNX to download and install the QNX Software Center (QSC).
Warning: you must install SDP 7.0. If you install 7.1 or newer, things may not work.
Open the QNX Software Center and install the SDP 7.0. Follow the QNX SDP Documentation for details. See a summary of the instructions below:
Make sure to select
aarch64le from the Target Architectures, as this is the Apalis iMX8 architecture.
Application development for QNX is done with the Momentics IDE. It is also installable from the QNX Software Center with few clicks:
Open the Momentics IDE. It can be launched from the QNX Software Center:
On previous steps, you have discovered the board IP address from the QNX command line. You will use it to configure the target device on Momentics.
Once the target is configured, you can switch to the QNX System Information perspective of the IDE to check if the device connection was successful. See a summary of the steps below:
On Momentics, create a new QNX Project > QNX Executable named
hello-world for the CPU Variant
aarch64le. On the configuration bar on the top on the IDE, select Debug, the hello-world project, and the board you've set up on the previous step, then click on the Debug button and the IDE will deploy the binary to the board and run it:
All support for the QNX software is done through our network of accredited partners, including BlackBerry/QNX. Toradex does not provide in-house technical support for your QNX. However, we are happy to help you get in touch with our partners if you need to. To know more, select the most suitable partner from the Toradex Partners (QNX) and fill the contact form provided on the respective partner page, or contact our sales team.
For more information about how to do QNX development head over to the extensive partner documentation.
You must do some customization on the BSP, even if only to prepare the system for production by e.g. removing debug features. You can do it by yourself or through one of our proven partners, including QNX themselves. To get the QNX BSP source-code for Apalis iMX8QM, you must contact our sales team.
The QNX documentation is a great starting point. QNX also provides training, if you are interested get in contact with our sales team and they will connect you to the closest QNX sales representative.
Popular graphical frameworks are ported to run on QNX. Our partners provide some of them:
You must contact our partners to learn more about how to run their framework on QNX.
The QNX BSP for Apalis iMX8 does not come with screen and touch enabled by default, since the screen and the touch packages are provided in addition to the BSP source code. Toradex integrates them on the current Partner Demo Image binary for your convenience. Keep in mind that only the Toradex Capacitive Touch Display 10.1" LVDS is supported out-of-the-box and that the HDMI interface is not included in this BSP port.
When you obtain access to the BSP, you can also access the BSP documentation from QNX in PDF format. In this documentation, a chapter is specific for explaining how to integrate both screen and touch to the BSP.
If you want to use another display and touch or use the HDMI interface, you must do extra BSP customization.
These release notes are strictly related to the test of the QNX Partner Demo Images in Toradex hardware. These notes are not associated with QNX or the QNX software releases.
Download offline installers and older releases of the Partner Demo Image in this section.
Please get in contact with our sales team, and they will connect you to the closest QNX sales representative for information about developer seats, runtime licenses, and more.