Jeff Karau

Without using QP, I don't believe we could have delivered on our given schedule dates with the same level of quality."

Jeff Karau, Sr. Software Engineer, General Dynamics C4 Systems

Henrik Bohre

...After trying out a couple of CASE tools we came to the conclusion that expensive round-trip-engineering UML tools were cumbersome and did not fit our way of working. However, the innovative QP way to map UML state machines to C/C++ code was exactly what we were looking for..."

Henrik Bohre, Embedded Systems Consultant, GotCom AB, Göteborg, Sweden

Michael_Barr

I'm speaking from first-hand experience when I say this is really good stuff. I just hope others will recognize that and we can get past the old main+ISR vs. RTOS dilemma for a large variety of applications."

Michael Barr, President Netrino and former editor-in-chief of the ESP magazine

Haitham Hindi

Practical Statecharts in C/C++ has been an indispensible reference for my embedded systems work. The clear and succinct conceptual and software framework, along with the immediately usable code enabled us to get a working prototype of our control system in a few weeks."

Dr. Haitham Hindi, Palo Alto Research Center (PARC)

Paul Montgomery

...QP has been adopted accross the company and is used in all our products on a variety of OS platforms..."

Dr. Paul Montgomery, Director of Engineering, Novariant, Fremont CA

Stratos Product Development

We're glad to keep giving Quantum Leaps our business. QP has been really valuable for us—we've had a great experience working with Quantum Leaps frameworks and tools. It's been a big help in terms of delivering high-quality software within our clients' budgets, so thank you!"

Jason Machacek, Software Engineer, Stratos Product Development LLC, Seattle WA

EIM Controls, Inc.

I used the traditional RTOS approach for about 10 years. With the real-time debug log of QSPY and the ability to see what is going on in the logic flow, the code is very easy to debug and modify. It makes the code very modular and deterministic... You end up talking about the codes logic flow, and not the semantics of the software. QP is a great product."

Paul Walker, Software Engineer, EIM Controls, Inc.

Apple Computer, Inc.

I recently rewrote a major piece of code to utilise the QP framework and it has worked wonders. My previous code used a more traditional state machine and had quickly evolved into spaghetti code. The hierarchical state machine approach made the new code smaller, more robust, and much easier to maintain and extend."

Bob Bradley, Apple Computer, Inc., from Amazon.com review

Honeywell International

Quantum Leaps software has revolutionized not just the way we write our software, but the way we approach our design. It is intuitive, easy to implement and comes in an incredibly small package. If you're in the 8-bit world, you need this software!"

Chad Koster, Software Engineer, Honeywell

Rich Wooley

Simply put, designing sofware using the QP framework lets you code the way you think..."

Rich Wooley, Sofware Engineer, Nipro Diabetes Systems, Florida

more user stories...

Articles by Category


Active Objects/Actors

Article PDF C Code C++ Code
Active Object Computing Model by Miro M. Samek, Excerpts from PSiCC2, 2008.
(3.0MB)
Quantum Programming for Embedded Systems by Miro M. Samek CUJ, March 2003.
(0.2MB)
Active Object: An Object Behavioral Pattern for Concurrent Programming by R. Greg Lavender and Douglas C. Schmidt, 1996.
(0.6MB)
Prefer Using Active Objects Instead of Naked Threads by Herb Sutter, DrDobbs.com, June 2010.
Know When to Use an Active Object Instead of a Mutex by Herb Sutter, DrDobbs.com, September 2010.
Parallel Microsoft-Style by Andrew Binstock, DrDobbs.com, July 2011.
The Actor Model: Towards Better Concurrency by Dror Bereznitsky, January 2010.
New Directions in R.T.O.S. Kernels by David Kalinsky and Associates.
Message Passing for Intertask Communication by David Kalinsky and Associates.

Hierarchical State Machines (UML Statecharts)

Article PDF C Code C++ Code
A crash course in UML state machines Part 1: The over simplification of the event-action paradigm by Miro M. Samek, Embedded.com, March 2009.
A crash course in UML state machines Part 2: UML extensions to the traditional FSM formalism by Miro M. Samek, Embedded.com, March 2009.
A crash course in UML state machines Part 3: Designing a UML state machine by Miro M. Samek, Embedded.com, March 2009.
The Calculator examples in C and C++ are included in the standard QP™ distributions
The article "A Crash Course in UML State Machines" by Miro M. Samek—All Parts
(0.8MB) Code provided on the companion page to the book "Practical UML Statecharts in C/C++, Second Edition"
State Oriented Programming by Miro M. Samek and Paul Montgomery, ESP, August 2000.
(0.2MB) (0.1MB) (0.1MB)
Yet Another Hierarchical State Machine by Stefan Heinzmann, ACCU Overload issue 64, December, 2004.
(0.2MB)
Effective UML mapping for modeling state machines by Jin Xin and Jin Yuanping, Embedded.com, July 2006.
Supporting orthogonal regions in practical large-scale projects by Lawrence Lo, ESD, November 2006.
UML Statecharts at $10.99 by Miro M. Samek, Dr.Dobbs, May 2006.
The PEdestrian LIght CONtrolled crossing example is included in the standard QP-nano™ distribution
UML State Machines by Robert Lacoste (France), Circuit Cellar, June 2013.
(2.1MB) (0.2MB)
Statecharts: A Visual Formalism for Complex Systems by David Harel, Science of Computer Programming, 8, 1987.
(1.0MB)

