QNX学习分享贴

  • Post author:
  • Post category:其他



一、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 包含许多帮助您入门的教程。

有问题再更新。。。



版权声明:本文为baidu_38301645原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。