QP-nano requires only 1-2KB of code and just several bytes of RAM. This tiny footprint, especially in RAM, makes QP-nano ideal for high volume, cost-sensitive applications, such as motor control, lighting control, capacitive touch sensing, remote access control, RFID, thermostats, small appliances, toys, power supplies, battery chargers, or just about any custom system-on-a-chip (SOC or ASIC) that contains a small processor inside. Also, because the event-driven paradigm naturally uses the CPU only when handling events and otherwise can very easily switch the CPU into a low-power sleep mode (see 10. Comparison to the Traditional Approach), QP-nano is particularly suitable for ultra-low power applications, such as wireless sensor networks or implantable medical devices.
The following diagram shows the total RAM and ROM size requried for QP-nano, full-version QP, small RTOS, and other popular RTOSes and OSes. Please note the logarithmic axes.
QP-nano is available for download from the following websites:
qpn for QP-nano). The Section Directories and Files in the QP-nano Distribution describes the content of the standard QP-nano distribution.The QP-nano Tutorial explains all steps necessary to develop a non-trivial QP-nano 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