第2章:QNX开发环境搭建
说实话,搭建开发环境这件事,很多人觉得就是装个软件而已。但我得说,QNX的环境搭建跟Linux、Windows还真不太一样。我刚开始接触QNX时,光是在虚拟机里跑起来就折腾了两天。这一章,我把这些坑都给你指出来。
2.1 QNX Software Center (QSC) 的安装与配置
QSC是QNX的软件管理中心。说白了,它就是你的软件仓库。所有开发工具、BSP包、文档,都从这里下载。
安装步骤
- 获取安装包:去QNX官网注册账号,下载QNX Software Center安装程序。注意,你需要一个有效的License。
- 运行安装:Windows下直接双击exe,Linux下给权限后运行。我个人习惯装到默认路径,省事。
- 登录激活:启动QSC,输入你的QNX账号和License Key。嗯,这里要注意,License分节点锁定和浮动两种,别搞混了。
我的经验:QSC的下载速度有时候很慢。我建议你选在非工作时间下载,或者用代理。我曾经因为网络问题,一个BSP包下了三回才成功。
配置要点
- 设置镜像源:QSC默认连的是国外服务器。你可以配置国内镜像,速度会快很多。
- 选择组件:别一股脑全装。你只需要装QNX Momentics IDE、目标板的BSP、以及必要的工具链。我一般只勾选我当前项目需要的。
- 更新管理:QSC会定期推送更新。我建议你每个月检查一次,但别在生产环境上随便升级。
2.2 QNX Momentics IDE 的安装与使用
Momentics IDE是QNX的官方开发环境。它基于Eclipse,但做了大量定制。你想想看,一个实时操作系统,它的IDE肯定得有点不一样。
安装流程
- 在QSC中勾选"QNX Momentics IDE"组件,点击安装。
- 安装完成后,启动IDE。第一次启动会要求你选择工作空间。
- 配置编译器: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上练手的。
搭建步骤
- 下载QEMU镜像:在QSC中搜索"QEMU",下载对应你QNX版本的镜像包。
- 安装QEMU:Windows下用安装包,Linux下用包管理器。我建议用QEMU 5.0以上版本。
- 启动虚拟机:运行以下命令:
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卡
- 在QSC中下载BBB的BSP包,解压后得到
.img文件。 - 插入SD卡,用烧录工具写入镜像。Linux下用:
sudo dd if=path/to/bbb-qnx-image.img of=/dev/sdX bs=4M status=progress
sync
警告:
/dev/sdX 一定要确认正确。我曾经不小心写到了系统盘,结果重装了系统。血的教训啊。
启动BBB
- 插入SD卡到BBB,按住BOOT按钮,上电。
- 用串口线连接BBB和电脑。波特率设置115200,8N1。
- 打开串口终端(如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程序,到时候你就知道这些环境配置有多重要了。