Code Monkey home page Code Monkey logo

qpn's Introduction

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?

qpn's People

Contributors

quantum-leaps avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qpn's Issues

Supporting targets with 16-bit bytes

I am considering using qpn for a product I'm working on. We're using the TI C2000 (Delfino) family processors, which don't have byte addressing. So there's no uint8_t, and sizeof(char) == sizeof(int16_t).
I see that qpn uses uint8_t in its code.
In my code, I've had to change references to uint8_t to uint_least8_t.

Is there a solution similar to Evt differ in QPnano?

I'm using QPn on serial port.
When a baudrate change CMD is received, I need to response before hardware re-init.
But NewBaudEvt is POST along with SerialNeedSendEvt.
NewBaudEvt makes serial stop when sending is need.

compile Error

../../../include/qepn.h:269:2: error: expected identifier or '(' before '/' token
/
^
there are two "
/" in here

Typo

In file qfn.h line 60 uint_t instead uint8_t

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.