The objective of this lesson is to replace the default vector table from the IAR library with your own.
To achieve this, you first need to understand the embedded software build process. You will look inside the object files (ELF format) to see what "relocatable code" really means. You will also see how the linker resolves the cross-module references and how the rules are different for objects included directly and object libraries.... read more
New version 3.2.1 of the QM modeling and automatic code generation tool has just been released and is available for download from:
This release implements the feature request #100 "Conditional compilation for state machine elements" (see https://sourceforge.net/p/qpc/feature-requests/100/ ) The feature description and usage are available in the QM Help at the following URL:... read more
The QP Development Kits (QDKs) for the FreeRTOS real-time kernel have been just released. The QP-FreeRTOS integration has been designed to use the FreeRTOS hardware abstraction layer, but this port does not eliminate all dependencies on the CPU architecture. Specifically, this port has been designed for the ARM Cortex-M cores (ARM Cortex-M0/M3/M4F) and might need some changes to
work with other CPU architectures. The source code of the QP-FreeRTOS ports (for QP/C and QP/C++) should compile cleanly with all compilers for ARM Cortex-M, not just with IAR EWAR used here.... read more
The QP-Arduino integration has been completely re-done to match the new Arduino-1.5.7. Among others, the TCL build script and the code upload utility, both callable from QM, have been adapted for the new Arduino-1.5.7 code structure and requirements (such as the use of CYGWIN dynamic libraries.)
The new QP Development Kit (QDK) for the latest QP/C++ 5.3.0 and Arduino-1.5.x has been posted for download here:... read more
The QP/C framework has been ported to ERIKA Enterprise OSEK/VDX RTOS.
ERIKA is an open-source OSEK/VDX kernel started in year 2000 mainly used in automotive.
ERIKA Enterprise in its architecture is very similar to the single stack QK kernel implementation. The concepts of the FP (Fixed Priority) conformance class implementation in OSEK/VDX are really the same (run to completion, no blocking, single stack, ...). Also, ERIKA is an OSEK/VDX kernel, which makes it interesting for the Automotive Market. It has in fact been chosen by a few Tier 1, including Magneti Marelli for Powertrain controls.... read more
The QM version 3.2.0 switches from using Qt4 to the latest Qt5 toolkit. Also,
the the Qt5 toolkit is now used under the terms of the LGPL 2.1 license.
For compliance with LGPL 2.1, the QM distributions contain the LGPL
Compliance Package, which provides information how to obtain, install,
and build the Qt toolkit from sources.
In response to user requests and to ease downloading of QP and QM software, all latest Windows .EXE files available for download from
have been digitally signed by Quantum Leaps, LLC.
The newly signed files are:
qm_3.1.3-win32.exe qpc_5.3.0.exe qpcpp_5.3.0.exe qpn_5.3.0.exe qtools_win32_5.3.1.exe
If you are concerned about security, the digitally signed Windows .EXEs are the recommended format to dowload. The equivalent .ZIP files are not signed, so there is no guarantee that they have not been tampered with. ... read more
New QP Development Kits for the embOS RTOS have been created. Please see: http://www.state-machine.com/embos
NOTE: Even though the QDKs use the specific embOS demo (embOS for ARM Cortex-M with IAR), the QDKs have been designed generically to rely exclusively on the embOS API. In other words, the QDKs should not require any changed to run on any CPU/Compiler supported by embOS.
Mr. Wanqiang Xia has contributed a QP active object framework implementation in Java (jqf). This is a complete framework, with the hierarchical event processor (QEP) and the event-driven framework (QF). This means that you can build systems of QP-like active objects in Java!
This QP/Java implementation is licensed under the very permissive 2-clause BSD open source license. The code is hosted on GitHub at the following URL:... read more
The QDK/C-ThreadX (see http://www.state-machine.com/threadx ) has been updated for QP/C 5.3.0.
The QDK/C++-ThreadX (see http://www.state-machine.com/threadx ) has been updated for QP/C++ 5.3.0.
The QDKs have been improved with respect to the previous version. Also QS output has been fixed so it actually works. The updated Manual is provided as well.
NOTE: Even though the QDKs use the specific ThreadX port (Win32 demo in this case), the QDKs have been designed generically to rely exclusively on the ThreadX API. In other words, the QDKs should not require any changed to run on any CPU/Compiler supported by ThreadX.
#95 "Resizing of state with history generates "Assertion failed" error." #96 "Incoming transitions to a history connector stretch incorrectly when the state is moved" #97 "Newly added history connector not moving when the state is resized."... [read more](/p/qpc/news/2014/05/qm-313-released/)
The new QP/C++ Development Kit for Qt (https://sourceforge.net/projects/qpc/files/QDK-Cpp_Qt ) allows you to build highly modular, well structured, multithreaded desktop, embedded, or mobile Qt5 applications with dazzling GUI based on the concept of active objects (a.k.a. actors).
QP/C++ complements Qt by providing the high-level structure, while Qt renders the GUI and provides various services. The active object computing model underlying QP raises the level of abstraction and provides a more productive architecture, which is safer to use, more efficient, and easier to understand than the programming with the low-level QThread and QWaitCondition classes of Qt, which are just thin wrappers around the POSIX-threads API.... read more
QM 3 brings new type of code generation for the new state machine implementation added in QP5. This new type of state machine implementation in QP5 is based on the new QMsm class, which takes advantage of the QM tool as an advanced "state machine compiler". QM can perform optimizations that were not possible with the C pre-processor alone. Specifically, the QM can easily determine the LCA (Least-Common-Ancestor) state for every transition and it can generate the complete transition-sequences (sequences of exit/entry/initial actions) at code-generation time. The resulting code is still highly human-readable, but it is no longer human-maintainable. The lab tests indicate that the new "housekeeping" code for executing hierarchical state machines is about twice as fast as the code based on the QHsm class. Additionally, the new code requires less run-time support (smaller event processor) and uses 70% less of stack space in the call to the QMsm::dispatch() operation than QHsm::dispatch().... read more
The new milestone release 5.x of QP/C and QP/C++ is available for download. The release notes provide a quick summary of new features. You can also find a slightly more detailed presentation "New Features in QP5" in PDF at: http://www.state-machine.com/qp/QP5.pdf
New QDKs for ARM Cortex-M with ARM-KEIL ARMCC and Keil uVision have been just released (see http://www.state-machine.com/arm/). All QP framework types are supported.
Two new QP Development Kits (QDKs) for Microchip PIC32MX microcontrollers with MPLABX and the XC32 compiler have been just released (see http://www.state-machine.com/pic ). Both QP/C and QP/C++ are supported. (Yes, you can program a PIC in C++!).
As usual, the QDKs come with an extensive QDK Manual (see http://www.state-machine.com/pic/QDK_PIC32-XC32.pdf).
QM 2.3.1 introduces a number of features and fixes most of the reported bugs in QM (see feature requests and bug reports. The most important new features include model-wide search and replace, storing/restoring the current QM session, several improvements to the code editor, improved code generation, generation of comments from documentation, improved window-tabs, and many many more.
The just released QP 4.5.04 contains the support for ARM Cortex-M4F (FPU). The updated AppNotes "QP and ARM Cortex-M with IAR" and "QP and ARM Cortex-M with GNU" describe all the details of the port and the support for the FPU.
The QP ports to Cortex-M4F, both the cooperative and preemptive QK kernel, fully support the very interesting hardware feature called "lazy stacking" [ARM AN298], which is the default once the FPU is enabled. This feature avoids an increase of interrupt latency by skipping the stacking of floating-point registers, if not required. This feature is described in the ARM Application Note 298
“Cortex-M4(F) Lazy Stacking and Context Switching”, available at:
http://infocenter.arm.com/help/topic/com.arm.doc.dai0298a/DAI0298A_cortex_m4f_lazy_stacking_and_context_switching.pdf... read more
The new QDK for Android-NDK has just been released. The QDK is available as external download to the QP/C Baseline Code (see http://www.state-machine.com/android). Also, the Android-NDK port and examples have been released to the QP/C Git repository on SourceForge (https://sourceforge.net/p/qpc/qpc).
The integration of QP/C with Android at the native code level (running outside the Android's Delvik Virtual Machine) is interesting for applications requiring efficiency and real-time, or near real-time performance, such as games.... read more
QP/C++ 4.4.00 has been finally released. The main pupose of this relase is MISRA-C++:2008 compliance, strong-type checking compliance, update of PC-Lint option files and tests, and general cleanup.
The extensive Application Note "QP/C++ MISRA-C++:2008 Compliance Matrix" is still under development and will be released soon.
The QP/C++ Baseline code comes with several standard ports and examples (DOS, Win32, Win32-1T, Linux, Linux-64bit, ARM Cortex-M3 IAR, and ARM-Cortex-M3 GNU). The other QP/C++ Development Kits (QDKs) will be updated to the 4.4.00 level in the coming weeks.
The complete QP source code trees, including all ports and examples, are available in Git repositories hosted on SourceForge.net.
The Application Note "Accessing QP Git Repositories on SourceForge.net" describes how to access the QPsource code via Git repositories on SourceForge.net. Specifically, you will learn how to install Git on Windows and how to clone the complete source trees for QP/C, QP/C++, QP-nano and Qtools. You will also learn how to fetch updates to the source trees as they are pushed to the QP Git repository.
The QP/C 4.4.00 release complies with most of the MISRA-C:2004 rules and all remaining deviations are carefully insulated and encapsulated into very specific contexts. The framework goes even beyond MISRA, by complying with string type checking and a consistent, documented coding standard.
QP/C comes with extensive support for automatic rule checking by means of PC-Lint, which is designed not just for proving compliance of the QP/C framework code, but more importantly, to aid in checking compliance of the application-level code. Any organization engaged in designing safety-related embedded software could benefit from the unprecedented quality infrastructure built around the QP/C framework.... read more
New QDKs for ARM Cortex-M0 are now available for download (at state-machine.com/arm). The QDKs have been tested with the LPCXpresso board based on the LPC1114 MCU (LPC11xx is the first Cortex-M0 silicon available at this point). The QDKs for the Cortex-M3-based LPC1343 have been also released today.
This QP 4.1.03 release is concerned with the ARM Cortex ports and examples. Specifically, this release contains the following improvements:
Unified source code for ARM Cortex-M3 and the new ARM Cortex-M0 cores, including the common code for the preemptive QK kernel.
Compliance with the Cortex Microcontroller Software Interface Standard (CMSIS) in all ARM Cortex examples.
Backward-compatible support for the new LM3S811 EVAL Rev C board with different OLED display than previous revisions. (NOTE: The OSRAM 96x16x1 OLED used in REV A-B boards has been replaced RITEK 96x16x1 OLED used in Rev C.)... read more