一、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
    
    本身以及您将要开发的所有程序:
   
     
   
    
     如果您没有 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 包含许多帮助您入门的教程。
     
   
有问题再更新。。。
 
