第2章:QNX开发环境搭建
说实话,搭建开发环境这件事,看着简单,但坑不少。
我见过太多新手,卡在环境搭建这一步就放弃了。其实没那么可怕。今天我就带你一步步搞定QNX Momentics IDE安装、虚拟机配置、BSP编译,还有目标机和宿主机连接。
2.1 QNX Momentics IDE安装
QNX Momentics IDE,说白了就是QNX的“大本营”。
你写代码、编译、调试,基本都离不开它。我个人习惯用Eclipse版本,因为插件生态好,用起来顺手。
安装步骤
- 下载安装包:去QNX官网下载Momentics IDE。注意版本匹配,别下错了。
- 安装依赖:Windows下需要Java运行环境。Linux下需要libstdc++等库。我建议提前装好,省得后面报错。
- 运行安装程序:双击安装包,一路Next。嗯,这里要注意:安装路径不要有中文,否则编译时会出奇怪的问题。
- 配置工作空间:启动后,它会让你选工作空间。我习惯单独建一个文件夹,比如
D:\qnx_workspace,方便管理。
2.2 QNX虚拟机配置
没有真实硬件?没关系,虚拟机也能跑QNX。
我常用的是VMware Workstation。当然,VirtualBox也行,但VMware对QNX的支持更好一些。
虚拟机创建要点
- 操作系统选择:选“Other Linux 2.6.x kernel”。别选错了,否则启动不了。
- 内存分配:至少2GB。我建议4GB,因为QNX系统本身不占太多,但你要跑应用和调试工具。
- 磁盘大小:20GB起步。BSP编译产物挺大的,别省这点空间。
- 网络模式:选桥接模式。这样宿主机和目标机才能互相通信。
安装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时,看着一堆文件头都大了。后来发现,其实流程很固定。
编译流程
- 获取BSP源码:从QNX官网或板卡厂商处下载。注意版本要和你的QNX系统匹配。
- 设置环境变量:
# 设置QNX环境
source /opt/qnx660/qnx660-env.sh
# 进入BSP目录
cd /path/to/bsp
# 查看支持的板卡配置
ls boards/
- 开始编译:
# 以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中,配置目标机连接:
- 打开IDE,点击菜单栏 Window → Show View → Target Navigator。
- 右键空白处,选择 New QNX Target。
- 输入目标机的IP地址和端口(默认8000)。
- 点击 Finish。如果连接成功,你会看到目标机的文件系统。
测试连接
连接成功后,可以试试远程执行命令:
# 在IDE的Target Navigator中,右键目标机
# 选择 "Launch QNX System Information"
# 你会看到目标机的CPU、内存、进程等信息
如果能看到这些信息,恭喜你,环境搭建成功了!
说实话,环境搭建这一步,很多人觉得繁琐。但你想,后面30章的实战内容,都依赖这个基础。花点时间把这一步走稳,后面会顺畅很多。
下一章,我们开始真正进入QNX实时调度。我会带你写第一个实时任务,看看QNX的调度器到底有多“硬”。