QNX学习分享贴

一、QNX概述

1.1 系统介绍

QNX是一种商用的遵从POSIX规范的类Unix实时操作系统,目标市场主要是面向嵌入式系统。它可能是最成功的微内核操作系统之一。

1.2 QNX特点
实时性:QNX 的任务间的上下文切换和中断反应都在微秒一级,是目前实时性最强的操作系统,满足最苛刻的实时性要求;

嵌入性:QNX 的最小系统对ROM 空间的要求只有 36KB。

稳定、可靠、强壮:QNX 是唯一遵照 POSIX 标准设计、全面符合 POSIX 标准、提供完全地址空间保护、同时支持进程和线程两种任务实现方式的操作系统。

可嵌入的图形界面:QNX 的光子图形界面与 QNX 实时操作系统一样,按照微内核的方式设计,用户根据需要可以自由剪裁并嵌入到 1MB 的闪存空间中;

分布式并行处理:QNX 不仅提供基于TCP/IP 协议族的网络,更提供QNX 的本地网络 Qnet;

多平台支持:QNX 不仅支持X86 平台,更支持PowerPC、MIPS、ARM、SH、等多种平台。

补充:宏内核与微内核的区别

对于微内核,用户服务和内核服务分别运行在不同的地址空间中;对于宏内核不管是用户服务还是内核服务事实上都是内核在统一管理,它们是运行在同一地址空间中的。

鸿蒙系统(HarmonyOS),是第一款基于微内核的全场景(移动办公、运动健康、社交通信、媒体娱乐等)分布式OS,是华为自主研发的操作系统。

https://blog.csdn.net/panjianlongWUHAN/article/details/116453685

 

2、QNX简易教程

2.1 开发 QNX 程序的 10 个步骤:快速入门指南

根据QNX官方英文文档Quickstart Guide 翻译总结过来的。官方文档可以在QNX IDE里面找到:


也可以从官网下载:http://www.qnx.com/developers/docs/7.0.0/#com.qnx.doc.qnxsdp.quickstart/topic/about.html

当然csdn上已经有人将官方文档进行了翻译,可以参考:

https://blog.csdn.net/keyboardota/article/details/6756992

https://blog.csdn.net/liukang325/article/details/48574785

接下来,结合自己的实践过程,简单讲一讲。

(1)要求

要编写在QNX Neutrino RTOS下运行的程序,首先需要的是 QNX 软件开发平台 (SDP)。这包括 QNX Momentics 工具套件,其中包含开发在QNX Neutrino RTOS下运行的程序所需的一切:编译器、链接器、库和其他组件,针对QNX Neutrino支持的所有 CPU 架构进行预编译。该工具套件具有广泛的集成开发环境 QNX Momentics IDE。

您可以在 Linux、macOS 或 Windows开发主机上安装 QNX SDP,并在目标系统上部署QNX Neutrino RTOS:

主机和目标机器

开发主机运行 QNX Momentics Tool Suite;目标系统运行QNX Neutrino RTOS本身以及您将要开发的所有程序:

操作系统 SDK 和操作系统

如果您没有 QNX SDP,您可以从www.qnx.com/products/evaluation/下载评估版 。

对于将运行QNX Neutrino RTOS的目标系统,您有多种选择:
  • 嵌入式硬件: 您可以在参考平台(CPU 供应商提供的参考设计)上运行QNX Neutrino RTOS。您需要一个适用于您的平台的 QNX 板级支持包 (BSP)。每个 BSP 都附带说明如何构建QNX Neutrino映像并将其安装在该目标系统上的文档 。

    有关 BSP 的更多信息,请访问我们的网站 www.qnx.com以及 构建嵌入式系统指南的使用 QNX BSP 一章。

  • 虚拟机: 您可以在 VMware 会话中将QNX Neutrino RTOS作为虚拟机运行
  • PC 目标: 您可以在普通 PC 上运行QNX Neutrino,但这是一项更高级的任务,因为您必须启动适合硬件的驱动程序。

由于QNX Neutrino RTOS针对所有平台的设计和使用方式都相同,因此在本快速入门指南中,我们将使用 Windows 作为开发主机,并使用虚拟机作为目标。

(2)在开发主机上安装QNX软件开发平台

Windows 开发主机上安装QNX SDP,可以从官网http://www.qnx.com/下载。安装后,您会在 Windows 桌面上找到 QNX Momentics IDE 的图标:

(3)在目标系统上安装 QNX Neutrino RTOS

首先安装VMware软件,然后用VM-QNXSDP660-201402230339.iso安装好QNX的虚拟系统

选择图形模式后,无需密码即可以 root 身份登录。在屏幕右侧记下您机器的 IP 地址;你以后会需要它。

在屏幕的右侧,您会找到一个图标栏。从那里,通过打开实用程序组,然后单击terminal来打开shell。要查看系统中当前存在的进程列表,请键入:

pidin | less

键入 q 退出 less 命令。

(4)与 QNX Neutrino 联网

现在将您的 QNX Neutrino 机器连接到网络,它应该和你的开发机应该在同一个网络上。使用 DHCP 服务器,您的 QNX Neutrino 机器将自动接收 IP 地址。 您可以使用 ifconfig 命令查看或更改它,如实用程序参考中所述。

主机和虚拟机的连接可以参考如下文章:

https://blog.csdn.net/weixin_39490421/article/details/79518927

或者,您可以使用 QNX Neutrino 安装附带的网络配置工具。 您可以在屏幕右侧图标栏的“Configure”项下或“Launch”菜单中找到它:

