2、开发环境搭建:QNX Momentics IDE安装、QNX SDK配置、交叉编译工具链、目标机与宿主机连接

好,咱们正式开始动手了。这一章我带你把开发环境搭起来。说实话,很多初学者卡就卡在这一步——环境没配好,后面全是坑。我当年刚接触QNX时,光IDE和SDK的版本匹配就折腾了两天。嗯,咱们今天争取半小时搞定。

2.1 QNX Momentics IDE 安装

QNX Momentics IDE,说白了就是一套基于Eclipse的集成开发环境。QNX官方把它打包好了,你不需要自己去拼凑插件。

安装步骤:

  1. 获取安装包:去QNX官网的Software Center下载。注意,你需要一个有效的License。我个人习惯用QNX 6.6或7.0版本,这两个版本比较稳定。
  2. 运行安装程序:在Windows或Linux宿主机上直接运行。我建议装在纯英文路径下,别带中文或空格,否则后面编译时可能出一些莫名其妙的错误。
  3. 选择组件:安装时,记得勾选“QNX Momentics IDE”和“QNX SDK for Apps and Media”。如果你做BSP开发,还要勾选“QNX Board Support Package”相关的组件。
  4. 配置Workspace:启动IDE后,它会让你选一个工作空间。我建议单独建一个目录,比如 C:\qnx_workspace,别跟其他项目混在一起。
注意: 我曾经遇到过IDE启动后卡在“Loading org.eclipse...”界面。后来发现是JDK版本不兼容。QNX Momentics IDE需要JDK 8或11,别用太高版本。

2.2 QNX SDK 配置

SDK配置,其实就是在IDE里告诉它“你的QNX系统装在哪”。这一步很关键,配错了交叉编译链根本找不到头文件。

配置流程:

  1. 打开IDE,点击菜单栏 Window → Preferences → QNX → QNX SDKs
  2. 点击“Add”按钮,选择你安装QNX SDK的根目录。比如 C:\QNX700/opt/qnx700
  3. IDE会自动扫描SDK中的目标架构。你会看到类似 x86_64aarch64learmle-v7 等选项。根据你的目标板选一个。
  4. 点击“Apply and Close”。
小技巧: 如果你有多个版本的SDK(比如6.6和7.0),可以都加进来。在创建工程时再选择具体用哪个。我一般会保留两个版本,因为有些老项目必须用6.6编译。

2.3 交叉编译工具链

交叉编译,说白了就是在你的PC上编译出能在ARM或x86目标板上运行的代码。QNX的工具链是 qcc,它封装了底层的GCC。

验证工具链是否可用:

# 打开命令行,进入SDK目录
cd C:\QNX700\host\win64\x86_64\usr\bin

# 查看qcc版本
qcc --version

# 查看支持的架构
qcc -V

你会看到类似这样的输出:

qcc: QNX C/C++ Compiler (GCC) 8.3.0
Supported architectures:
  x86_64
  aarch64le
  armle-v7

我在项目中遇到过一个问题:明明装了SDK,但命令行里找不到 qcc。后来发现是环境变量没配。你需要把 C:\QNX700\host\win64\x86_64\usr\bin 加到系统的 PATH 里。

环境变量配置示例(Windows):
QNX_HOST=C:\QNX700\host\win64\x86_64
QNX_TARGET=C:\QNX700\target\qnx7
PATH=%QNX_HOST%\usr\bin;%PATH%

2.4 目标机与宿主机连接

环境搭好了,怎么把程序跑在目标板上?你需要建立宿主机(你的PC)和目标机(开发板)之间的连接。QNX支持多种方式,我常用的是以太网和串口。

以太网连接(推荐):

  1. 用网线把开发板和PC连到同一个交换机上,或者直连。
  2. 给开发板设置一个静态IP,比如 192.168.1.100。你的PC设成 192.168.1.101
  3. 在开发板上启动 qconn 服务。这个服务是QNX的调试代理。
  4. 在IDE中配置目标机:Window → Preferences → QNX → Target Navigator,添加一个新目标,填上IP地址和端口(默认8000)。

串口连接(备用):

如果网络不通,串口是最后的救命稻草。用一根USB转串口线连到开发板的调试串口。在IDE中配置串口参数:波特率115200、数据位8、停止位1、无校验。

避坑指南: 我曾经在连接目标机时,IDE一直报“Connection refused”。折腾了半天,发现是开发板上的 qconn 没启动。你可以在开发板上手动执行 qconn & 来启动它。另外,防火墙也可能拦截8000端口,记得放行。

2.5 验证环境是否搭建成功

最后,咱们写一个简单的“Hello World”来验证整个链路是否通畅。

步骤:

  1. 在IDE中新建一个QNX C Project,选择 QNX Executable,目标架构选 x86_64 或你的板子对应的架构。
  2. main.c 中写:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    printf("Hello from QNX!\n");
    return EXIT_SUCCESS;
}
  1. 点击编译按钮(锤子图标)。如果控制台输出 Build Finished,说明交叉编译工具链没问题。
  2. 右键工程 → Run As → QNX Application。IDE会自动把可执行文件传到目标机并运行。如果终端打印出“Hello from QNX!”,恭喜你,环境搭建成功!
个人经验: 第一次跑通时,我盯着那个“Hello from QNX!”看了好久。那种感觉就像你亲手把一块冰冷的开发板“唤醒”了。嗯,后面你会经历更多这样的时刻。

好了,环境搭建就到这里。下一章咱们开始写第一个真正的驱动程序——GPIO控制。到时候你会用到今天配好的所有工具链和连接方式。别偷懒,先把环境跑通再说。