Movatterモバイル変換


[0]ホーム

URL:


Logo
QP/C++ 8.1.1
Real-Time Event Framework
Loading...
Searching...
No Matches
Overview

Remarks

Getting Started

What is it?

QP/C++ real-time event framework (RTEF) is a lightweight implementation of the asynchronous, event-driven, and non-blockingActive Object (a.k.a. Actor) model of computation specifically designed for real-time embedded systems, such as microcontrollers (MCUs). QP/C++ is both asoftware infrastructure for building applications consisting of Active Objects (Actors) and aruntime environment for executing the Active Objects in a deterministic, real-time fashion. Additionally, QP/C++ Framework supportsHierarchical State Machines with which to specify the behavior of Active Objects[UML 2.5], [Sutter:10], [ROOM:94]. The QP/C++ Framework can be viewed as a modern, asynchronous, and truly event-driven real-time operating system.

What's special about it?

The QP/C++ RTEF provides a reusable, event-driven software architecture, which combines the model of concurrency, known asActive Objects (Actors) withHierarchical State Machines. This approach offers numerous advantages over the traditional "shared state concurrency" based on a conventionalReal-Time Operating System (RTOS)↑:

  • Modern, event-driven, asynchronous architecture based on the best practices of concurrent programming collectively known as theActive Object (a.k.a. Actor) model of computation;
  • Non-blocking architecture moreextensible and maitanable than conventional RTOS by avoiding hard-codedblocking calls;
  • Inherently safer concurrency architecture than the traditional "shared-state concurrency" approach of a conventional RTOS by replacing direct resource sharing with event exchanges.
  • Efficient, responsive, real-time architecture, easier to analyze and provably meet hard real-time deadlines (e.g.,Rate-Monotonic Scheduling↑ method);
  • Higher-level of abstraction closer to the problem domain than the "naked" RTOS threads
  • Theright abstractions for applying modern techniques like hierarchical state machines, visual modeling, and automatic code generation (seeQM Graphical Modeling Tool↑);
  • Highly readable and efficient implementation ofHierarchical State Machines↑ for specifying the internal behavior of Active Objects;
  • Built-in, configurable, and flexibleSoftware Tracing for troubleshooting (debugging), profiling, monitoring, and optimizing embedded applications with minimal impact on the real-time performance.
  • Built-in,Trace-Based Testing↑ for testing event-driven applications.
  • SafeQP editions specifically designed for safety-critical applications requiringfunctional-safety certification.

Functional Safety

AllQP editions are a natural fit for safety-related applications because they implement a number of best practices highly recommended by the functional safety standards, such as strictly modular design (Active Objects) or hierarchical state machines (semi-formal methods). Indeed, for decades, the QP/C and QP/C++ Frameworks have beenwidely used in safety-related applications↑, such as medical, aerospace, and industrial.

Note
In functional safety standards (e.g., IEC 61508, IEC 62304, or ISO 26262), the phrase "highly recommended" has a different meaning than in ordinary speech. In these standards, especially in higher safety-integrity levels, the designers must justify and document why the "highly recommended" practices arenot followed.

QP Framework Editions

QP real-time event frameworks form a family consisting of the followingQP editions:

QP EditionProgramming
Language
API CompatibilitySafety FunctionsCertification ArtifactsLicensing
StandardQP editions
QP/CC (C11)Same as
SafeQP/C
AssertionsRequirements, Architecture
& Design Specifications
Open-source & Commercial
(dual licensing)↑
QP/C++C++ (C++17)Same as
SafeQP/C++
AssertionsRequirements, Architecture
& Design Specifications
Open-source & Commercial
(dual licensing)↑
SafeQP editions engineered for functional safety
SafeQP/CC (C11)Same as
QP/C
All identified
Safety Functions
Complete Certification KitCommercial only↑
SafeQP/C++C++ (C++17)Same as
QP/C++
All identified
Safety Functions
Complete Certification KitCommercial only↑
Remarks
AllQP editions are accompanied by theRequirements Specification,Architecture Specification, andDesign Specification, which are thebest source of information about the underlying concepts, functionality, architecture, and design of theQP Frameworks and theQP Applications based on the frameworks.

SafeQP Editions

TheSafeQP/C andSafeQP/C++ frameworks were initially derived from QP/C and QP/C++, respectively, but were extensively reengineered for the safety market using compliant Software Safety Lifecycle (SSL). In this process, theQP framework functional model has been subjected to a full Hazard and Risk Analysis, which identified all areas of weakness within the functional model and API. These findings led to the creation of Safety Requirements and risk mitigation bySafety Functions, which were subsequently implemented, verified, and validated in the SafeQP editions.

