Quantum Platform (QP) is a family of very lightweight, open source, state machine-based frameworks for embedded systems. QP enables developing well-structured embedded applications as a set of concurrently executing hierarchical state machines (UML statecharts). With QP, coding of modern state machines directly in C or C++ is a non-issue. No big tools are needed.
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/).
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/).
The QP Datasheet (see http://www.state-machine.com/products/QP_datasheet.pdf) provides a concise summary of QP features and benefits.
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:
QP/C is distributed in a simple platform-independent ZIP file or in a self-extracing Windows executable. Either way, installing QP/C requires simply decompressing the provided archive into a directory of your choice (e.g., qpc 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.
All versions of QP are described in detail in the book Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems, Newnes 2008 (ISBN-10: 0750687061, ISBN-13: 978-0750687065).
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.
All versions of the QP software are available under dual licensing model, in which both the open source software distribution mechanism and traditional closed source software licensing models are combined.
All versions of the QP software are available under the gpl2_page (GPL2), as published by the Free Software Foundation and included in every distribution of the QP software. The GPL2 license is probably the best known and most established open source license. It is fully compatible with the Open Source Definition, is endorsed by the Free Software Foundation, and has been approved by the Open Source Initiative.
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:
If you are developing and distributing traditional closed source applications, you might purchase one of the Quantum Leaps commercial licenses, which are specifically designed for users interested in retaining the proprietary status of their code. This alternative licensing is possible, because Quantum Leaps, LLC owns all intellectual property in the QP and QP-nano software and as the copyright owner can license the software any number of ways. The Quantum Leaps commercial licenses expressly supersede the gpl2_page open source license. This means that when you license the software under a commercial license, you specifically do not use the software under the open source license and therefore you are not subject to any of its terms.
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:
Copyright © 2002-2008 Quantum Leaps, LLC. All Rights Reserved.
http://www.state-machine.com
1.6.3