- 关键词:ARM,QNX,NXP
- 作者:By Toradex 胡珊逢
- 摘要:嵌入式领域的部分应用对安全、可靠、实时性有切实的需求,在诸多实现该需求的方案中,QNX 是经行业验证的选择。在 QNX SDP 8.0 上 BlackBerry 推出了 QNX Everywhere 项目,个人用户可以出于非商业目的免费使用 QNX 操作系统。得益于 Toradex 和 QNX 的良好合作伙伴关系,用户能够在 Apalis iMX8QM 和 Verdin iMX8MP 模块上轻松测试和评估 QNX 8 系统。下面将基于 Apalis iMX8QM 介绍如何运行 QNX。
简介
嵌入式领域的部分应用对安全、可靠、实时性有切实的需求,在诸多实现该需求的方案中,QNX 是经行业验证的选择。在 QNX SDP 8.0 上 BlackBerry 推出了 QNX Everywhere 项目,个人用户可以出于非商业目的免费使用 QNX 操作系统。得益于 Toradex 和 QNX 的良好合作伙伴关系,用户能够在 Apalis iMX8QM 和 Verdin iMX8MP 模块上轻松测试和评估 QNX 8 系统。下面将基于 Apalis iMX8QM 介绍如何运行 QNX。
下载 QNX首先,在 QNX 网站上注册帐号,待审核通过后,根据提示在 License Manager 页面将授权部署到自己的帐号上。接下来下载 QNX Software Center,这里建议使用 Linux Host 本版。
安装完 QNX Software Center 后,启动 QNX Software Center 点击 Add Installation。
分别选择 QNX Momentics IDE 和 QNX Software Development Platform 8.0。
在 QNX Software Center 中点击 Install New Packages。
并在 Availables 标签页中选择本次演示使用 Apalis iMX8QM 设备。
编译 QNX BSP打开 Momentics IDE,依次点击 File > Import,在 QNX 文件夹中选择 QNX Source Package and BSP。
然后点击下面的 Browse for ZIP Archive。具体的路径取决于之前选择的安装目录,例如 /home/ben/qnx800/bsp 下的 BSP_apalis-imx8qm_br-hw-rel_be-800_SVN989187_JBN69.zip 是适用于 Apalis iMX8QM 的 BSP 文件。
导入 BSP 后,在 IDE 的项目浏览窗口中就可以编译该 BSP 所需的所有文件。这些文件和目录的具体说明可以参考 QNX 的网页。
在 IDE 中右击该项目文件夹,然后点击 Build Project。期间在下方的 Console 标签页面会显示完整的编译过程。
当编译结束后,在项目的 image 文件下即会出现一个 zip 压缩包。
在安装前还需要进行简单的修改。解压 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
点击 IDE 中的调试图标旁边的下拉三角形,选择 Debug As -> C/C++ QNX Application。
在弹出的对话框中点击下方的 New QNX Target 添加需要调试的设备。
输入 Apalis iMX8QM 的 IP 地址。然后选中添加的设备,并点击 OK。
然后 IDE 会进入调试界面,在这里可以进行调试操作如单步运行。
总结文章介绍了如何借助 QNX Everywhere 项目在 Apalis iMX8QM 使用 QNX 系统。这里主要涉及 QNX 开发环境安装、配置和应用开发说明,关于 QNX OS 定制、应用集成等请参考 QNX 官方资料,为您的项目选择最合适方法。
发布时间:2024年11月29日 15:33 人气: 审核编辑(王静 )