Skip to content

Commit 779ef14

Browse files
committed
6.9.0
clean commit of QP-nano 6.9.0
1 parent bd2d473 commit 779ef14

File tree

932 files changed

+263326
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

932 files changed

+263326
-0
lines changed

.gitignore

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
*.obj
2+
*.o
3+
*.d
4+
*.lib
5+
*.a
6+
*.elf
7+
*.err
8+
*.hex
9+
*.exe
10+
*.EXE
11+
*.map
12+
*.dep
13+
*.pdf
14+
*.PDF
15+
*.Hbp
16+
*.nav
17+
*.tps
18+
*.tws
19+
*.tmp
20+
*.log
21+
*.chm
22+
*.zip
23+
*.pdb
24+
*.ncb
25+
*.suo
26+
*.chw
27+
*.sfr
28+
*.ewt
29+
*.user
30+
*.avrsuo
31+
*.Debug
32+
*.Release
33+
lint*.txt
34+
*.Miro
35+
*.bak
36+
*.qlc
37+
JLink*.*
38+
version-*
39+
metrics.dox
40+
41+
html/
42+
test_priv/
43+
dbg/
44+
rel/
45+
spy/
46+
build/
47+
build_rel/
48+
build_spy/
49+
settings/
50+
.settings/
51+
targetConfigs/
52+
53+
Debug/
54+
Release/
55+
56+
lib/
57+
obj/
58+
output/

GPLv3.txt

Lines changed: 674 additions & 0 deletions
Large diffs are not rendered by default.

LICENSE.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
The QP-nano Real-Time Embedded Framework (RTEF) is licensed under the
2+
dual-licensing model, in which both the open source and traditional
3+
closed source software distribution models are combined. For more
4+
information, please see:
5+
6+
https://www.state-machine.com/licensing
7+
8+
****
9+
NOTE: If your company has a policy forbidding open source in your
10+
product, all QP frameworks can be licensed commercially, in which
11+
case you don't use any open source license and you do not violate
12+
your policy.
13+
****
14+
15+
Contact Information:
16+
====================
17+
- https://www.state-machine.com
18+

