第2章:QNX开发环境搭建

说实话,搭建开发环境这件事,看着简单,但坑不少。

我见过太多新手,卡在环境搭建这一步就放弃了。其实没那么可怕。今天我就带你一步步搞定QNX Momentics IDE安装、虚拟机配置、BSP编译,还有目标机和宿主机连接。

2.1 QNX Momentics IDE安装

QNX Momentics IDE,说白了就是QNX的“大本营”。

你写代码、编译、调试,基本都离不开它。我个人习惯用Eclipse版本,因为插件生态好,用起来顺手。

安装步骤

  1. 下载安装包:去QNX官网下载Momentics IDE。注意版本匹配,别下错了。
  2. 安装依赖:Windows下需要Java运行环境。Linux下需要libstdc++等库。我建议提前装好,省得后面报错。
  3. 运行安装程序:双击安装包,一路Next。嗯,这里要注意:安装路径不要有中文,否则编译时会出奇怪的问题。
  4. 配置工作空间:启动后,它会让你选工作空间。我习惯单独建一个文件夹,比如D:\qnx_workspace,方便管理。
小技巧:安装完成后,建议先装一下QNX官方提供的补丁包。我曾经因为没打补丁,调试时断点死活不生效,折腾了一下午。

2.2 QNX虚拟机配置

没有真实硬件?没关系,虚拟机也能跑QNX。

我常用的是VMware Workstation。当然,VirtualBox也行,但VMware对QNX的支持更好一些。

虚拟机创建要点

  • 操作系统选择:选“Other Linux 2.6.x kernel”。别选错了,否则启动不了。
  • 内存分配:至少2GB。我建议4GB,因为QNX系统本身不占太多,但你要跑应用和调试工具。
  • 磁盘大小:20GB起步。BSP编译产物挺大的,别省这点空间。
  • 网络模式:选桥接模式。这样宿主机和目标机才能互相通信。
注意:虚拟机网卡要选e1000,不要选VMXNET3。QNX对e1000驱动支持最稳定。我踩过这个坑,VMXNET3死活ping不通。

安装QNX系统到虚拟机

把QNX的ISO镜像挂载到虚拟光驱,启动虚拟机。按提示安装就行。安装完成后,记得配置IP地址。

# 查看网络接口
ifconfig -a

# 配置IP(假设网卡是en0)
ifconfig en0 192.168.1.100 netmask 255.255.255.0

# 测试连通性
ping 192.168.1.1

为什么会这样?因为QNX默认是DHCP获取IP,但很多开发环境没有DHCP服务器。所以手动配IP是最稳妥的。

2.3 QNX BSP编译

BSP,全称Board Support Package。说白了,就是让QNX认识你的硬件。

每个板子都有自己的BSP。比如x86的、ARM的、PowerPC的。我当年第一次编译BSP时,看着一堆文件头都大了。后来发现,其实流程很固定。

编译流程

  1. 获取BSP源码:从QNX官网或板卡厂商处下载。注意版本要和你的QNX系统匹配。
  2. 设置环境变量
# 设置QNX环境
source /opt/qnx660/qnx660-env.sh

# 进入BSP目录
cd /path/to/bsp

# 查看支持的板卡配置
ls boards/
  1. 开始编译
# 以x86为例
make BOARD=x86_64_all

# 编译完成后,产物在output目录
ls output/

核心文件:编译完成后,你会得到几个关键文件:

  • ifs-qnx.bin:系统镜像文件,启动时加载。
  • build-qnx.sh:构建脚本,记录了编译参数。
  • *.so:驱动模块,比如网卡驱动、串口驱动。

我曾经在编译ARM版BSP时,忘记指定交叉编译器路径,结果编译出来的镜像在板子上跑不起来。嗯,这里要注意:交叉编译器路径一定要配对。

2.4 目标机与宿主机连接

环境搭好了,BSP也编译了。接下来就是让宿主机(你的电脑)和目标机(虚拟机或开发板)连起来。

连接方式

方式 适用场景 优缺点
串口 调试初期,无网络环境 稳定,但速度慢
以太网 正常开发调试 速度快,支持远程调试
USB 部分开发板支持 方便,但驱动依赖强

我个人最常用的是以太网。因为QNX的调试工具(比如qconn、pdebug)都是基于网络的。

配置qconn服务

qconn是QNX的远程连接服务。目标机上必须启动它,宿主机才能连上来。

# 在目标机上启动qconn
qconn &

# 查看qconn是否运行
ps -A | grep qconn

# 默认端口是8000,可以修改
qconn -p 8000 &

宿主机连接目标机

在Momentics IDE中,配置目标机连接:

  1. 打开IDE,点击菜单栏 Window → Show View → Target Navigator
  2. 右键空白处,选择 New QNX Target
  3. 输入目标机的IP地址和端口(默认8000)。
  4. 点击 Finish。如果连接成功,你会看到目标机的文件系统。
避坑指南:我曾经因为防火墙没关,IDE一直连不上目标机。检查一下宿主机和目标机的防火墙,把8000端口放行。或者干脆先关掉防火墙测试。

测试连接

连接成功后,可以试试远程执行命令:

# 在IDE的Target Navigator中,右键目标机
# 选择 "Launch QNX System Information"
# 你会看到目标机的CPU、内存、进程等信息

如果能看到这些信息,恭喜你,环境搭建成功了!

说实话,环境搭建这一步,很多人觉得繁琐。但你想,后面30章的实战内容,都依赖这个基础。花点时间把这一步走稳,后面会顺畅很多。

下一章,我们开始真正进入QNX实时调度。我会带你写第一个实时任务,看看QNX的调度器到底有多“硬”。