Skip to content

Commit

Permalink
6.9.0
Browse files Browse the repository at this point in the history
clean commit of QP-nano 6.9.0
  • Loading branch information
quantum-leaps committed May 5, 2023
1 parent bd2d473 commit 779ef14
Show file tree
Hide file tree
Showing 932 changed files with 263,326 additions and 0 deletions.
58 changes: 58 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
*.obj
*.o
*.d
*.lib
*.a
*.elf
*.err
*.hex
*.exe
*.EXE
*.map
*.dep
*.pdf
*.PDF
*.Hbp
*.nav
*.tps
*.tws
*.tmp
*.log
*.chm
*.zip
*.pdb
*.ncb
*.suo
*.chw
*.sfr
*.ewt
*.user
*.avrsuo
*.Debug
*.Release
lint*.txt
*.Miro
*.bak
*.qlc
JLink*.*
version-*
metrics.dox

html/
test_priv/
dbg/
rel/
spy/
build/
build_rel/
build_spy/
settings/
.settings/
targetConfigs/

Debug/
Release/

lib/
obj/
output/
674 changes: 674 additions & 0 deletions GPLv3.txt

Large diffs are not rendered by default.

18 changes: 18 additions & 0 deletions LICENSE.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
The QP-nano Real-Time Embedded Framework (RTEF) is licensed under the
dual-licensing model, in which both the open source and traditional
closed source software distribution models are combined. For more
information, please see:

https://www.state-machine.com/licensing

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

Contact Information:
====================
- https://www.state-machine.com
- mailto:[email protected]
139 changes: 139 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
![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

[<b>QPN-PIC16</b>](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)
- [[email protected]](mailto:[email protected])

[RTEF]: <https://www.state-machine.com/doc/concepts#RTEF>
[QP]: <https://www.state-machine.com/products/#QP>
[QP/C]: <https://www.state-machine.com/qpc>
[QP/C++]: <https://www.state-machine.com/qpcpp>
[QP-nano]: <https://www.state-machine.com/qpn>
[QM]: <https://www.state-machine.com/qm>
[Active]: <https://www.state-machine.com/doc/concepts#Active>
[HSM]: <https://www.state-machine.com/doc/concepts#HSM>
[Lic]: <https://www.state-machine.com/licensing>
[AN]: <https://www.state-machine.com/doc/AN_Getting_Started_with_QP-nano.pdf>
Loading

0 comments on commit 779ef14

Please sign in to comment.