Note
TheSafeQP editions remain entirelyAPI- and functionally compatible with the corresponding standardQP frameworks. This ensures existingQP Applications can transition seamlessly to SafeQP without requiring any modifications. SafeQP retainsQP Frameworks' hallmark features, including a small memory footprint, excellent efficiency, and hard real-time functionality.

SafeQP Certification Kits

The SafeQP frameworks are accompanied by theSafeQP Certification Kits, which provide developers with ready-to-use artifacts, enabling them tosave time, mitigate risk, and reduce costs during application certification for safety-critical devices in the industrial, medical, aerospace, and automotive industries.

Object Orientation

QP/C++ is fundamentally anobject-oriented framework, which means that the framework itself and your applications derived from the framework are composed ofclasses and only classes can havestate machines associated with them.

Hierarchical State Machines

The behavior of active objects is specified in QP/C++ by means ofhierarchical state machines (UML statecharts)↑. The framework supports manual coding of UML state machines in C as well as fullyautomatic code generation using the free graphicalQM model-based design (MBD) tool↑.

Built-in Kernels

The QP/C++ framework can run onbare-metal single-chip microcontrollers, completely replacing a traditional RTOS. The framework contains a selection of built-in real-time kernels, such as the non-preemptiveQV kernel, the preemptive non-blockingQK kernel, and the preemptive, dual-mode, blockingQXK kernel (available as one of theQP/C++ Extras). "Native QP/C++ ports" and ready-to-useexamples are provided for prominent embedded CPU families, such as ARM Cortex-M, ARM Cortex-R, and MSP430.

3rd-Party Kernels

QP/C++ can also work with many traditionalReal-Time Operating Systems (RTOSes) andGeneral-Purpose OSes (GPOSes) (such as Linux (POSIX) and Windows).

Size and Efficiency

Even though QP/C++ offers a higher level of abstraction than a traditional RTOS, when combined with the native built-in kernels, it typically outperforms equivalent traditional RTOS applications both in RAM/ROM footprint and in CPU efficiency. The specific measurements and results are reported in theApplication Note: "QP/C++ Performance Tests and Results"↑:

Software Tracing

Software tracing is a method of capturing and recording information about the execution of a software program. Software tracing is particularly effective and powerful in combination with the event-driven Active Object model of computation due to its inherent inversion of control. A running application built of Active Objects is a highly structured affair where all meaningful system interactions funnel through the underlying event-driven framework. This arrangement offers a unique opportunity for applying Software Tracing in a framework likeQP.

Documentation Traceability

QP/C++ offers unprecedented, bidirectional traceability among all work artifacts, which gives teams complete visibility from requirements through architecture, design, source code, tests, and back again.

Popularity & Maturity

With 20 years of continuous development, over400 commercial licensees↑, and many times more open source users worldwide,QP Frameworks are the most popular such offering on the market. They power countless electronic products across awide variety of markets↑, such as medical, consumer, IoT, defense, robotics, industrial, communication, transportation, semiconductor IP, and many others.

Books

The two editions of the book,Practical Statecharts in C/C++, provide a detailed design study of the QP/C and QP/C++ frameworks and explain the related concepts.

Practical UML Statecharts in C/C++, 2nd Edition

Practical Statecharts in C/C++, 1st Edition

How is it licensed?

The QP/C and QP/C++ frameworks are licensed under thedual licensing model↑, in which both the open source software distribution mechanism and traditional closed source software distribution models are combined.

Note
If your company has a policy forbidding open source in your product, the QP/C and QP/C++ frameworks can belicensed commercially↑, in which case you don't use any open source license and you do not violate your policy.

Open Source Applications

If you are developing and distributingopen source applications, you are free to use theQP™ framework software under theGPL version 3↑, or (at your option) any later GPL version.

Note
Please note that GPL requires that all modifications to the original code, as well as your application code (Derivative Works as defined in the Copyright Law), must also be released under the terms of the GPL open source license.

Closed Source Applications

If you are developing and distributingclosed source applications, you can purchase one of theQuantum Leaps commercial licenses↑, which are specifically designed for users interested in retaining the proprietary status of their code. All Quantum Leaps commercial licenses expressly supersede the GPL open source license. This means that when you license Quantum Leaps software under a commercial license, you specifically do not use the software under the open source license, and therefore, you are not subject to any of its terms.

Commercial licensees also gain access to theQP/C++ Extras, which include:

How to get help?

Please post anytechnical questions to theFree Support Forum↑ hosted on SourceForge.net. Posts to this forum benefit the whole community and are typically answered the same day.

DirectCommercial Support is available to the commercial licensees. Every commercial license includes one year of Technical Support for the licensed software. The support term can be extended annually.

Training and consulting services are also available from Quantum Leaps. Please refer to theContact web-page↑ for more information.

Note
The features of this online help and tips for using it are described in SectionUsing Online Help.

Contact Information


[8]ページ先頭

©2009-2025 Movatter.jp