问题标签 [qnx-neutrino]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2587 浏览

qnx - 如何在 QNX 下运行一个简单的“hello world”程序?

背景:我有 QNX 许可证密钥,并已将QNX 网站上的VMWare 目标映像安装到 VMWare 中。我将 QNX 目标 RTOS 作为 VM 运行,并且我的主机具有可以识别 QNX 目标操作系统的 QNX momentics IDE。

问题:我拥有最新 QNX SDP 7 的许可证,而我在 QNX 网站上可以找到的唯一兼容 VMWare 的映像是较旧的 QNX 6.5(?)。一个简单的“hello world”程序(Momentics IDE 附带的演示程序)将无法在 QNX 目标操作系统上运行,因为它缺少某些库。

我需要:

  • 获取在 VMWare 上启动最新版本 QNX RTOS 的方法。我搜索和搜索都是徒劳的,但没有描述这个过程。QNX SDP 应该有一种方法可以为 VMWare 创建可引导的 QNX RTOS,但该过程未在任何地方列出(我已经搜索了好几天了!)

或者

  • 找到一种将 Momentics IDE 7.0 与我拥有的旧版 QNX RTOS 一起使用的方法。

问题

  • 如何使用 QNX SDP 7.0 创建可启动的 QNX RTOS ISO 并将其加载到 VMWare 中?
  • 让使用 QNX Momentics 7.0 创建的简单 C/C++ 程序在我拥有的旧版 QNX RTOS 上运行?

附录

这些是他们提供的有关如何获取最新 QNX RTOS VMWare 映像的说明。他们说:

我们提供与 VMware Workstation Pro 12.0 或更高版本、VMware Workstation Player 12.0 或更高版本以及 VMware Fusion Pro 8.0 或更高版本兼容的 VMware 映像。此图像是一个最小的 QNX Neutrino 系统。您可以从 QNX 软件中心下载 VMware 映像,方法是选择可用选项卡,展开参考映像列表,展开工具列表,然后选择适当的虚拟机。

但是,软件中心没有“参考图像”或“工具”或“可用选项卡”或类似的东西(参见图像)。

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
175 浏览

usb - 如何使用 usbdi 回调获取设备路径和挂载路径?

我正在实施一项服务,该服务将使用 usbdi 回调函数检测 usb 插件/删除。回调函数有一个参数“usbd_device_instance_t * usbInstance”,我可以从中获取设备供应商 ID、产品 ID 和设备类信息。但是,如果是大容量存储设备,我如何获得挂载点,如果是 HID 设备,我如何获得设备路径?

0 投票
2 回答
252 浏览

cross-compiling - 在为 QNX 交叉编译 NTP 时,如何从 autoconf 硬编码/更改测试结果?

我正在尝试从 i686-pc-linux-gnu 为 armv7-unknown-nto-qnx 交叉编译 NTP。

到目前为止,我已经建立了以下命令:

这似乎让我大部分时间都在那里。但是,编译器最终会抛出../../../sntp/libevent/signal.c:255:17: error: 'SA_RESTART' undeclared (first use in this function). 在这个和所有其他 SA_RESTART 实例中,配置定义的常量 HAVE_SIGACTION ifdef 会排除问题代码。查看 config.log,我发现了这个:

我认为这是一个误报。

我正在寻找一种通过进一步指定我的环境来纠正 ./configure 测试的方法,或者一种指定测试结果的方法。

我知道我可以在自动测试后修改 config.h,但这不是我的应用程序的有效解决方案。

0 投票
1 回答
221 浏览

c++ - C++/libscreen 无法更新可见性

我正在按照文档教程,使用屏幕窗口系统为带有 QNX CAR 2.0 的 Neutrino 6.5.0 编写 C++ (qcc) 的 GUI。没有生成可见的输出,并且/dev/screen/{pid}/win-{n}/win-{n}具有status = WIN_STATUS_INVISIBLE.

(使用{n}{pid}表示运行时/动态变量值的替换)

我已经尝试按照教程进行操作,但结果相同。特别是window_group_name(mainwindowgroupveryuniquewgn) 的值没有区别;前者是本教程建议的值,后者是我自己的值。

我已经构建了一个 MCVE:

由于使用了screen_err()定义,没有输出(除了printfpid 的第一个输出)表明screen_...()调用没有错误。这正是我运行它时所看到的。

在 中/dev/screen/{pid},我看到了一个ctx-{n}/ctx-{n}和一个win-{n}/win-{n}文件,正如预期的那样。前者不是人类可读的,但后者,以及它与工作 nto 6.5.0 + CAR 2.0 + libscreen 应用程序中的对应物的差异,产生了一些见解。

