On the article, we summarize the process of building a QNX BSP for Apalis iMX8QM 4GB WB V1.0B with the same configuration as our Partner Demo Image - QNX Neutrino Real-time Operating System.
The NXP binaries for SECO and SCFW are pieces of software from NXP that cannot be redistributable by QNX, therefore you must get them by yourself. There is not a super easy way to get those packages, but the simple fact that you are granted straightforward instructions already makes your life easier.
Note: a Yocto build may take a few hours, you may want to execute this step before doing anything else, and then go grab a cup of coffee or watch one of our webinars about QNX.
Here is what you need to do:
To illustrate copying files to a temporary directory:
$ cd <path to your Yocto build setup> $ cd deploy/images/apalis-imx8 $ mkdir ~/tmp-seco-scfw-binaries $ cp imx-boot-tools/mkimage_imx8 ~/tmp-seco-scfw-binaries/ $ cp imx-boot-tools/mx8qm-ahab-container.img ~/tmp-seco-scfw-binaries/ $ cp imx-boot-tools/scfw_tcm.bin ~/tmp-seco-scfw-binaries/scfw_tcm_b0.bin $ cp imx-boot-tools/bl31-imx8qm.bin ~/tmp-seco-scfw-binaries/bl31.bin
Open the QNX Software Center and install QNX packages. You must have previously followed the prerequisites, and therefore already have QNX SDP 7.0 installed.
You must install the following packages:
In addition, you need to evaluate what other generic packages you want or need to install!
To access the documentation PDF, go to the directory where you installed the SDP 7.0. It will be named
qnx700 if you used the default name. Inside it, there is the BSP directory and a sub-directory with the documentation:
$ cd qnx700/bsp/ $ tree . ├── apalis_imx8qm │ ├── BSP_RN_Toradex_Apalis_iMX8QM_EVB.txt │ └── SDP7_BSP_UG_Toradex_Apalis_iMX8QM.pdf └── BSP_apalis-imx8qm_br-700_be-700_SVN915708_JBN13.zip 1 directory, 3 files
Since this tutorial is written with the QNX documentation as reference, it is very usefult that you have it at hand.
On the previous step, you have found the BSP source-code as a ZIP file. Momentics can import that as-is, no need to unpack it. Follow the dialogs and you are good to go:
Take note of the path where you choose to import the BSP, you will need it in the next step!
Hopefully when you reach this point, the Yocto build will be done and you will already have access to the SECO and SCFW binaries. Copy the files to the paths relative to where you have imported the BSP on the previous step:
Attention: the QNX PDF document wrongly states $BSP_ROOT_DIR/images/imx-mkimage/ instead of $BSP_ROOT_DIR/images/tools/imx-mkimage/, if you use it the build will fail.
To illustrate copying files from the temporary directory:
$ cd <path for your BSP root directory> $ cp ~/tmp-seco-scfw-binaries/mkimage_imx8 images/tools/imx-mkimage/ $ cp ~/tmp-seco-scfw-binaries/mx8qm-ahab-container.img images/tools/imx-mkimage/ $ cp ~/tmp-seco-scfw-binaries/scfw_tcm_b0.bin images/tools/imx-mkimage/ $ cp ~/tmp-seco-scfw-binaries/bl31.bin src/hardware/ipl/boards/imx8qm-cpu/
We make the following BSP customization for a nice out-of-the-box experience. It is optional and you must evaluate by yourself what is suitable to include for your product. The customization steps are provided as-is for your reference and are not maintained by Toradex:
Patches are provided in a .patch file. You can initialize the BSP repository as a Git repository and use Git to apply the patches, which we illustrate in this section. Alternatively you can apply the patches directly without using Git.
Head to the BSP repository that was set up when you imported the BSP into Momentics. Initialize it and commit all files:
$ cd <path to BSP import location inside the Momentics workspace> $ git init $ git add . $ git commit -m "BSP: import QNX BSP from ZIP file"
Downlaod and apply the patch file:
$ wget -O toradex-qnx-bsp.patch https://docs.toradex.cn/108541-toradex-qnx-bsp-patches.patch $ git am toradex-qnx-bsp.patch
Make sure that the patches applied using
git log. The command output will be similar to the one below:
$ git log --oneline 7dd84ab (HEAD -> master) TEZI: update version of Ixora to newer one 5a4ba30 EULA: add NXP EULA 07a78be TEZI: update TEZI fields to make image compliant 593fbba ipl: load QNX IFS from eMMC by default 061b63c build: add mtouch abb0ce8 build: add libpng16 53186b1 Makefile: run "make all" for image build ec01bdd build: add generic libs for OpenGL ES e452923 build: add graphics support according to doc 5bb297d Momentics: add image build targets 2ab0bb5 .gitignore: ignore build files and artifacts c097844 BSP: import QNX BSP from ZIP file
Restart the Momentics IDE, otherwise it may not reflect all changes that were applied with the patches, even if you
Refresh the project.
To build the BSP:
C/C++perspective selected and that you can see the
Project Explorerwindow docked to the left-side of the screen.
apalis-imx8qm, unless you have modified it when importing the BSP.
Build Projectfrom the dialog.
The final build output is the QNX image packed with the Toradex Easy Installer format, compressed as a ZIP file. It will be present in the sub-directory
images with a name similar to
Follow the instructions from Toradex Easy Installer.