# 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 ![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 [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]: