原文链接:
QP/C的SDK手册 介绍QPC的框架、Getting Started、API和参考例程。
QM的软件手册 QP的UML建模软件,可以自动生成基于QP框架的代码。
QP官方的交流论坛 是获取QP使用帮助最好的方式。
QP™ 实时嵌入式框架 (RTEF)
QP™ 亮点
支持现代状态机
独立(裸机)操作
您不需要使用传统的 RTOS 来通过 QP 实现抢占式多任务处理。内置的抢占式QK 和 QXK 内核支持基于优先级的抢占式多任务处理,与速率单调调度完全兼容, 以实现有保证的硬实时性能。这些抢占式内核与活动对象的从运行到完成的执行语义完美匹配,而且比传统的阻塞式 RTOS 内核更简单、更快、更高效。
示例评估板
传统 RTOS 支持
QP™ RTEF 还可以与许多传统的第三方 RTOS 配合使用。为多个 RTOS(例如 embOS、ThreadX、MicroC/OS、FreeRTOS 等)提供了 QP 端口和即用型示例
您可能考虑使用传统 RTOS 内核来执行事件驱动 QP™ 应用程序的最重要原因是与现有软件的兼容性。例如,许多通信栈(TCP/IP、USB、CAN 等)是为传统的阻塞内核设计的。此外,许多遗留代码需要阻塞机制,例如信号量或时间延迟。传统的 RTOS 允许您将现有软件组件作为与事件驱动 QP™ 活动对象并行的常规“阻塞”线程运行。
通用操作系统支持
QP™ RTEF 还可以与通用操作系统一起使用,例如 Linux (POSIX)、Windows 和 macOS。
通用操作系统的 QP™ 端口本身就很有趣。例如,QP 到 POSIX 的端口支持实时扩展,可以与嵌入式 Linux以及 QNX、INTEGRITY、VxWorks 等 RTOS 的 POSIX 子系统配合使用。同样,QP 到 Windows 的端口可以与 Windows IoT 或 Windows Embedded Compact 配合使用。
但是操作系统支持对于在桌面工作站上开发深度嵌入的代码也很有趣,这被称为“双目标”。
QP/C 和 QP/C++ 特性比较
特征 | 质检/质控 | QP/C++ |
---|---|---|
最新版本(修订历史) 最新发布日期 | 6.9.3 2021-04-12 | 6.9.3 2021-04-12 |
预期目标系统 (代表性硬件) | 32 位/16 位 MCU (ARM Cortex-M) | 32 位/16 位 MCU (ARM Cortex-M) |
由免费的QM™ 基于模型的设计工具支持 | ||
活动对象的最大数量 | 64 | 64 |
具有任意参数的动态事件 | ||
自动事件回收 | ||
直接事件发布 (FIFO) | ||
直接事件发布 (LIFO) | ||
发布订阅事件传递 | ||
事件延期 | ||
系统时钟滴答率数 | 可配置 (0..15) | 可配置 (0..15) |
每个活动对象的时间事件数 | 无限 | 无限 |
----------------------------------------------- 状态机 - ---------------------------------------------- | ||
分层状态机(QHsm-strategy) | ||
分层状态机(QMsm-strategy) | ||
子机和子机状态 | ||
----------------------------------------------- 内置内核 ----------------------------------------------- | ||
抢占式非阻塞内核 (QK) | ||
抢占式阻塞双模内核(QXK) | ||
----------------------------------------------- 第三方实时操作系统/操作系统 ----------------------------------------------- | ||
可移植到第 3 方 RTOS 内核 | ||
POSIX 的可用端口(Linux、QNX、INTEGRITY 等) | ||
Windows 的可用端口 | ||
----------------------------------------------- 测试/分析----------------------------------------------- | ||
QP/Spy™ 软件追踪 | ||
QUTest™ 单元测试工具 | ||
MISRA 合规性 | MISRA-C:2004 | |
AUTOSAR-C++ 合规性 | AUTOSAR-C++ 14 | |
PC-Lint-Plus 支持包 | ||
-----------------------------------------------授权许可 -- --------------------------------------------- | ||
开源许可 (GPL) | ||
闭源(商业)许可 |
传统 QP™ 开发套件 (QDK)
为什么是“遗产”?
从 QP 5.4.0 版开始,所有官方支持的端口和示例都捆绑在 QP 下载中,而不是作为单独的 QP 开发套件 (QDK) 分发。为早期 QP 版本发布的 QDK 称为“legacy-QDK”,可从 SourceForge 下载。
不建议将“legacy-QDKs”用于新项目。“legacy-QDKs”没有来自 Quantum Leaps 的商业支持,尽管在免费 QP 支持论坛上欢迎关于“legacy-QDKs”的问题
如何找到您想要的 QDK?
所有“遗留 QDK”都分布在根据以下一般约定命名的 ZIP 档案中:
qdkxxx_<cpu/rtos>-<toolset>-<board>_<version>.zip
qdkxxx
表示 QP 框架类型,而qdkc
QDK 代表 QP/C、qdkcpp
QP/C++ 和qdkn
QP-nano<cpu>
表示给定嵌入式 CPU 类型(例如 AVR、M16C、R8C 等)的独立 QP 的 QDK。<rtos>
表示运行在给定 RTOS 之上的 QP 的 QDK,例如 eCos、VxWorks 等。<toolset>
表示特定工具集的端口,例如 IAR、GNU、Renesas 等。<board>
表示示例针对指定板卡,例如 SKP3607、YRDKRX62N 等。<version>
表示 QP 框架的兼容版本。
所有 QDK 均已<version>
根据 QP 框架的规定进行开发和测试。QDK 也可能适用于较新的 QP 版本,但可能需要进行一些修改。
QDK安装
大多数“遗留 QDK”的安装过程如下:
- 下载您喜欢的 QDK 并检查其
<version>
编号。 - 下载并安装(解压)相应的 QP
<version>
。例如,如果您的 QDK 文件以 开头qdkcpp_
和结尾_4.5.02
,则应下载并安装 QP/C++ 4.5.02 版。 - 将 QDK 解压缩到临时目录。
- 将QDK目录的内容复制到QP安装目录下。例如,如果您的 QDK 解压到 目录
qdkcpp_avr-iar_4.5.02
,您应该将该目录的内容复制到 QP/C++ 安装文件夹中(通常在 里面C:/qp/qpcpp/
)。请注意,您需要同意覆盖现有目录examples/
和ports/
.
QDK 文档
每个“遗留 QDK”在 ZIP 存档的主目录中都包含 PDF 格式的“QDK 手册”。