README.md

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
![QP-nano framework](https://www.state-machine.com/img/qpn_banner.jpg)
2+
3+
---------------------------------------------------------------------------
4+
# What's New?
5+
6+
**NOTE:** QP-nano has been **discontinued** from active development
7+
and support and is **not recommended** for new designs. This QP-nano
8+
repository is preserved for the existing user base.
9+
10+
11+
**LICENSING:** If you are interested in commercial licensing QP-nano,
12+
please refer to section [QP-nano Licensing](#qp-nano-licensing).
13+
14+
15+
**QM Tool Compatibility:** The last QM version that supports code
16+
generation for QP-nano is
17+
[QM 5.2.3 released on 2022-11-18](https://www.state-machine.com/qm/history.html#qm_5_2_3).
18+
Newer QM versions no longer support QP-nano.
19+
20+
21+
# Documentation
22+
The offline HTML documentation for **this** particular version of QP-nano
23+
is located in the folder html/. To view the offline documentation, open
24+
the file html/index.html in your web browser.
25+
26+
The online HTML documention for the **latest** version of QP-nano is located
27+
at: https://www.state-machine.com/qpn/
28+
29+
30+
# About QP-nano
31+
QP-nano (Quantum Platform Nano) is an ultra-lightweight, open source
32+
[Real-Time Embedded Framework (RTEF)][RTEF] for building modern embedded
33+
software as systems of asynchronous, event-driven [active objects][Active]
34+
(actors). The [QP-nano] framework is a member of a larger [QP] family
35+
consisting of [QP/C], [QP/C++], and [QP-nano] frameworks, which are all
36+
strictly quality controlled, thoroughly documented, and [commercially
37+
licensable][Lic].
38+
39+
## Safer Model of Concurrency
40+
The [QP] framework family is based on the [Active Object][Active] (**actor**)
41+
design pattern, which inherently supports and automatically enforces the
42+
following best practices of concurrent programming:
43+
44+
- Keep data isolated and bound to active objects' threads. Threads should
45+
hide (**encapsulate**) their private data and other resources, and not
46+
share them with the rest of the system.
47+
48+
- Communicate among active object threads **asynchronously** via event
49+
objects. Using asynchronous events keeps the threads running truly
50+
independently, **without blocking** on each other.
51+
52+
- Active object threads should spend their lifetime responding to incoming
53+
events, so their mainline should consist of an **event-loop** that handles
54+
events one at a time (to completion), thus avoiding any concurrency hazards
55+
within an active object thread itself.
56+
57+
This architecture is generally **safer**, more responsive and easier to
58+
understand and maintain than the shared-state concurrency of a conventional
59+
RTOS. It also provides higher level of abstraction and the *correct*
60+
abstractions to effectively apply **modeling** and **code generation** to
61+
deeply embedded real-time systems.
62+
63+
## Hierarchical State Machines
64+
The behavior of active objects is specified in QP-nano by means of
65+
[Hierarchical State Machines][HSM] (UML statecharts). The framework
66+
supports manual coding of UML state machines in C as well as automatic
67+
**code generation** by means of the free [QM modeling tool][QM].
68+
69+
## Built-in Real-Time Kernels
70+
The QP-nano framework can run on bare-metal single-chip microcontrollers,
71+
completely replacing a traditional "superloop" or an RTOS. The framework
72+
contains a selection of **built-in real-time kernels**, such as the
73+
cooperative QV-nano kernel and the preemptive non-blocking QK-nano kernel.
74+
Native QP-nano ports and ready-to-use examples are provided for such CPUs
75+
MSP430, AVRmega, and ARM Cortex-M (M0/M0+/M3/M4).
76+
77+
## Maturity
78+
With 60,000 downloads a year, the [QP] family is the most popular such
79+
solution on the embedded software market. It provides a modern, reusable
80+
architecture for embedded applications, which combines the active-object
81+
model of concurrency with hierarchical state machines.
82+
83+
84+
# Getting Started with QP-nano
85+
The [QP-nano Reference Manual](https://www.state-machine.com/qpn/) provides
86+
instructions on how to download, install, and get started with QP-nano quickly.
87+
88+
The [AppNote: "Getting Started with QP-nano"][AN] contains also a tutorial,
89+
in which you build a simple "Blinky" application.
90+
91+
92+
# QP-nano Licensing
93+
QP-nano is licensed under the
94+
[dual licensing model](https://www.state-machine.com/licensing),
95+
in which both the open source software distribution mechanism and
96+
traditional closed source software distribution models are combined.
97+
98+
> **NOTE:** Even though QP-nano has been discontinued, Quantum Leaps will
99+
continue to provide commercial licenses for QP-nano to customers still
100+
interested in deploying QP-nano in closed-source products. These commercial
101+
licenses will NOT provide technical support and will be discounted accordingly.
102+
103+
104+
# QP-nano Documentation
105+
The **QP-nano Manual** is located online at: https://www.state-machine.com/qpn
106+
107+
108+
# 3rd-Party QP-nano Ports/Adaptations
109+
110+
[<b>QPN-PIC16</b>](https://github.com/aschatte/qpn) is an adaptation of the
111+
QP-nano framework to the
112+
[Microchip PIC16](https://www.microchip.com/en-us/products/microcontrollers-and-microprocessors/8-bit-mcus/pic-mcus)
113+
architecture as compiled by the MPALB-X IDE using the XC8 compiler (C90/C99).
114+
It allows QP-nano models developed using the QM modeling tool to be integrated
115+
with the QV-nano kernel to build
116+
[Active Object](https://www.state-machine.com/active-object) applications.
117+
The very limited resources of the PIC16 family of MCUs, primarily the hardware
118+
stack, required a special version of QP-nano and a QM-Modeler editing
119+
post-processor, `QM2HSM.exe`, to effect.
120+
121+
122+
# How to get help?
123+
- [Free Support Forum](https://sourceforge.net/p/qpc/discussion/668726)
124+
- [Bug Reports](https://sourceforge.net/p/qpc/bugs/)
125+
- [Feature Requests](https://sourceforge.net/p/qpc/feature-requests/)
126+
- [Quantum Leaps website](https://www.state-machine.com)
127+
- [Quantum Leaps licensing](https://www.state-machine.com/licensing)
128+
129+
130+
[RTEF]: <https://www.state-machine.com/doc/concepts#RTEF>
131+
[QP]: <https://www.state-machine.com/products/#QP>
132+
[QP/C]: <https://www.state-machine.com/qpc>
133+
[QP/C++]: <https://www.state-machine.com/qpcpp>
134+
[QP-nano]: <https://www.state-machine.com/qpn>
135+
[QM]: <https://www.state-machine.com/qm>
136+
[Active]: <https://www.state-machine.com/doc/concepts#Active>
137+
[HSM]: <https://www.state-machine.com/doc/concepts#HSM>
138+
[Lic]: <https://www.state-machine.com/licensing>
139+
[AN]: <https://www.state-machine.com/doc/AN_Getting_Started_with_QP-nano.pdf>

0 commit comments

Comments
 (0)