在安装前还需要进行简单的修改。解压 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。根据实际使用 Apalis iMX8QM 和 Ixora 硬件版本,找到对应的 dtb 文件将其重命名为 IMX-DTB,并放到上面 image.json 所在的目录。最后在 Apalis iMX8QM 上使用 Toradex Easy Installer 进行安装。
QNX BSP 安装完成后,启动时在调试串口中按 E ,就可以继续加载 QNX 系统。
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 构架。
在该项目文件夹上右击 Build Project 即可编译。完成后在 build/aarch64le-debug 目录下生成编译好的可执行二进制文件。
开始调试之前,需要知道运行 QNX 8 的 Apalis iMX8QM 的 IP 地址。在调试终端输入 ifconfig命令后可以在 ffec0 接口中看到自动获取的 IP。默认的 QNX 8 采用随机 MAC 地址,所以每次重启后自动获取的 IP 将会发生变化。
# 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 和设备上运行的 qconn 代理建立 IP 连接,从而实现应用程序的调试、监控和分析。qconn 在 QNX 的 buildfile 中默认已经添加,并开机自动运行。在调试终端里运行下面命令可以查看运行情况,默认监听 8000 端口。
# pidin | grep qconn 114714 1 usr/sbin/qconn 10r SIGWAITINFO 114714 2 usr/sbin/qconn 10r RECEIVE