GitHunt
QU

QP-nano real-time embedded framework/RTOS for embedded systems based on active objects (actors) and hierarchical state machines

QP-nano framework


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.

QM Tool Compatibility: The last QM version that supports code
generation for QP-nano is
QM 5.2.3 released on 2022-11-18.
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) for building modern embedded
software as systems of asynchronous, 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
.

Safer Model of Concurrency

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 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 (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.

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 provides
instructions on how to download, install, and get started with QP-nano quickly.

The AppNote: "Getting Started with QP-nano" contains also a tutorial,
in which you build a simple "Blinky" application.

QP-nano Licensing

QP-nano is licensed under the
dual licensing model,
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

QPN-PIC16 is an adaptation of the
QP-nano framework to the
Microchip PIC16
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 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?