第二章 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格式,激活用
2.1.2 安装步骤
安装过程其实不复杂,但有几个关键点你得盯住了。
- 双击安装包,选择安装路径。我建议别用默认的C盘,尤其是Windows系统,后面编译大型项目时磁盘空间容易炸。我一般放在
D:\QNX\或者/opt/qnx/。 - 选择组件。新手建议全选,老手可以只选自己需要的BSP包。但说实话,全选也就多占几个G,省得后面缺东西再补。
- 配置License。安装过程中会提示你导入.lic文件。如果你用的是浮动License,需要配置License Server的地址。
- 完成安装。重启电脑,让环境变量生效。
qnxconfig 文件,确认一下 QNX_TARGET 和 QNX_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 文件。
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的端口给拦了。
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 &
qconn 进程监听的端口被占用了。用 netstat -an | grep 8000 检查一下,如果端口被占用,换个端口或者杀掉占用进程。
2.4 本章小结
这一章的内容,说白了就是三件事:装IDE、配SDK、连目标机。每一步都有坑,但只要你按照我上面说的步骤来,基本不会出大问题。
我个人觉得,环境搭建这个环节,耐心比技术更重要。别急着往下走,每一步都验证一下。就像盖房子,地基没打好,后面装修得再漂亮也白搭。
下一章,我们会真正开始接触BSP的启动流程。到时候,你会用到今天搭建好的环境来编译和烧写第一个BSP镜像。嗯,那才是真正有意思的部分。