Practical UML Statecharts in C/C++, 2nd Ed. Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems (PSiCC2) is the most popular book about UML statecharts and event-driven programming for embedded systems. This ultimate resource describes all the related concepts and provides a very detailed design study of the QP™ frameworks. companion page to PSiCC2

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

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

NOTE: Unless indicated that the QP™ Development Kit (QDK™) is part of the QP™ Baseline Code, to use the listed QDKs, you need to download and install the QP™ Baseline Code first.

LICENSING: The QDKs™ are licensed the same way at the QP™ frameworks.
learn more about QP™ licensing


Application Notes

Application Notes
ARM Cortex-M (M0 / M0+ / M3 / M4F)
Setting ARM Cortex-M Interrupt Priorities in QP 5.1 (0.1MB PDF)
QP and ARM Cortex-M with IAR (1.2MB PDF)
QP and ARM Cortex-M with ARM-KEIL (1.3MB PDF)
QP and ARM Cortex-M with GNU (1.2MB PDF)
ARM7 / ARM9
QP/C/C++ and ARM7/ARM9 with GNU (1.5MB PDF)
QP/C/C++ and ARM7/ARM9 with IAR (1.1MB PDF)
QP-nano and ARM7/ARM9 with GNU (1.3MB PDF)
QP-nano and ARM7/ARM9 with IAR (0.7MB PDF)


QP™ Development Kits (QDKs) for ARM Cortex-M (M0 / M0+ / M3 / M4F)

NOTE: QP/C 5.1.x requires changing the interrupt priority setting in the existing ARM Cortex-M applications. Specifically, you need to set the numerical values of interrupt priorities equal or higher than QF_AWARE_ISR_CMSIS_PRI constant provided in the qf_port.h header file.
Setting ARM Cortex-M Interrupt Priorities in QP 5.1


CMSIS Compliant

All QDKs for ARM Cortex-M are compliant with the Cortex Microcontroller Software Interface Standard (CMSIS).

QDK™ Board QP™ Version Compiler Manual Download
QDK/C™
QDK/C ARM-CM_ARM-KEIL-LM3S811
(Cortex-M3)
EK-LM3S811 QP/C 5.3.0 ARM-KEIL AppNote (1.4MB) QP/C™ Baseline
QDK/C ARM-CM_GNU-TM4C123GXL
(Cortex-M4F)
EK-TM4C123GXL
(Tiva LaunchPad)
QP/C 5.3.0 ARM-KEIL AppNote (1.4MB) QP/C™ Baseline
QDK/C ARM-CM_IAR-TM4C123GXL
(Cortex-M4F)
EK-TM4C123GXL
(Tiva LaunchPad)
QP/C 5.3.0 IAR EWARM AppNote (1.2MB) QP/C™ Baseline
QDK/C ARM-CM_IAR-LM3S811
(Cortex-M3)
EK-LM3S811 QP/C 5.3.0 IAR EWARM AppNote (1.2MB) QP/C™ Baseline
QDK/C ARM-CM_GNU-TM4C123GXL
(Cortex-M4F)
EK-TM4C123GXL
(Tiva LaunchPad)
QP/C 5.3.0 GNU (Sourcery) AppNote (1.2MB) QP/C™ Baseline
QDK/C ARM-CM_GNU-LM3S811
(Cortex-M3)
EK-LM3S811 QP/C 5.3.0 GNU (Sourcery) AppNote (1.2MB) QP/C™ Baseline
QDK/C ARM-CM_CCS-TM4C123GXL
(Cortex-M4F)
EK-TM4C123GXL
(Tiva LaunchPad)
QP/C 5.3.0 TI CCS5 README QDK-C_ARM-CM_CCS
QDK/C ARM-CM_GNU-STM3210C-EVAL
(Cortex-M3)
STM3210C-EVAL QP/C 4.5.04 GNU (Sourcery) AppNote (1.2MB) Download (4.8MB)
QDK/C ARM-CM_GNU-LPCXpresso-1114
(Cortex-M0)
LPCXpresso-1114 QP/C 4.5.04 GNU (LPCXpresso) Manual (1.4MB) Download (3.7MB)
QDK/C ARM-CM_GNU-LPCXpresso-1343
(Cortex-M3)
LPCXpresso-1343 QP/C 4.5.04 GNU (LPCXpresso) Manual (1.4MB) Download (3.7MB)
QDK/C++™
QDK/C++ ARM-CM_ARM-KEIL-LM3S811
(Cortex-M3)
EK-LM3S811 QP/C++ 5.3.0 ARM-KEIL AppNote (1.4MB) QP/C++™ Baseline
QDK/C++ ARM-CM_GNU-TM4C123GXL
(Cortex-M4F)
EK-TM4C123GXL
(Tiva LaunchPad)
QP/C++ 5.3.0 ARM-KEIL AppNote (1.4MB) QP/C++™ Baseline
QDK/C++ ARM-CM_IAR-TM4C123GXL
(Cortex-M4F)
EK-TM4C123GXL
(Tiva LaunchPad)
QP/C++ 5.3.0 IAR EWARM AppNote (1.2MB) QP/C++™ Baseline
QDK/C++ ARM-CM_IAR-LM3S811
(Cortex-M3)
EK-LM3S811 QP/C++ 5.3.0 IAR EWARM AppNote (1.2MB) QP/C++™ Baseline
QDK/C ARM-CM_GNU-TM4C123GXL
(Cortex-M4F)
EK-TM4C123GXL
(Tiva LaunchPad)
QP/C++ 5.3.0 GNU (Sourcery) AppNote (1.2MB) QP/C++™ Baseline
QDK/C++ ARM-CM_GNU-LM3S811
(Cortex-M3)
EK-LM3S811 QP/C++ 5.3.0 GNU (Sourcery) AppNote (1.2MB) QP/C++™ Baseline
QDK/C++ ARM-CM_CCS-TM4C123GXL
(Cortex-M4F)
EK-TM4C123GXL
(Tiva LaunchPad)
QP/C++ 4.5.04 TI CCS5 AppNote (1.2MB) Download (5.9MB)
QDK/C++ ARM-CM_GNU-STM3210C-EVAL
(Cortex-M3)
STM3210C-EVAL QP/C++ 4.5.04 GNU (Sourcery) Manual (1.0MB) Download (2.6MB)
QDK/C++ ARM-CM_GNU-LPCXpresso-1114
(Cortex-M0)
LPCXpresso-1114 QP/C++ 4.5.04 GNU (LPCXpresso) Manual (1.4MB) Download (3.7MB)
QDK/C++ ARM-CM_GNU-LPCXpresso-1343
(Cortex-M3)
LPCXpresso-1343 QP/C++ 4.5.04 GNU (LPCXpresso) Manual (1.4MB) Download (3.7MB)
QDK-nano™
QDK-nano ARM-CM_ARM-KEIL-LM3S811
(Cortex-M3)
EK-LM3S811 QP-nano 5.3.0 ARM-KEIL AppNote (1.4MB) QP-nano™ Baseline
QDK-nano ARM-CM_GNU-TM4C123GXL
(Cortex-M4F)
EK-TM4C123GXL
(Tiva LaunchPad)
QP-nano 5.3.0 ARM-KEIL AppNote (1.4MB) QP-nano™ Baseline
QDK-nano ARM-CM_IAR-TM4C123GXL
(Cortex-M4F)
EK-TM4C123GXL
(Tiva LaunchPad)
QP-nano 5.3.0 IAR EWARM AppNote (1.2MB) QP-nano™ Baseline
QDK-nano ARM-CM_IAR-LM3S811
(Cortex-M3)
EK-LM3S811 QP-nano 5.3.0 IAR EWARM AppNote (1.2MB) QP-nano™ Baseline
QDK-nano ARM-CM_GNU-TM4C123GXL
(Cortex-M4F)
EK-TM4C123GXL
(Tiva LaunchPad)
QP-nano 5.3.0 GNU (Sourcery) AppNote (1.2MB) QP-nano™ Baseline
QDK-nano ARM-CM_GNU-LM3S811
(Cortex-M3)
EK-LM3S811 QP-nano 5.3.0 GNU (Sourcery) AppNote (1.2MB) QP-nano™ Baseline
QDK-nano ARM-CM_CCS-TM4C123GXL
(Cortex-M4F)
EK-TM4C123GXL
(Tiva LaunchPad)
QP-nano 4.5.04 TI CCS5 AppNote (1.2MB) Download (2.6MB)
QDK-nano ARM-CM_GNU-STM3210C-EVAL
(Cortex-M3)
STM3210C-EVAL QP-nano 4.5.04 GNU (Sourcery) AppNote (1.2MB) Download (3.2MB)
QDK-nano ARM-CM_GNU-LPCXpresso-1114
(Cortex-M0)
LPCXpresso-1114 QP-nano 4.5.04 GNU (LPCXpresso) Manual (1.4MB) Download (3.6MB)
QDK-nano ARM-CM_GNU-LPCXpresso-1343
(Cortex-M3)
LPCXpresso-1343 QP-nano 4.5.04 GNU (LPCXpresso) Manual (1.4MB) Download (3.6MB)

Related Development Kits

Development Kit for QP-lwIP (TCP/IP stack) Development Kit for mbed (LPC1768)

QP™ Development Kits (QDKs) for ARM7 / ARM9

QDK™ Board QP™ Version Compiler Manual Download
QDK/C™
QDK/C ARM-GNU AT91SAM7S (ARM7) AT91SAM7S-EK QP/C 4.5.02 GNU (devkitARM) AppNote (1.2MB) Download (2.9MB)
QDK/C ARM-IAR AT91SAM7S (ARM7) AT91SAM7S-EK QP/C 4.5.02 IAR EWARM AppNote (1.0MB) Download (2.2MB)
QDK/C ARM-IAR LPC213X (ARM7) LPC-P213X QP/C 4.5.02 IAR EWARM AppNote (1.0MB) Download (5.0MB)
QDK/C ARM-IAR STR912X (ARM9) STR912-SK QP/C 4.5.02 IAR EWARM AppNote (1.0MB) Download (2.7MB)
QDK/C++™
QDK/C++ ARM-GNU AT91SAM7S (ARM7) AT91SAM7S-EK QP/C++ 5.2.1 GNU (devkitARM) AppNote (1.2MB) Download (3.4MB)
QDK/C++ ARM-IAR AT91SAM7S (ARM7) AT91SAM7S-EK QP/C++ 5.2.1 IAR EWARM AppNote (1.0MB) Download (2.5MB)
QDK/C++ ARM-IAR LPC213X (ARM7) LPC-P213X QP/C++ 4.5.02 IAR EWARM AppNote (1.0MB) Download (5.2MB)
QDK/C++ ARM-IAR STR912X (ARM9) STR912-SK QP/C++ 4.5.02 IAR EWARM AppNote (1.0MB) Download (2.9MB)
QDK-nano™
QDKn ARM-GNU AT91SAM7S (ARM7) AT91SAM7S-EK QP-nano 4.5.02 GNU (devkitARM) AppNote (1.4MB) Download (2.8MB)
QDKn ARM-IAR AT91SAM7S (ARM7) AT91SAM7S-EK QP-nano 4.5.02 IAR EWARM AppNote (0.9MB) Download (1.8MB)

Last updated: April 23, 2014