在安裝前還需要進(jìn)行簡單的修改。解壓 zip 壓縮包后,在 image.json 文件中 filelist 添加 IMX-DTB。
"name": "mmcblk0", "partitions": [ { "partition_size_nominal": 64, "offset_in_sectors": 0, "want_maximised": false, "content": { "filesystem_type": "FAT", "filelist": [ "qnx-ifs", "IMX-DTB" ],
下載 Apalis-iMX8_Reference-Multimedia-Image-Tezi_5.7.6+build.29.tar,解壓 Reference-Multimedia-Image-apalis-imx8.bootfs.tar.xz。根據(jù)實際使用 Apalis iMX8QM 和 Ixora 硬件版本,找到對應(yīng)的 dtb 文件將其重命名為 IMX-DTB,并放到上面 image.json 所在的目錄。最后在 Apalis iMX8QM 上使用 Toradex Easy Installer 進(jìn)行安裝。
QNX BSP 安裝完成后,啟動時在調(diào)試串口中按 E ,就可以繼續(xù)加載 QNX 系統(tǒng)。
Welcome to QNX Initial Program Loader for Toradex Apalis i.MX8QM(Rev B) SoM (ARM Cortex-A53/A72) SCFW build version: 4612, SCFW commit: 732e719a SECO version: 3.6.2, commit: 732e719a ATF commit: 2fa8c63 Command: Press 'D' for serial download, using the 'sendnto' utility Press 'M' for eSDC download, IFS filename MUST be 'QNX-IFS' Press 'E' for eMMC download, IFS filename MUST be 'QNX-IFS' eMMC download... load image done. Found image @ 0x88000000 Loading FDT @ 0x80400000 Jumping to startup @ 0x80800800
ARM trusted firmware is enabled Hypervisor support disabled board_smp_num_cpu: 6 cores MMU: 16-bit ASID 40-bit PA TCR_EL1=00000012b5183519 ARM GIC-500 r1p1, arch v3.0 detected board_smp_num_cpu: 6 cores board_smp_num_cpu: 6 cores
在 IDE 中點擊 File -> New -> QNX Project,選擇 C/C++ 類型中的 QNX Executable 項目模板。
Apalis iMX8QM 采用的是 64bit SoC,所以在 CPU Variant 中選擇 aarch64le 構(gòu)架。
在該項目文件夾上右擊 Build Project 即可編譯。完成后在 build/aarch64le-debug 目錄下生成編譯好的可執(zhí)行二進(jìn)制文件。
開始調(diào)試之前,需要知道運行 QNX 8 的 Apalis iMX8QM 的 IP 地址。在調(diào)試終端輸入 ifconfig命令后可以在 ffec0 接口中看到自動獲取的 IP。默認(rèn)的 QNX 8 采用隨機(jī) MAC 地址,所以每次重啟后自動獲取的 IP 將會發(fā)生變化。
# ifconfig ffec0: flags=8843
metric 0 mtu 1500 options=80008 ether 62:73:64:54:6c:85 inet6 fe80::cf96:1b48:a747:aff1%ffec0 prefixlen 64 scopeid 0x5 inet6 fdcf:4b94:78d4:0:fdbd:f8e7:dce3:81ed prefixlen 64 autoconf inet6 fdcf:4b94:78d4::274 prefixlen 128 inet 192.168.3.196 netmask 0xffffff00 broadcast 192.168.3.255 media: Ethernet autoselect (1000baseT) status: active nd6 options=1 IDE 和設(shè)備上運行的 qconn 代理建立 IP 連接,從而實現(xiàn)應(yīng)用程序的調(diào)試、監(jiān)控和分析。qconn 在 QNX 的 buildfile 中默認(rèn)已經(jīng)添加,并開機(jī)自動運行。在調(diào)試終端里運行下面命令可以查看運行情況,默認(rèn)監(jiān)聽 8000 端口。
# pidin | grep qconn 114714 1 usr/sbin/qconn 10r SIGWAITINFO 114714 2 usr/sbin/qconn 10r RECEIVE