QP/C++ real-time embedded framework (RTEF) is a lightweight implementation of the Active Object (a.k.a. Actor) model of computation specifically tailored for deeply embedded real-time systems, such as microcontrollers (MCUs). QP/C++ is both a software infrastructure for building applications consisting of Active Objects (Actors) and a runtime environment for executing the Active Objects in a deterministic, real-time fashion. Additionally, QP/C++ Framework supports Hierarchical 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.
The QP/C++ RTEF provides a modern, reusable, embedded software architecture, which combines the model of concurrency, known as Active Objects (Actors) with Hierarchical State Machines. The QP/C++ RTEF provides the following benefits:
QP/C++ offers numerous advantages over the traditional "shared state concurrency" based on a conventional RTOS.
QP frameworks 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 IEC 61508 for electrical systems, as well as related standards IEC 62304/FDA510(k) for medical devices, IEC 60335 for household appliances, ISO 26262 for road vehicles, DO-178B/C for airborne systems, etc.
QP real-time embedded frameworks form a family consisting of the following QP editions:
QP Edition | Programming Language | API Compatibility | Safety Functions | Certification Artifacts | Licensing |
---|---|---|---|---|---|
QP/C | C (C11) | Same API for QP/C and SafeQP/C | Selected assertions | Requirements, Architecture & Design Specifications | Dual (GPL and Commercial)↑ |
SafeQP/C | C (C11) | Same API for QP/C and SafeQP/C | Comprehensive | Complete Certification Kit | Commercial only↑ |
QP/C++ | C++ (C++17) | Same API for QP/C++ and SafeQP/C++ | Selected assertions | Requirements, Architecture & Design Specifications | Dual (GPL and Commercial)↑ |
SafeQP/C++ | C++ (C++17) | Same API for QP/C++ and SafeQP/C++ | Comprehensive | Complete Certification Kit | Commercial only↑ |
QP/C++ is fundamentally an object-oriented framework, which means that the framework itself and your applications derived from the framework are fundamentally composed of classes and only classes can have state machines associated with them.
The behavior of active objects is specified in QP/C++ by means of hierarchical state machines (UML statecharts)↑. The framework supports manual coding of UML state machines in C as well as fully automatic code generation by means of the free graphical QM™ model-based design (MBD) tool↑.
The QP/C++ framework can run on bare-metal single-chip microcontrollers, completely replacing a traditional RTOS. The framework contains a selection of built-in real-time kernels, such as the non-preemptive QV kernel, the preemptive non-blocking QK kernel, and the preemptive, dual-mode, blocking QXK kernel. The QXK kernel provides all the features you might expect from a traditional RTOS kernel and has been specifically designed for mixing event-driven active objects with traditional blocking code, such as commercial middleware (TCP/IP stacks, UDP stacks, embedded file systems, etc.) or legacy software. Native QP/C++ ports and ready-to-use examples are provided for major embedded CPU families, such as ARM Cortex-M, ARM Cortex-R, and MSP430.
QP/C++ can also work with many traditional Real-Time Operating Systems (RTOSes) and General-Purpose OSes (GPOSes) (such as Linux (POSIX) and Windows).
Even though QP/C++ offers 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 the Application Note: "QP/C++ Performance Tests and Results"↑:
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 the inversion of control, a running application built of Active Objects is a highly structured affair where all important system interactions funnel through the underlying event-driven framework. This arrangement offers a unique opportunity for applying Software Tracing in a framework like QP.
QP/C++ offers unprecedented, bidirectional traceability among all work artifacts, which gives teams full visibility from requirements through architecture, design, source code, tests, and back again.
With 20 years of continuous development, over 400 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 a wide variety of markets↑, such as medical, consumer, IoT, defense, robotics, industrial, communication, transportation, semiconductor IP, and many others.
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.
The QP/C and QP/C++ frameworks are licensed under the dual licensing model↑, in which both the open source software distribution mechanism and traditional closed source software distribution models are combined.
If you are developing and distributing open source applications under the GNU General Public License (GPL), as published by the Free Software Foundation, then you are free to use the Quantum Leaps software under the GPL version 3↑ of the License, or (at your option) any later version.
If you are developing and distributing traditional closed source applications, you can purchase one of Quantum 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.
Please post any technical questions to the Free Support Forum↑ hosted on SourceForge.net. Posts to this forum benefit the whole community and are typically answered the same day.
Direct Commercial 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 the Contact web-page↑ for more information.
e-mail: info@state-machine.com↑