@@ -16,6 +16,39 @@ git clone https://github.com/QuantumLeaps/qpcpp --recurse-submodules --depth 1
1616Alternatively, you can also download one of the stable
1717[ QP/C++ Releases] [ QP-Rel ] .
1818
19+ #About QP/C++ Real-Time Embedded Framework
20+ QP/C++ real-time embedded framework (RTEF) is a lightweight implementation of
21+ the[ Active Object (a.k.a. Actor) model of computation] [ AOmod ] specifically
22+ tailored for deeply embedded real-time systems, such as microcontrollers (MCUs).
23+ QP/C++ is both a software infrastructure for building applications consisting
24+ of Active Objects (Actors) and a runtime environment for executing the Active
25+ Objects in a deterministic, real-time fashion. Additionally, QP/C++ Framework
26+ supports Hierarchical State Machines with which to specify the behavior of
27+ Active Objects[ UML 2.5] ,[ Sutter:10] ,[ ROOM:94] . The QP/C++ Framework can be
28+ viewed as a modern, asynchronous, and truly event driven real-time operating
29+ system (RTOS).
30+
31+ ##QP Framework Family
32+ QP/C++ framework is part of the larger QP family consisting of the following
33+ QP editions:
34+
35+ |QP Edition | Language | API | Safety Functions |Certification Artifacts| Licensing
36+ |:----------|:-----------:|:-----------------|:-------------------|:----------------|:---------
37+ | QP/C | C (C11) |same as SafeQP/C |Selected Assertions |Req/Arch/Design |[ dual] [ Lic ]
38+ | SafeQP/C | C (C11) |same as QP/C |All Safety Functions|Certification Kit|[ commercial] [ Com ]
39+ | QP/C++ | C++ (C++17) |same as SafeQP/C++|Selected Assertions |Req/Arch/Design |[ dual] [ Lic ]
40+ | SafeQP/C++| C++ (C++17) |same as QP/C++ |All Safety Functions|Certification Kit|[ commercial] [ Com ]
41+
42+ [ The documentation] ( #documentation ) of all QP editions includes the
43+ [ Requirements] [ SRS ] ,[ Architecture] [ SAS ] , and[ Design Specifications] [ SDS ] ,
44+ which are the best source of information about the underlying concepts,
45+ functionality, architecture, and design of the QP Frameworks and the QP
46+ Applications based on the frameworks.
47+
48+ > ** NOTE:** The** SafeQP** frameworks additionally contain** Safety Functions**
49+ required to achieve the higher safety integrity levels and come with much more
50+ extensive[ Certification Kits] [ Cert ] .
51+
1952
2053#Getting Started with QP/C++
2154The most recommended way of obtaining QP/C++ is by downloading the
@@ -25,7 +58,7 @@ The main advantage of obtaining QP/C++ bundled together like that is
2558that you get all components, tools and examples ready to go.
2659
2760###Getting Started Resources
28- - [ "QP/C++ Tutorial"] [ Tutorial ]
61+ - [ "QP/C++ Tutorial"] [ Tut ]
2962describes a series of progressively advanced QP/C++ example applications.
3063
3164- [ Video: "Getting Started with QP Real-Time Embedded Frameworks"] [ Video ]
@@ -67,69 +100,11 @@ have been **removed from the open-source GPL distribution**:
67100 the active Support Term. Please contact[ Quantum Leaps technical support] [ Sup ]
68101to get the complete QP/C++ framework distribution.
69102
70- > NOTE: To request** evaluation** of the complete QP/C++ framework, please contact
103+ > ** NOTE:** To request** evaluation** of the complete QP/C++ framework, please contact
71104 Quantum Leaps at:https://www.state-machine.com/contact
72105
73- #About QP/C++
74- QP/C++ (Quantum Platform in C++) is a lightweight, open source
75- [ Real-Time Embedded Framework (RTEF)] [ RTEF ] for building modern embedded
76- software as systems of asynchronous, event-driven[ Active Objects] [ Active ]
77- (actors). The[ QP/C++] framework is a member of a[ QP] family consisting of
78- [ QP/C++] and[ QP/C] frameworks, which are strictly quality controlled,
79- thoroughly documented, and[ commercially licensable] [ Lic ] .
80-
81- ##Safer Model of Concurrency
82- The[ QP] framework family implements the
83- [ Active Object model of computation] [ AO_model ] , which is** inherently safer**
84- than the traditional "shared state concurrency" based on explicit mutual
85- exclusion and managing RTOS threads by blocking. The Active Object model
86- supports and automatically enforces the following best practices
87- of concurrent programming:
88-
89- - Keep data isolated and bound to Active Objects' threads. Threads should
90- hide (** encapsulate** ) their private data and other resources, and not
91- share them with the rest of the system.
92-
93- - Communicate among Active Object threads** asynchronously** via[ Event
94- objects] [ Event ] . Using asynchronous events keeps the threads running truly
95- independently,** without blocking** on each other.
96-
97- - Active Object threads should spend their lifetime responding to incoming
98- events, so their mainline should consist of an** event-loop** that handles
99- events one at a time (to completion), thus avoiding any concurrency hazards
100- within an Active Object thread itself.
101-
102- This architecture also provides higher level of abstraction and the* correct*
103- abstractions to effectively apply[ Hierarchical State Machines] [ HSM ] ,
104- ** modeling** and** code generation** to deeply embedded real-time systems.
105-
106- ##Hierarchical State Machines
107- The behavior of Active Objects is specified in QP/C++ by means of
108- [ Hierarchical State Machines] [ HSM ] (UML statecharts). The framework
109- supports manual coding of UML state machines in C as well as automatic
110- ** code generation** by means of the free[ QM modeling tool] [ QM ] .
111-
112- ##Built-in Real-Time Kernels
113- The QP/C++ framework can run on standalone on single-chip microcontrollers,
114- without any traditional RTOS. The framework contains a selection of
115- ** built-in real-time kernels** , such as the[ non-preemptive QV kernel] [ QV ] ,
116- the[ preemptive non-blocking QK kernel] [ QK ] , and the preemptive,
117- [ dual-mode QXK kernel] [ QXK ] that provides all the features you might expect
118- from a traditional RTOS. Native QP ports and ready-to-use examples are provided
119- for major CPUs, such as ARM Cortex-M (M0/M0+/M3/M4/M7/M23/M33/...).
120-
121- ##Traditional RTOS/OS
122- QP/C++ can also work with a traditional RTOS, such as ThreadX, embOS, FreeRTOS,
123- uC/OS-II and Zephyr, as well as with (embedded) Linux (POSIX) and Windows.
124-
125- ##Popularity and Maturity
126- With 20 years of continuous development,[ 400+ commercial licensees] [ Cust ] ,
127- and many times more open source users worldwide, the QP frameworks are the
128- most popular such offering on the market. They power countless electronic
129- products ranging from implantable medical devices to complex weapon systems.
130-
131-
132- #QP/C++ Documentation
106+
107+ #Documentation
133108The online HTML documentation for the** latest** version of QP/C++ is located
134109at:https://www.state-machine.com/qpcpp
135110
@@ -159,20 +134,25 @@ If you like this project, please give it a star (in the upper-right corner of yo
159134[ QP ] :< https://www.state-machine.com/products/qp >
160135[ QP/C ] :< https://github.com/QuantumLeaps/qpc >
161136[ QP/C++ ] :< https://github.com/QuantumLeaps/qpcpp >
162- [ QS/C++ ] :< https://www.state-machine.com/qpcpp/srs-qp_qs.html >
163- [ QV ] :< https://www.state-machine.com/qpcpp/srs-qp_qv.html >
164- [ QK ] :< https://www.state-machine.com/qpcpp/srs-qp_qk.html >
165- [ QXK ] :< https://www.state-machine.com/qpcpp/srs-qp_qxk.html >
137+ [ Cert ] :< https://www.state-machine.com/products/qp#CERT >
166138[ QM ] :< https://github.com/QuantumLeaps/qm >
167139[ QTools ] :< https://github.com/QuantumLeaps/qtools >
168- [ QP-Rel ] :< https://github.com/QuantumLeaps/qpcpp/releases >
169- [ Active ] :< https://www.state-machine.com/qpcpp/srs-qp_ao.html >
170- [ AO_model ] :< https://www.state-machine.com/qpcpp/srs-qp_ao.html#srs-qp_ao-model >
171- [ Event ] :< https://www.state-machine.com/qpcpp/srs-qp_evt.html >
172- [ HSM ] :< https://www.state-machine.com/qpcpp/srs-qp_sm.html >
173140[ Lic ] :< https://www.state-machine.com/licensing >
141+ [ Com ] :< https://www.state-machine.com/licensing#Commercial >
174142[ Cust ] :< https://www.state-machine.com/customers >
175143[ Sup ] :< mailto:support@state-machine.com >
176144[ AN ] :< https://www.state-machine.com/doc/AN_Getting_Started_with_QP.pdf >
177- [ Tutorial ] :< https://www.state-machine.com/qpcpp/gs_tut.html >
178145[ Video ] :< https://youtu.be/O7ER6_VqIH0 >
146+ [ QS ] :< https://www.state-machine.com/qpcpp/srs-qp_qs.html >
147+ [ QV ] :< https://www.state-machine.com/qpcpp/srs-qp_qv.html >
148+ [ QK ] :< https://www.state-machine.com/qpcpp/srs-qp_qk.html >
149+ [ QXK ] :< https://www.state-machine.com/qpcpp/srs-qp_qxk.html >
150+ [ SRS ] :< https://www.state-machine.com/qpcpp/srs-qp.html >
151+ [ SAS ] :< https://www.state-machine.com/qpcpp/sas-qp.html >
152+ [ SDS ] :< https://www.state-machine.com/qpcpp/sds-qp.html >
153+ [ Active ] :< https://www.state-machine.com/qpcpp/srs-qp_ao.html >
154+ [ AOmod ] :< https://www.state-machine.com/qpcpp/srs-qp_ao.html#srs-qp_ao-model >
155+ [ Event ] :< https://www.state-machine.com/qpcpp/srs-qp_evt.html >
156+ [ HSM ] :< https://www.state-machine.com/qpcpp/srs-qp_sm.html >
157+ [ Tut ] :< https://www.state-machine.com/qpcpp/gs_tut.html >
158+ [ QP-Rel ] :< https://github.com/QuantumLeaps/qpcpp/releases >