@@ -16,6 +16,39 @@ git clone https://github.com/QuantumLeaps/qpc --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/qpc
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/qpc/srs-qp_qs.html >
163- [ QV ] : < https://www.state-machine.com/qpc/srs-qp_qv.html >
164- [ QK ] : < https://www.state-machine.com/qpc/srs-qp_qk.html >
165- [ QXK ] : < https://www.state-machine.com/qpc/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/qpc/releases >
169- [ Active ] : < https://www.state-machine.com/qpc/srs-qp_ao.html >
170- [ AO_model ] : < https://www.state-machine.com/qpc/srs-qp_ao.html#srs-qp_ao-model >
171- [ Event ] : < https://www.state-machine.com/qpc/srs-qp_evt.html >
172- [ HSM ] : < https://www.state-machine.com/qpc/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 >
175143176144 [ AN ] : < https://www.state-machine.com/doc/AN_Getting_Started_with_QP.pdf >
177- [ Tutorial ] : < https://www.state-machine.com/qpc/gs_tut.html >
178145 [ Video ] : < https://youtu.be/O7ER6_VqIH0 >
146+ [ QS ] : < https://www.state-machine.com/qpc/srs-qp_qs.html >
147+ [ QV ] : < https://www.state-machine.com/qpc/srs-qp_qv.html >
148+ [ QK ] : < https://www.state-machine.com/qpc/srs-qp_qk.html >
149+ [ QXK ] : < https://www.state-machine.com/qpc/srs-qp_qxk.html >
150+ [ SRS ] : < https://www.state-machine.com/qpc/srs-qp.html >
151+ [ SAS ] : < https://www.state-machine.com/qpc/sas-qp.html >
152+ [ SDS ] : < https://www.state-machine.com/qpc/sds-qp.html >
153+ [ Active ] : < https://www.state-machine.com/qpc/srs-qp_ao.html >
154+ [ AOmod ] : < https://www.state-machine.com/qpc/srs-qp_ao.html#srs-qp_ao-model >
155+ [ Event ] : < https://www.state-machine.com/qpc/srs-qp_evt.html >
156+ [ HSM ] : < https://www.state-machine.com/qpc/srs-qp_sm.html >
157+ [ QP-Rel ] : < https://github.com/QuantumLeaps/qpc/releases >
158+ [ Tut ] : < https://www.state-machine.com/qpc/gs_tut.html >
0 commit comments