Current versions of QP include: QP/C and QP/C++, which require 3-4KB of code and a few hundred bytes of RAM, and the ultra-lightweight QP-nano, which requires only 1-2KB of code and just several bytes of RAM.
QP can work with or without a traditional OS/RTOS. In the simplest configuration, QP can completely replace a traditional RTOS. QP includes a simple non-preemptive scheduler and a fully preemptive kernel (QK), which have been ported to several popular CPUs and compilers including: ARM7/ARM9, ARM Cortex-M3, 80x86, Nios-II, MSP430, M16C, AVR, 80251, and others (see http://www.state-machine.com/downloads/qdk.htm#CPU).
QP/C and QP/C++ can also work with a traditional OS/RTOS to take advantage of existing device drivers, communication stacks, and other middleware. QP has been ported to Linux/BSD, Windows, VxWorks, uC/OS-II, and other popular OS/RTOS (see http://www.state-machine.com/downloads/qdk.htm#OS).
Since its publication in 2002, hundreds of projects around the world have been using QP in all kinds of applications, such as consumer, medical, industrial, wireless, networking, research, defense, robotics, automotive, space exploration, and many others.
QP is available for download from the following websites:
qpcpp for QP/C++). The Section Directories and Files in the QP/C++ Distribution describes the content of the standard QP/C++ distribution.The QP/C++ Tutorial explains all steps necessary to develop a non-trivial QP/C++ application. The Tutorial is based on Chapter 1 of Practical UML Statecharts in C/C++, Second Edition.
The book bridges the gap between high-level abstract concepts of the Unified Modeling Language (UML) and the actual programming aspects of modern hierarchical state machines (UML statecharts).
This book is presented in two parts. In Part I, you get a practical description of the relevant state machine concepts starting from traditional finite state automata to modern UML state machines followed by state machine coding techniques with the QEP hierarchical event processor as well as several state-machine design patterns, all illustrated with executable examples.
In Part II, you find a detailed design study of the QF real-time framework, QK preemptive kernel, and QS software tracing, which are indispensable for combining concurrent, event-driven state machines into robust systems. In addition to its value as a reference to the QP event-driven platform, Part II explans the key event-driven programming concepts such as inversion of control ("Hollywood Principle"), blocking versus non-blocking code, run-to-completion (RTC) execution semantics, the importance of event queues, dealing with time, and the role of state machines to maintain the context from one event to the next. This background is designed to help software developers in making the transition from the traditional sequential to the modern event-driven programming, which can be one of the trickiest paradigm shifts.
Please note that GPL2 applies to software based not upon how it is used but upon how it is distributed. In this respect GPL2 can be restrictive, because GPL2 Section 2(b) requires that if you distribute the original software or any derivative works based on the software under copyright law, you must release all such derivative works also under the terms of the GPL2 open source license. GPL2 clearly specifies that distributing the original software or any derivative works based upon it in binary form (e.g., embedded inside devices) also represents distribution of the software.
To read more about open source licensing for QP or QP-nano, or to contribute work to the open source community, please visit the following website:
or please contact Quantum Leaps, LLC via the following e-mail address:
To read more about the commercial licensing options, pricing, technical support, and to request a commercial license, please visit the following website:
or please contact Quantum Leaps, LLC via the following e-mail address:
1.5.4