Devices下,您可以选择是要使用 DHCP 还是手动分配的 IP 地址。 在Network下,请输入网关的 IP 地址和 DNS:

在Windows 开发主机上,打开一个 cmd 窗口并使用 ping IP_address 检查您的 Windows 开发主机是否可以访问网络上的 QNX Neutrino 目标:

在同一个 cmd 窗口中,使用 ipconfig 来确定主机的 IP 地址。 在目标系统上,使用此 IP 地址来确保您的目标可以访问您的主机:(请关闭主机和虚拟机系统的防火墙!!!

(5)创建程序项目
在开发主机上启动 QNX Momentics IDE。现在创建一个 QNX C 项目:File-->New-->Project....在新建项目对话框中,展开 QNX,然后选择 QNX C Project:

点击NEXT。 在出现的对话框中,为您的项目命名:

单击NEXT。 为正在创建的二进制文件选择 CPU 架构。请转到“Build Variants”选项卡。如果在虚拟机中用,选择X86,如果在硬件板卡系统上用,就勾选ARM v7。记得勾上debug方便调试。点击Finish。

 为您创建了一个带有 Makefile 的即用型项目结构,包括一个小程序(“欢迎使用 QNX Momentics IDE”),您可以在自动生成的源代码文件中找到它。

IDE 现在切换到 C/C++ 透视图,其中包含导航器、编辑器和其他有用的视图。

(6)与 QNX Neutrino 通信
目标系统必须能够响应来自开发环境的请求。需要启动 qconn 程序。在虚拟机中用命令 pidin 看一下 qconn 程序有没有运行,如果没有运行就手动启动一下 qconn。

要从 IDE 访问您的目标系统,您必须创建一个目标项目。 打开系统信息透视图:在Window-->Open Perspective-->QNX System Information。 在空的 Target Navigator 视图中,按鼠标右键并选择 New QNX Target:

 在相应字段中输入其 IP 地址:

 

(7)编译&链接
现在通过选择工具栏右侧的图标切换回 C/C++ 透视图:

在编译之前,您可能希望选择带有或不带有调试信息的编译。 为此,请在 Project Explorer 视图中右键单击项目名称,然后选择 Properties。 单击 QNX C/C++ 项目,单击 Build Variants,然后展开 x86 项。 确保debug和release variants都被选上。 点击OK

在创建 QNX C 项目期间,生成了带有 Makefile 的 QNX 制作的目录结构。 现在要创建二进制文件,请右键单击项目名称,然后选择“Build Project”。 编译器和链接器现在将完成它们的工作。

您将在 Console 视图的 C-Build 输出中找到编译器输出,包括任何错误。

(8)准备启动程序

要在目标系统上运行和调试新构建的程序,您需要创建启动配置。 它由影响程序启动方式的各种设置组成(例如命令行参数、环境变量)。

现在创建您自己的启动配置:从工具栏上“bug”图标旁边的下拉菜单中,选择Debug Configurations

将打开一个对话窗口,您可以在其中启动现有启动配置、更改它们或创建新配置。 在左侧,选择 C/C++ QNX QConn (IP)。 现在单击New launch configuration:

在 C/C++ Application 字段旁边,按 Search Project 按钮并选择您的二进制文件。 使用调试信息编译的二进制文件的名称包括_g。 由于我们想在下一步中启动调试器,请选择带有调试信息的二进制文件。带-g的是debug模式,不带-g的是release模式。

确保您的Target Options列在目标选项下,然后单击 Apply,启动配置现已准备就绪:

(9)启动与调试

您应该仍处于调试启动配置对话框中。 您刚刚创建了一个用于启动程序的配置,现在您可以在调试器中启动它。 为此,请单击Debug

IDE 现在切换到 Debug 透视图,将您的程序从您的开发机通过网络传输到您的目标 QNX Neutrino 系统,然后在调试器的控制下启动它。 您将看到调试器在程序的第一行停止。 在 Debug 视图中,您将看到您的流程概览,包括调用堆栈。 使用调试视图主栏中的按钮,您可以控制调试器。

 一旦执行通过调用 printf() 的行,您应该会在控制台窗口中看到“欢迎使用 QNX Momentics IDE”消息。

使用 Step Over 按钮,您可以跳转到下一行代码:

在调试期间,您可以查看右侧的 Variables 视图,其中显示了您的变量如何变化。 您可以使用 Step Into 按钮让调试器进入函数的代码。

要设置断点,请将鼠标指针放在源显示的左边框上,按鼠标右键并从上下文菜单中选择 Toggle Breakpoint。 断点显示为一个小圆圈,您也可以在编写代码时设置或删除它。

当正在运行的程序遇到断点时,它会在调试器中停止,例如,您可以检查变量。 如果单击 Resume 按钮,程序将继续运行,直到遇到下一个断点。 要中止程序执行,请使用终止按钮。 程序运行完毕后,您可以使用 Remove All Terminated Launches 按钮从 Debug 视图中清除所有已终止的启动。

要将您的程序作为独立二进制文件(不带调试器)运行,请打开“RUN”图标旁边的下拉菜单并选择“ Run Configurations”

然后您可以使用启动配置(在上一步中描述)来启动您的程序。 或者创建一个新的启动配置并选择没有调试信息的二进制文件。 您还可以使用系统信息透视图的目标文件系统导航器(窗口-->显示视图)手动传输二进制文件,然后通过双击它来运行它。

(10)使程序成为您自己的程序

之后,可以查看帮助文档开发自己的程序啦!

IDE 包含许多帮助您入门的教程。

有问题再更新。。。

  • 2
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值