3. QNX开发环境搭建:Momentics IDE安装、目标机与宿主机配置、SSH连接调试
好,咱们直接进入正题。开发环境搭建这事儿,说简单也简单,说坑也多。我见过不少新手,卡在环境配置上好几天,最后发现是某个小细节没注意。今天我就把这些年踩过的坑、积累的经验,一次性给你讲透。
3.1 QNX Momentics IDE安装——别急着点下一步
QNX Momentics IDE,说白了就是基于Eclipse的一套定制化开发工具。你可以在QNX官网下载,注意要选对版本——我建议直接用最新LTS版本,稳定。
安装前必看:
- 宿主机建议用Ubuntu 20.04或CentOS 7,Windows也行但坑多
- JDK版本必须匹配,我遇到过因为JDK版本不对导致IDE闪退的情况
- 安装路径不要有中文和空格,这是老生常谈了
安装步骤其实不复杂:
- 下载QNX Software Development Platform (SDP) 安装包
- 运行安装脚本,选择完整安装
- 安装完成后,启动Momentics IDE
- 配置工作空间(Workspace)路径
嗯,这里要注意。安装过程中会让你选择组件,我个人的习惯是:全选。别省那点硬盘空间,后面用到某个组件找不到,更浪费时间。我在项目中就吃过这个亏——当时为了省空间没装Multicore调试工具,结果调试多核程序时傻眼了。
3.2 目标机与宿主机配置——网络是命脉
目标机和宿主机怎么配?核心就一句话:让它们能互相找到对方。
3.2.1 网络配置
我建议用静态IP,别用DHCP。为什么?你想想看,调试到一半IP变了,那得多崩溃。
| 配置项 | 宿主机(开发机) | 目标机(嵌入式板卡) |
|---|---|---|
| IP地址 | 192.168.1.100 | 192.168.1.101 |
| 子网掩码 | 255.255.255.0 | 255.255.255.0 |
| 网关 | 192.168.1.1 | 192.168.1.1 |
配置完记得用 ping 测试一下。我曾经遇到一个案例,怎么都ping不通,最后发现是网线接触不良——这种低级错误最容易让人抓狂。
3.2.2 QNX系统启动配置
目标机上的QNX系统启动后,需要确保以下服务在运行:
# 检查网络服务
ifconfig -a
# 启动SSH服务(如果没启动)
io-pkt-v6-hc -d e1000 -p tcpip
我个人习惯在启动脚本里就把这些配好,省得每次手动敲。你可以在 /etc/system/config/ 下找到启动配置。
小技巧: 在目标机上执行 sin 命令,可以查看系统信息,确认QNX版本和内核参数。我每次拿到新板子,第一件事就是跑这个命令。
3.3 SSH连接调试——这才是重头戏
SSH连接调试,说白了就是让宿主机通过SSH远程控制目标机。QNX默认支持SSH,但需要手动配置。
3.3.1 宿主机端配置
在Momentics IDE里配置SSH连接:
- 打开 Window → Preferences → Target Management
- 点击 Add,选择 SSH 连接类型
- 填写目标机IP、用户名(默认是root)、密码
- 测试连接,确保成功
这里有个坑——QNX默认的SSH配置可能不允许root登录。我曾经被这个问题卡了半天,后来发现需要在 /etc/ssh/sshd_config 里加上 PermitRootLogin yes。
3.3.2 目标机端配置
在目标机上执行:
# 启动SSH服务
sshd
# 检查SSH服务状态
ps -ef | grep sshd
如果SSH服务没起来,检查一下 /etc/ssh/ 目录下有没有密钥文件。没有的话,手动生成:
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
警告: 目标机的SSH密钥不要和宿主机共用!我见过有人图省事直接复制密钥,结果安全漏洞一大堆。每个目标机都应该有自己独立的密钥对。
3.3.3 调试连接测试
配置完成后,在Momentics IDE里创建一个简单的测试工程:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
printf("Hello from QNX!\n");
printf("Running on %d cores\n", _syspage_ptr->num_cpu);
return EXIT_SUCCESS;
}
编译后,通过SSH上传到目标机,运行看看。如果能看到输出,恭喜你,环境搭建成功了。
3.4 避坑指南——我踩过的那些雷
最后,分享几个我亲身经历过的坑:
- 防火墙问题: 宿主机和目标机之间的防火墙可能阻断SSH连接。我建议先关掉防火墙测试,确认没问题再配置规则。
- 版本兼容性: QNX SDP版本和Momentics IDE版本必须匹配。我试过用SDP 7.0配旧版IDE,结果一堆莫名其妙的问题。
- 权限问题: 目标机上的文件权限要注意。我曾经因为上传的可执行文件没有执行权限,调试了半天才发现。
- 网络延迟: 如果SSH连接很慢,检查一下DNS解析。在
/etc/hosts里加上宿主机和目标机的IP映射,能快不少。
嗯,环境搭建这部分就讲到这里。说白了,只要网络通、SSH能连上,剩下的就是写代码的事了。下一章咱们聊聊多核驱动的核心——中断亲和性设置,那才是真正考验功底的地方。