工作应用程序是一个 HMI,我没有它的源代码,并/etc/ro以 root 身份启动,而我的应用程序是从 ksh 启动的,以 root 身份登录。

它们都是 98 行文件,所以我制作了一个差异 -win-{n}左侧是工作应用程序,右侧是我的 - 不包括指标:(垂直比较超过 39 个字符的行)

在这些差异usage中,只有一个具有我期望的值,考虑到它反映了相关调用的参数screen_set_window_property_iv(...)。对于所有其他人,尤其是regionsflags,我不明白为什么它们的值与工作应用程序的值不同。

目标显示器的原始分辨率为 800x480。

0 投票
0 回答
1004 浏览

c++ - 从 2 个不同的线程锁定时 Pthread_mutex_lock 崩溃

我在一个项目中使用 Pthread 和 Pthread_mutex。我有使用 SIGEV_THREAD() 定期创建线程的计时器。在我的代码中,我有一个定时器每 5 秒触发一个线程,另一个每 15 秒触发一次。

其中一个线程执行此代码 [Radar.cpp]

另一个执行这个[Display.cpp]

在这种情况下,指针“this”是两个不同的对象。指针 planeDB 和 planeDB 指向同一个对象。

我想创建一个互斥锁,它只允许一个函数在给定时间读取飞机数据库的内容。但是,在运行代码时,当 2 个线程尝试同时运行时出现错误。基本上,他们都试图锁定,我明白了:

在 AirplaneDB 中,互斥锁的初始化方式如下:

有任何想法吗?

更新:

该问题是由其中一个类中的指针设置不当引起的。因此试图将互斥锁锁定在地址 0。这一行应该让我找到答案:

初始化数据库正确修复了错误。

0 投票
2 回答
246 浏览

formatting - Qnx-neutrino 无法使用 fdisc 格式化我的分区,进程冻结

我正在尝试在 Windows 10 的 Oracle VM 上运行的 QNX-neutrino OS 中格式化我的 HDD 250Gb。我安装了我的 HDD,一切看起来都很好。我运行命令

并创建 4 个具有下一个大小的分区:

之后我运行命令:

当我尝试使用命令格式化创建的分区时:

这个过程开始了,永远不会结束。终端只是冻结。我能做些什么来修复它?或者还有另一种方法可以在这个系统中格式化我的分区?

0 投票
1 回答
222 浏览

c++ - ZMQ::send() 抛出异常并终止 QNX 进程。为什么以及如何从中恢复?

ZMQ::send()抛出异常并终止进程。

为什么以及如何从中恢复。

REQ/REP我在 QNX 版本 6.5.0 上使用 ZeroMQ模式。预期的catch{}块不会收到此异常。

这是 gdb 跟踪:

这是我的代码片段。

0 投票
0 回答
59 浏览

multithreading - ZeroMQ:线程在 while(1) 循环中恰好在 2 小时后停止。为什么以及如何解决这个问题?

它不会崩溃,因此没有要分析的核心。它只是停止。

我实验过多次。它恰好在 2 小时后停止。
操作系统:qnx6.5.0 LIB
ZeroMQ 和 Protobuf

我只有一个线程,它看起来像这样:

0 投票
2 回答
980 浏览

c++ - 无法使用 aarch64-unknown-nto-qnx7.0.0-g++-5.4.0 编译器为 QNX 平台交叉编译 gRPC

我正在尝试使用 QNX aarch64-unknown-nto-qnx7.0.0-g++-5.4.0 编译器交叉编译 gRPC 代码。我正在使用 toolchain.cmake 文件进行编译。

工具链.cmake:

即使我使用了 -std=c++11 (也尝试过 gnu++11),我也收到以下错误:

请帮我解决这个问题。

0 投票
0 回答
72 浏览

grpc - 无法在 QNX 上运行 greeter_client helloworld 示例项目

我已经成功地为 QNX ARM 7.0 交叉编译了代码,并且能够生成二进制文件。

我要做的第一件事是在目标上运行 helloworld 代码。所以我在 cpp 文件夹中构建了 helloworld 代码(因为我使用的是 cpp)。我在目标机器上只复制了两个文件greeter_server 和greeter_client。我能够成功使用 greeter_server 启动服务器。但是当我在另一个窗口中运行 greeter_client 时,我收到了失败消息。

这是启用 GRPC_TRACE=ALL, GRPC_VERBOSITY=DEBUG 后的日志。

请帮我知道这个问题。

我们没有 DNS 服务器,我尝试使用 GRPC_DNS_RESOLVER=native,但没有帮助。如果有人知道在 QNX 中配置 DNS,请告诉我。