第二章 QNX开发环境搭建:QNX Momentics IDE安装、QNX SDK配置、目标机与宿主机连接

好,咱们直接进入正题。做QNX开发,第一步就是把吃饭的家伙给支棱起来。很多新手一上来就急着写代码,结果环境没配好,折腾半天连个Hello World都跑不起来。我见过太多这样的案例了。

这一章,我带你一步步把QNX Momentics IDE装好,把SDK配明白,最后让宿主机和目标机能正常通信。说白了,就是让你的电脑能指挥车机干活。

2.1 QNX Momentics IDE安装

QNX Momentics IDE,本质上是一个基于Eclipse的集成开发环境。嗯,别一听Eclipse就觉得老土,QNX官方对它的定制做得相当到位。我个人习惯用7.0版本,稳定,坑少。

2.1.1 获取安装包

你需要从QNX官网或者你们公司的内部服务器获取安装包。注意,QNX的软件授权是跟硬件绑定的,别随便拿个破解版往项目里用,出了合规问题很麻烦。

  • QNX Momentics IDE 7.0:主安装程序,约1.2GB
  • QNX Software Center:用来管理SDK和补丁的工具
  • License文件:.lic格式,激活用
注意: 我曾经遇到过有人把Windows版和Linux版的安装包搞混了。宿主机如果是Ubuntu 18.04/20.04,就下Linux版;如果是Windows 10/11,就下Windows版。别问我怎么知道的,那次项目延期了两天。

2.1.2 安装步骤

安装过程其实不复杂,但有几个关键点你得盯住了。

  1. 双击安装包,选择安装路径。我建议别用默认的C盘,尤其是Windows系统,后面编译大型项目时磁盘空间容易炸。我一般放在 D:\QNX\ 或者 /opt/qnx/
  2. 选择组件。新手建议全选,老手可以只选自己需要的BSP包。但说实话,全选也就多占几个G,省得后面缺东西再补。
  3. 配置License。安装过程中会提示你导入.lic文件。如果你用的是浮动License,需要配置License Server的地址。
  4. 完成安装。重启电脑,让环境变量生效。
小技巧: 安装完成后,先别急着打开IDE。去安装目录下看看 qnxconfig 文件,确认一下 QNX_TARGETQNX_HOST 这两个环境变量有没有自动配好。我习惯手动检查一遍,心里踏实。

2.2 QNX SDK配置

IDE装好了,但光有壳子不行,你得给它装上“大脑”——也就是SDK。SDK里包含了编译器、链接器、头文件、库文件,还有你目标平台的BSP。

2.2.1 通过QNX Software Center安装SDK

QNX Software Center(简称QSC)是官方推荐的SDK管理工具。打开它,你会看到一个类似应用商店的界面。

  • 登录账号:用你的QNX官网账号登录。如果没有,找你们公司的管理员申请。
  • 选择SDK版本:比如 QNX SDP 7.0。注意,SDP是Software Development Platform的缩写,别选成别的。
  • 选择BSP包:根据你的目标硬件选。比如你是做瑞萨R-Car H3的,就选 BSP for R-Car H3
  • 下载并安装:点击Install,等进度条跑完。这个过程可能比较长,取决于你的网速。我建议找个网络好的时间段搞,比如午休时。

2.2.2 手动配置SDK路径

有时候QSC自动配置会出问题,或者你从别处拷贝了SDK包。这时候就需要手动配置了。

打开QNX Momentics IDE,进入:

Window -> Preferences -> QNX -> QNX SDK Locations

点击 Add,选择你的SDK根目录。比如:

/opt/qnx/qnx700/

或者Windows下的:

D:\QNX\qnx700\

添加完成后,IDE会自动扫描并列出可用的BSP和工具链。如果扫描失败,检查一下路径下有没有 .qnx_config 文件。

核心要点: SDK路径配置错误,是新手最常见的坑。配置完成后,建议创建一个空工程,编译一下,看看能不能生成可执行文件。能生成,说明环境通了。

2.3 目标机与宿主机连接

环境搭好了,代码也能编译了。但代码是跑在目标机上的,怎么把编译好的二进制文件传过去?怎么调试?这就涉及到目标机与宿主机的连接了。

2.3.1 连接方式选择

QNX支持多种连接方式,我按推荐程度排个序:

连接方式 适用场景 速度 稳定性
以太网(TCP/IP) 开发板、量产车机
串口(UART) 早期调试、无网络环境
USB(g_ether) 便携设备、临时调试 中等 中等
JTAG/SWD 硬件调试、裸机阶段 极高

在实际项目中,我最常用的是以太网。为什么呢?因为车机一旦启动,网络基本是通的,而且速度快,传大文件不费劲。串口我一般只用来查看内核启动日志。

2.3.2 配置目标机网络

目标机启动后,你需要给它配个IP地址。假设你的宿主机IP是 192.168.1.100,目标机可以配成 192.168.1.101

在目标机的QNX Shell里执行:

ifconfig en0 192.168.1.101 netmask 255.255.255.0 up
route add default 192.168.1.1

然后测试连通性:

ping 192.168.1.100

如果能ping通,恭喜你,网络通了。如果ping不通,先检查网线,再检查防火墙。我遇到过好几次,都是Windows防火墙把QNX的端口给拦了。

注意: 目标机的IP地址最好固定下来,不要用DHCP。为什么?因为IDE里的调试配置是跟IP绑定的,IP一变,你就得重新配,很烦。我一般会在BSP的启动脚本里写死IP。

2.3.3 配置QNX Momentics IDE连接

打开IDE,进入:

Window -> Show View -> Other -> QNX -> Target Navigator

在Target Navigator视图里,右键点击空白处,选择 New QNX Target

  • Target Name:随便起个名字,比如 MyCar
  • Connection Type:选择 QNET(基于以太网的QNX专有协议)。
  • Hostname or IP:输入目标机的IP,比如 192.168.1.101
  • Port:默认8000,不用改。

点击 Finish。如果一切正常,你会看到目标机出现在列表里,状态显示为 Connected

2.3.4 验证连接:跑一个Hello World

连接建立后,我们来验证一下。创建一个新的QNX C/C++项目,写个简单的Hello World:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    printf("Hello from QNX!\n");
    return EXIT_SUCCESS;
}

编译通过后,右键项目 -> Run As -> QNX C/C++ Application。IDE会自动把可执行文件通过QNET传到目标机,并启动运行。

如果控制台输出了 Hello from QNX!,说明整个环境搭建成功了。如果没有,检查一下目标机的 qconn 进程有没有启动。在目标机上执行:

ps -ef | grep qconn

如果没看到 qconn,手动启动它:

qconn &
避坑指南: 我曾经遇到过一个问题:目标机明明能ping通,但IDE就是连不上。折腾了半天,发现是目标机上的 qconn 进程监听的端口被占用了。用 netstat -an | grep 8000 检查一下,如果端口被占用,换个端口或者杀掉占用进程。

2.4 本章小结

这一章的内容,说白了就是三件事:装IDE、配SDK、连目标机。每一步都有坑,但只要你按照我上面说的步骤来,基本不会出大问题。

我个人觉得,环境搭建这个环节,耐心比技术更重要。别急着往下走,每一步都验证一下。就像盖房子,地基没打好,后面装修得再漂亮也白搭。

下一章,我们会真正开始接触BSP的启动流程。到时候,你会用到今天搭建好的环境来编译和烧写第一个BSP镜像。嗯,那才是真正有意思的部分。