在安装前还需要进行简单的修改。解压 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<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=80008<VLAN_MTU,LINKSTATE>
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 <full-duplex>)
status: active
nd6 options=1<PERFORMNUD>
IDE 和设备上运行的 qconn 代理建立 IP 连接,从而实现应用程序的调试、监控和分析。qconn 在 QNX 的 buildfile 中默认已经添加,并开机自动运行。在调试终端里运行下面命令可以查看运行情况,默认监听 8000 端口。
# pidin | grep qconn
114714 1 usr/sbin/qconn 10r SIGWAITINFO
114714 2 usr/sbin/qconn 10r RECEIVE