|3rd_party||2017-11-13||Quantum Leaps||[27137d] 6.0.1|
|doxygen||2017-11-13||Quantum Leaps||[27137d] 6.0.1|
|examples||2017-11-13||Quantum Leaps||[27137d] 6.0.1|
|include||2017-11-13||Quantum Leaps||[27137d] 6.0.1|
|ports||2017-11-13||Quantum Leaps||[27137d] 6.0.1|
|src||2017-11-13||Quantum Leaps||[27137d] 6.0.1|
|.gitignore||2016-11-30||Quantum Leaps||[b4fbb1] 5.8.0b|
|README.md||2017-09-15||Quantum Leaps||[8cfea4] 5.9.8|
|README.url||2015-06-01||Quantum Leaps||[28dc69] 5.4.0|
|version-6.0.1||2017-11-13||Quantum Leaps||[27137d] 6.0.1|
NOTE: If your company has a policy forbidding open source in your
product, all QP frameworks can be
in which case you don't use any open source license and you do not violate
View QP-nano Revision History at: https://state-machine.com/qpn/history.html
QP-nano (Quantum Platform Nano) is an ultra-lightweight, open source software
framework/RTOS for building reactvie real-time embedded applications
as systems of cooperating, event-driven active objects (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.
The [QP] framework family is based on the [Active Object] (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 right
abstractions to effectively apply modeling and code generation to
deeply embedded real-time systems.
The behavior of active objects is specified in QP-nano by means of
[Hierarchical State Machines] (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.
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).
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.
The following "Getting Started with QP-nano" guide provides step-by-step
instructions on how to download, install, and get started with QP-nano quickly:
The guide also contains a tutorial, in which you build a simple "Blinky"
NOTE: QP-nano can be unzipped anywhere in your file system, but the
recommended location is
C:\qp\qpnon Windows and
QP-nano is licensed under the increasingly popular dual licensing model, in which both the open source software distribution mechanism and traditional closed source software distribution models are combined.
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.
The QP-nano Manual is located online at: https://state-machine.com/qpn