第2章:QNX开发环境搭建

说实话,搭建开发环境这件事,很多人觉得就是装个软件而已。但我得说,QNX的环境搭建跟Linux、Windows还真不太一样。我刚开始接触QNX时,光是在虚拟机里跑起来就折腾了两天。这一章,我把这些坑都给你指出来。

2.1 QNX Software Center (QSC) 的安装与配置

QSC是QNX的软件管理中心。说白了,它就是你的软件仓库。所有开发工具、BSP包、文档,都从这里下载。

安装步骤

  1. 获取安装包:去QNX官网注册账号,下载QNX Software Center安装程序。注意,你需要一个有效的License。
  2. 运行安装:Windows下直接双击exe,Linux下给权限后运行。我个人习惯装到默认路径,省事。
  3. 登录激活:启动QSC,输入你的QNX账号和License Key。嗯,这里要注意,License分节点锁定和浮动两种,别搞混了。
我的经验:QSC的下载速度有时候很慢。我建议你选在非工作时间下载,或者用代理。我曾经因为网络问题,一个BSP包下了三回才成功。

配置要点

  • 设置镜像源:QSC默认连的是国外服务器。你可以配置国内镜像,速度会快很多。
  • 选择组件:别一股脑全装。你只需要装QNX Momentics IDE、目标板的BSP、以及必要的工具链。我一般只勾选我当前项目需要的。
  • 更新管理:QSC会定期推送更新。我建议你每个月检查一次,但别在生产环境上随便升级。

2.2 QNX Momentics IDE 的安装与使用

Momentics IDE是QNX的官方开发环境。它基于Eclipse,但做了大量定制。你想想看,一个实时操作系统,它的IDE肯定得有点不一样。

安装流程

  1. 在QSC中勾选"QNX Momentics IDE"组件,点击安装。
  2. 安装完成后,启动IDE。第一次启动会要求你选择工作空间。
  3. 配置编译器:Window → Preferences → QNX → QNX Toolchain,选择你安装的QNX版本。
注意:Momentics IDE对JDK版本有要求。我遇到过因为JDK版本不对,IDE死活打不开的情况。建议用OpenJDK 11或8,别追新。

常用功能

  • 创建工程:File → New → QNX C/C++ Project。选择工程类型,比如可执行文件、静态库、动态库。
  • 编译调试:点击锤子图标编译,小虫子图标调试。调试时可以选择QNX QEMU或者远程目标板。
  • 系统分析器:这是QNX的杀手锏。你可以用它分析线程调度、内存使用、CPU负载。我在做性能优化时,全靠它定位问题。

2.3 QNX虚拟机(QEMU)的搭建

没有目标板怎么办?用QEMU。QNX官方提供了QEMU镜像,你可以在虚拟机里跑QNX系统。说实话,我刚开始学QNX时,就是在QEMU上练手的。

搭建步骤

  1. 下载QEMU镜像:在QSC中搜索"QEMU",下载对应你QNX版本的镜像包。
  2. 安装QEMU:Windows下用安装包,Linux下用包管理器。我建议用QEMU 5.0以上版本。
  3. 启动虚拟机:运行以下命令:
qemu-system-aarch64 -M virt -cpu cortex-a57 -smp 4 -m 2G \
  -kernel qnx-ifs-file.ifs \
  -drive file=qnx-image.img,format=raw,if=none,id=drive0 \
  -device virtio-blk-device,drive=drive0 \
  -netdev user,id=net0 -device virtio-net-device,netdev=net0 \
  -serial stdio

关键参数说明

  • -M virt:指定虚拟平台,QNX推荐用virt
  • -kernel:QNX的IFS文件,相当于内核+文件系统
  • -serial stdio:把串口输出重定向到终端,方便看启动日志

网络配置

QEMU默认用用户模式网络。如果你想从宿主机SSH到QNX虚拟机,需要做端口转发:

qemu-system-aarch64 ... -netdev user,id=net0,hostfwd=tcp::2222-:22

然后你就可以用 ssh qnxuser@localhost -p 2222 连接了。

避坑指南:我曾经在QEMU上跑QNX时,发现网络死活不通。后来发现是忘了加 -device virtio-net-device。你想想看,光配了网络后端,没配前端设备,当然不行。

2.4 目标板(BeagleBone Black)的启动与连接

BeagleBone Black(BBB)是QNX官方支持的目标板之一。它便宜、资料多,很适合做QNX开发。我手头就有三块BBB,一块做开发,一块做测试,一块备用。

准备工作

  • 硬件:BBB主板、5V电源、MicroSD卡(至少8GB)、USB转TTL串口线
  • 软件:QNX BSP for BBB、SD卡烧录工具(如Win32DiskImager或dd命令)

烧录SD卡

  1. 在QSC中下载BBB的BSP包,解压后得到 .img 文件。
  2. 插入SD卡,用烧录工具写入镜像。Linux下用:
sudo dd if=path/to/bbb-qnx-image.img of=/dev/sdX bs=4M status=progress
sync
警告/dev/sdX 一定要确认正确。我曾经不小心写到了系统盘,结果重装了系统。血的教训啊。

启动BBB

  1. 插入SD卡到BBB,按住BOOT按钮,上电。
  2. 用串口线连接BBB和电脑。波特率设置115200,8N1。
  3. 打开串口终端(如PuTTY、minicom),你应该能看到QNX的启动日志。

网络连接

BBB启动后,默认通过DHCP获取IP。你可以用串口查看IP:

ifconfig

然后在Momentics IDE中配置远程连接:

  • Window → Show View → QNX Target Navigator
  • 右键 → New QNX Target,输入BBB的IP地址
  • 连接成功后,你就能在IDE中看到BBB的文件系统、进程信息了

我的习惯:我会在BBB上固定一个静态IP,省得每次重启都要查地址。在 /etc/rc.d/rc.local 里加一行:

ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up

小结

环境搭建这块,说白了就是三件事:装工具、配虚拟机、连目标板。我建议你先在QEMU上跑通,再上真板。这样出了问题,你能分清是硬件问题还是软件问题。嗯,下一章我们开始写第一个QNX程序,到时候你就知道这些环境配置有多重要了。