-
Notifications
You must be signed in to change notification settings - Fork 70
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
932 changed files
with
263,326 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
*.obj | ||
*.o | ||
*.d | ||
*.lib | ||
*.a | ||
*.elf | ||
*.err | ||
*.hex | ||
*.exe | ||
*.EXE | ||
*.map | ||
*.dep | ||
*.Hbp | ||
*.nav | ||
*.tps | ||
*.tws | ||
*.tmp | ||
*.log | ||
*.chm | ||
*.zip | ||
*.pdb | ||
*.ncb | ||
*.suo | ||
*.chw | ||
*.sfr | ||
*.ewt | ||
*.user | ||
*.avrsuo | ||
*.Debug | ||
*.Release | ||
lint*.txt | ||
*.Miro | ||
*.bak | ||
*.qlc | ||
JLink*.* | ||
version-* | ||
metrics.dox | ||
|
||
html/ | ||
test_priv/ | ||
dbg/ | ||
rel/ | ||
spy/ | ||
build/ | ||
build_rel/ | ||
build_spy/ | ||
settings/ | ||
.settings/ | ||
targetConfigs/ | ||
|
||
Debug/ | ||
Release/ | ||
|
||
lib/ | ||
obj/ | ||
output/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
The QP-nano Real-Time Embedded Framework (RTEF) is licensed under the | ||
dual-licensing model, in which both the open source and traditional | ||
closed source software distribution models are combined. For more | ||
information, please see: | ||
|
||
https://www.state-machine.com/licensing | ||
|
||
**** | ||
NOTE: If your company has a policy forbidding open source in your | ||
product, all QP frameworks can be licensed commercially, in which | ||
case you don't use any open source license and you do not violate | ||
your policy. | ||
**** | ||
|
||
Contact Information: | ||
==================== | ||
- https://www.state-machine.com | ||
- mailto:[email protected] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
![QP-nano framework](https://www.state-machine.com/img/qpn_banner.jpg) | ||
|
||
--------------------------------------------------------------------------- | ||
# What's New? | ||
|
||
**NOTE:** QP-nano has been **discontinued** from active development | ||
and support and is **not recommended** for new designs. This QP-nano | ||
repository is preserved for the existing user base. | ||
|
||
|
||
**LICENSING:** If you are interested in commercial licensing QP-nano, | ||
please refer to section [QP-nano Licensing](#qp-nano-licensing). | ||
|
||
|
||
**QM Tool Compatibility:** The last QM version that supports code | ||
generation for QP-nano is | ||
[QM 5.2.3 released on 2022-11-18](https://www.state-machine.com/qm/history.html#qm_5_2_3). | ||
Newer QM versions no longer support QP-nano. | ||
|
||
|
||
# Documentation | ||
The offline HTML documentation for **this** particular version of QP-nano | ||
is located in the folder html/. To view the offline documentation, open | ||
the file html/index.html in your web browser. | ||
|
||
The online HTML documention for the **latest** version of QP-nano is located | ||
at: https://www.state-machine.com/qpn/ | ||
|
||
|
||
# About QP-nano | ||
QP-nano (Quantum Platform Nano) is an ultra-lightweight, open source | ||
[Real-Time Embedded Framework (RTEF)][RTEF] for building modern embedded | ||
software as systems of asynchronous, event-driven [active objects][Active] | ||
(actors). The [QP-nano] framework is a member of a larger [QP] family | ||
consisting of [QP/C], [QP/C++], and [QP-nano] frameworks, which are all | ||
strictly quality controlled, thoroughly documented, and [commercially | ||
licensable][Lic]. | ||
|
||
## Safer Model of Concurrency | ||
The [QP] framework family is based on the [Active Object][Active] (**actor**) | ||
design pattern, which inherently supports and automatically enforces the | ||
following best practices of concurrent programming: | ||
|
||
- Keep data isolated and bound to active objects' threads. Threads should | ||
hide (**encapsulate**) their private data and other resources, and not | ||
share them with the rest of the system. | ||
|
||
- Communicate among active object threads **asynchronously** via event | ||
objects. Using asynchronous events keeps the threads running truly | ||
independently, **without blocking** on each other. | ||
|
||
- Active object threads should spend their lifetime responding to incoming | ||
events, so their mainline should consist of an **event-loop** that handles | ||
events one at a time (to completion), thus avoiding any concurrency hazards | ||
within an active object thread itself. | ||
|
||
This architecture is generally **safer**, more responsive and easier to | ||
understand and maintain than the shared-state concurrency of a conventional | ||
RTOS. It also provides higher level of abstraction and the *correct* | ||
abstractions to effectively apply **modeling** and **code generation** to | ||
deeply embedded real-time systems. | ||
|
||
## Hierarchical State Machines | ||
The behavior of active objects is specified in QP-nano by means of | ||
[Hierarchical State Machines][HSM] (UML statecharts). The framework | ||
supports manual coding of UML state machines in C as well as automatic | ||
**code generation** by means of the free [QM modeling tool][QM]. | ||
|
||
## Built-in Real-Time Kernels | ||
The QP-nano framework can run on bare-metal single-chip microcontrollers, | ||
completely replacing a traditional "superloop" or an RTOS. The framework | ||
contains a selection of **built-in real-time kernels**, such as the | ||
cooperative QV-nano kernel and the preemptive non-blocking QK-nano kernel. | ||
Native QP-nano ports and ready-to-use examples are provided for such CPUs | ||
MSP430, AVRmega, and ARM Cortex-M (M0/M0+/M3/M4). | ||
|
||
## Maturity | ||
With 60,000 downloads a year, the [QP] family is the most popular such | ||
solution on the embedded software market. It provides a modern, reusable | ||
architecture for embedded applications, which combines the active-object | ||
model of concurrency with hierarchical state machines. | ||
|
||
|
||
# Getting Started with QP-nano | ||
The [QP-nano Reference Manual](https://www.state-machine.com/qpn/) provides | ||
instructions on how to download, install, and get started with QP-nano quickly. | ||
|
||
The [AppNote: "Getting Started with QP-nano"][AN] contains also a tutorial, | ||
in which you build a simple "Blinky" application. | ||
|
||
|
||
# QP-nano Licensing | ||
QP-nano is licensed under the | ||
[dual licensing model](https://www.state-machine.com/licensing), | ||
in which both the open source software distribution mechanism and | ||
traditional closed source software distribution models are combined. | ||
|
||
> **NOTE:** Even though QP-nano has been discontinued, Quantum Leaps will | ||
continue to provide commercial licenses for QP-nano to customers still | ||
interested in deploying QP-nano in closed-source products. These commercial | ||
licenses will NOT provide technical support and will be discounted accordingly. | ||
|
||
|
||
# QP-nano Documentation | ||
The **QP-nano Manual** is located online at: https://www.state-machine.com/qpn | ||
|
||
|
||
# 3rd-Party QP-nano Ports/Adaptations | ||
|
||
[<b>QPN-PIC16</b>](https://github.com/aschatte/qpn) is an adaptation of the | ||
QP-nano framework to the | ||
[Microchip PIC16](https://www.microchip.com/en-us/products/microcontrollers-and-microprocessors/8-bit-mcus/pic-mcus) | ||
architecture as compiled by the MPALB-X IDE using the XC8 compiler (C90/C99). | ||
It allows QP-nano models developed using the QM modeling tool to be integrated | ||
with the QV-nano kernel to build | ||
[Active Object](https://www.state-machine.com/active-object) applications. | ||
The very limited resources of the PIC16 family of MCUs, primarily the hardware | ||
stack, required a special version of QP-nano and a QM-Modeler editing | ||
post-processor, `QM2HSM.exe`, to effect. | ||
|
||
|
||
# How to get help? | ||
- [Free Support Forum](https://sourceforge.net/p/qpc/discussion/668726) | ||
- [Bug Reports](https://sourceforge.net/p/qpc/bugs/) | ||
- [Feature Requests](https://sourceforge.net/p/qpc/feature-requests/) | ||
- [Quantum Leaps website](https://www.state-machine.com) | ||
- [Quantum Leaps licensing](https://www.state-machine.com/licensing) | ||
- [[email protected]](mailto:[email protected]) | ||
|
||
[RTEF]: <https://www.state-machine.com/doc/concepts#RTEF> | ||
[QP]: <https://www.state-machine.com/products/#QP> | ||
[QP/C]: <https://www.state-machine.com/qpc> | ||
[QP/C++]: <https://www.state-machine.com/qpcpp> | ||
[QP-nano]: <https://www.state-machine.com/qpn> | ||
[QM]: <https://www.state-machine.com/qm> | ||
[Active]: <https://www.state-machine.com/doc/concepts#Active> | ||
[HSM]: <https://www.state-machine.com/doc/concepts#HSM> | ||
[Lic]: <https://www.state-machine.com/licensing> | ||
[AN]: <https://www.state-machine.com/doc/AN_Getting_Started_with_QP-nano.pdf> |
Oops, something went wrong.