Introduction to QP/C++ Project
The QP/C++ project offers a robust framework designed for building real-time embedded systems using a sophisticated model of computation called "Active Objects." This framework is known for its safety and reliability, making it ideal for applications ranging from medical devices to complex military systems. Let's delve deeper into the details.
What is QP/C++?
QP/C++ (Quantum Platform in C++) is a lightweight, open-source Real-Time Embedded Framework (RTEF) tailored for modern embedded software development. It allows developers to build systems using asynchronous, event-driven Active Objects, or actors. These systems are designed for environments needing high safety and reliability.
Key Features
Safer Concurrency Model
One of the standout features of QP/C++ is its safer concurrency model. Traditional concurrency involves sharing of states across threads that can often lead to complex issues. In contrast, the Active Object model bounds data to specific threads, ensuring encapsulation and isolation. Communication happens asynchronously through event objects, enabling threads to operate independently and without mutual blocking.
Hierarchical State Machines
The behavior of Active Objects in QP/C++ is defined through Hierarchical State Machines (HSMs). This method offers a clear and structured way to model the system's state and behavior, theoretically enhancing reliability and maintainability. The framework supports both manual coding of state machines and automatic code generation through the free QM modeling tool.
Built-in Real-Time Kernels
QP/C++ comes with built-in real-time kernels, allowing it to operate standalone without the need for a traditional RTOS. It offers kernels like the non-preemptive QV kernel, the preemptive non-blocking QK kernel, and the dual-mode QXK kernel. These cater to various complexity levels in embedded system applications. Ready-to-use examples and ports are available for major CPUs such as ARM Cortex-M families.
Versatility with RTOS/OS
Beyond its built-in capabilities, QP/C++ can seamlessly integrate with traditional RTOS solutions like ThreadX, embOS, FreeRTOS, uC/OS-II, and Zephyr. It is also compatible with embedded Linux (POSIX) and Windows, allowing it to fit into diverse development environments.
Licensing Options
The QP/C++ framework employs a dual licensing model:
-
Open-source Licensing: Under the GNU General Public License (GPLv3), developers must release modifications under the same open-source license.
-
Closed-source Licensing: Offers commercial licenses for proprietary software development, especially beneficial for companies with policies against open-source software.
For those requiring the QS/C++ software tracing component, it is only available under closed-source licenses.
Community and Support
Having been in continuous development for over 20 years with more than 400 commercial licensees, QP/C++ has established itself as a mature and popular solution in the market. The community offers a range of support options including free forums, bug report submissions, and feature requests. Detailed documentation is available online, providing comprehensive guidance for developers.
Getting Started
The official recommendation for obtaining QP/C++ is via downloading the QP-bundle, which includes the QP/C++ framework, QM modeling tool, and a collection of QTools. This bundle ensures developers have immediate access to all components, tools, and examples needed to start building applications effectively.
By offering a structured approach to system design with capabilities for both lightweight and high-complexity applications, QP/C++ presents a versatile and reliable framework for real-time embedded system development.