Code Generation Based on QP™

Article PDF C Code C++ Code
Automatic Code Generation for Instruemnt Flight Software by Kiri L. Wagstaff at. al. Jet Propulsion Laboratory, 2008.
(0.3MB)
Auto-coding UML Statecharts for Flight Software by Ed Benowitz at. al. Jet Propulsion Laboratory, 2008.
(0.1MB)
Entwicklung von Embedded Real-Time Systemen mit der UML und Quantum, by Matthias Ehlert, www.sigs-datacom.de, January 2006.
(0.9MB)

Event-Driven & Real-Time Programming

Article PDF C Code C++ Code
Event-driven Programming can be Simple Enough for CS 1 by Kim B. Bruce, Andrea P. Danyluk, and Thomas P. Murtagh.
(0.2MB)
Build a Super Simple Tasker by Miro M. Samek and Robert Ward, ESD, July 2006.
(0.3MB) (0.1MB)
Use an MCU's low-power modes in foreground/background systems by Miro M. Samek, ESD, September 2007.
(0.2MB)
Portable Inheritance and Polymorphism in C by Miro M. Samek, ESP, December 1997.
(0.4MB) notes/code (0.02MB)

The Embedded Angle Column

"The Embedded Angle" was a bi-monthly column in the C/C++ Users Journal magazine that Dr. Miro M. Samek wrote from February 2003 through December 2003. The column touches on many aspects of embedded systems programming and using state machines in particular. This is recommended reading for all embedded software developers.

Article PDF C Code C++ Code
The Embedded Mindset by Miro M. Samek, CUJ, February 2003.
(0.2MB) (0.03MB)
Who Moved My State? by Miro M. Samek, CUJ, April 2003.
(0.2MB) The calculator examples in C and C++ are included in the standard QP™ distributions
Dèjà Vu by Miro M. Samek, CUJ, June 2003.
(0.2MB) The Pedestrian Light Controlled Crossing examples in C and C++ are included in the standard QP™ distributions
An Exception or a Bug? by Miro M. Samek, CUJ, August 2003.
(0.2MB) The embedded assertion header file qassert.h is included in all standard QP™ distributions
Patterns of Thinking by Miro M. Samek, CUJ, October 2003.
(0.2MB)
Back to Basics by Miro M. Samek, CUJ, December 2003.
(0.2MB) The Time Bomb examples in C and C++ are included in the standard QP™ distributions

ARM Processors

Building bare-metal ARM Systems with GNU is an in-depth, 10-part article by Miro M. Samek of Quantum Leaps, which was second most-popular article of the 2007 year on the Embedded.com website. The article describes in detail how to use the GNU toolchain for ARM to build real-life embedded systems based on ARM microcontrollers. This article demonstrates Quantum Leaps' expertise in the ARM processor and our commitment to open source. The article is the recommended reading for using QP™ and QP-nano™ ports to the ARM processor with GNU.

Article PDF C Code C++ Code
Part 1: What's need to get started by Miro M. Samek, Embedded.com, July 2007.
Part 2: Startup code and the low level initialization by Miro M. Samek, Embedded.com, July 2007.
Part 3: The Linker Script by Miro M. Samek, Embedded.com, July 2007.
Part 4: C and C++ compiler options by Miro M. Samek, Embedded.com, July 2007.
Part 5: Fine-tuning the application by Miro M. Samek, Embedded.com, July 2007.
Part 6: General Description of Interrupt Handling by Miro M. Samek, Embedded.com, August 2007.
Part 7: Interrupt Locking and Unlocking by Miro M. Samek, Embedded.com, August 2007.
Related Application Note: "QP-nano™ and ARM7/ARM9 with GNU"
(1.4MB) See also the ARM section of this website
Part 8: Low-level Interrupt Wrapper Functions by Miro M. Samek, Embedded.com, August 2007.
Part 9: C-Level ISRs and Other ARM Exceptions by Miro M. Samek, Embedded.com, August 2007.
Part 10: Example Application and Testing Strategies by Miro M. Samek, Embedded.com, August 2007.
Building Bare-Metal ARM Systems with GNU—All Parts
(2.0MB) c_blinky.zip (0.1MB) cpp_blinky.zip (0.1MB)
Related Application Note: "QP™ and ARM7/ARM9 with GNU"
(1.5MB) See also the ARM section of this website

Last updated: February 21, 2014