# qpn
**Repository Path**: mirrors_QuantumLeaps/qpn
## Basic Information
- **Project Name**: qpn
- **Description**: QP-nano real-time embedded framework/RTOS for embedded systems based on active objects (actors) and hierarchical state machines
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2020-09-25
- **Last Updated**: 2025-09-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README

---------------------------------------------------------------------------
# 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
[QPN-PIC16](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)
- [info@state-machine.com](mailto:info@state-machine.com)
[RTEF]:
[QP]:
[QP/C]:
[QP/C++]:
[QP-nano]:
[QM]:
[Active]:
[HSM]:
[Lic]:
[AN]: