Search by Tags

Partner Demo Image - QNX Neutrino Real-time Operating System

 
Applicable for

Article updated at 02 Oct 2020
Compare with Revision


Subscribe for this article updates

BlackBerry QNX

From BlackBerry® QNX - About us:

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.

QNX Neutrino Real-time Operating System (RTOS)

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.

Supported Hardware and Features

The evaluation BSP supports the following hardware and features:

Hardware

Features

  • Boot from internal eMMC
  • UART
  • Gigabit Ethernet
  • SPI
  • I2C
  • eMMC/SD
  • USB
  • Display driver (for the Capacitive Touch Display 10.1" LVDS)
    • Touch screen (Atmel mXT1066T2 used by the aforementioned display)
  • I2S audio (via on-SoM SGTL5000 codec)
  • CAN

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.

Intended Use

The pre-built evaluation image is provided as-is, meant for evaluation only, and it may be suitable for application development as long as you don't need extra dependencies.

It is expected that you customize the BSP and build your image if you need to add your dependencies before production.

How to Get Started

This section provides instructions for you to get started with QNX quickly.

Pre-requisites

Flash the Image to the Computer on Module

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.


  • Choose the Right QNX Image for Your Carrier Board

    Choose the Right QNX Image for Your Carrier Board

The version of Ixora is printed on the label glued to the carrier board:


  • How to Find Out the Version of my Ixora

    How to Find Out the Version of my Ixora

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.

Get the Board IP

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:

# 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 192.168.10.41.

Run Graphical Application Samples

Some basic graphical application samples are provided, mostly to validate that the graphic and the display software stacks are working.

CPU Only

Run the 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
...

GPU Accelerated with OpenGL ES

Run the gles2-gears or 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 6.2.4.190076
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
...

Touch Screen Enabled

Run the calib-touch command to start a graphical application to calibrate the touch screen. We use it only to verify that touch is working:

# calib-touch

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)
...

Hello World Deploy and Debug

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.

Register for a QNX SDP License

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.

Install the QNX Software Center

Follow the instructions from QNX to download and install the QNX Software Center (QSC).

Install the QNX Software Development Platform (SDP) 7.0

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.

Install the QNX Momentics IDE

Application development for QNX is done with the Momentics IDE. It is also installable from the QNX Software Center with few clicks:

Configure a Target Device

Open the Momentics IDE. It can be launched from the QNX Software Center:


  • Launch Momentics

    Launch Momentics

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:

Create a Hello World from Template

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:

Next Steps

For more information about how to do QNX development head over to the extensive partner documentation.

BSP Customization

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.

Application Development, IDE Usage, Training, and More

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.

Graphical User Interface

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.

Display and Touchscreen Configuration

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.

Release Notes

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.

7.0.4

  • First release of the QNX Partner Demo Image for Apalis iMX8QM 4GB WB IT. Two pre-built binaries are provided, each for a specific subset of carrier boards:
    • Ixora Carrier Board V1.1B
    • Ixora Carrier Board V1.2A
    • Apalis Evaluation Board V1.1C

Downloads

Download offline installers and older releases of the Partner Demo Image in this section.

7.0.4

Licensing Information

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.