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
The new QP Development Kits (QDKs) for Microchip PIC24 and dsPIC microcontrollers have been released. The QDKs (for QP/C, and QP-nano) demonstrate how to use the QP frameworks on the 16-bit PIC devices. The QDKs have been tested on the Explorer 16 development board.
The new QDKs include both the cooperative "vanilla" kernel as well as the fully preemptive QK kernel. Both versions fully support interrupt nesting as well as "zero-latency" non-maskable interrupts. The QDK/C contains full support for the QS software tracing.
Complete QP/C, QP/C++, and QP-nano codesets with all ports and examples have been released to the Subversion repository on Sourceforge.net:
The Subversion download is ideal for users, who want to get the latest QP ports and examples even before they make it to the official release.
The open source lwIP TCP/IP stack has been natively integrated with the QP state-machine frameworks. The newly released QP-lwIP integration example code available for download from www.state-machine.com/lwip provides all you need to develop professional TCP/IP applications with lwIP, including embedded code and host-based utilities.
The example code accompanying the extensive Application Note (see http://www.state-machine.com/lwip/AN_QP_and_lwIP.pdf) runs on the LM3S6965 Cortex-M3 MCU with integrated Ethernet MAC and PHY. But the QP-lwIP integration has been carefully designed for portability. All hardware-specific code is clearly separated in the Ethernet/lwIP device driver with the clean interface to the lwIP stack and the QP application. ... read more
The new QP Development Kits (QDKs) for Texas Instruments TMS320C28x DSPs have been released. The QDKs (for QP/C, QP/C++, and QP-nano) demonstrate how to use the QP frameworks on the DSP devices. The QDKs have been tested on the new Piccolo controlSTICK platform from TI (www.ti.com/f28xgetstarted).
The new QDKs include both the cooperative "vanilla" kernel as well as the fully preemptive QK kernel. The QDKs allow statndalone operation with booting from the on-chip Flash and demonstrate how to place selected time-critical code modules and data in the on-chip RAM for best performance. The QDK/C and QDK/C++ contain full support for the QS software tracing, which is tricky on machines that cannot address individual bytes (the smallest quantity separately addressable on TMS320 is 16-bit word.)
The new QDKs are available for download from http://www.state-machine.com/tms320c28x.
The QP v4 milestone release is made for the
new book "Practical UML Statecharts in C/C++, Second Edition" [PSiCC2]. The standard distributions of QP/C, QP/C++, and QP-nano version 4 include very detailed, searchable, hyper-linked Reference Manuals in HTML and CHM formats. The Reference Manuals now replace the "QP Programmer's Manuals" for previous versions 3.x.
QP v4 contains numerous improvements, but perhaps the most important change from the application programmer's perspective is that the coding techniques for state machines have changed in QP v4. While the changes are quite simple, QEP v4 breaks the backward compatibility with QEP 3.x, meaning that some manual changes to the state machines implemented with earlier versions are necessary. The Download Notes describe what's new in QP/C, QP/C++, and QP-nano v4.0.... read more
Quantum Leaps, LLC (http://www.quantum-leaps.com) a provider of lightweight, open source, real-time frameworks for embedded systems, released today its Quantum Platform (QP) family of frameworks to the SourceForge.net code repository. The baseline code for QP/C, QP/C++, and QP-nano, as well as the extensive documentation and examples are available for download from https://sourceforge.net/projects/qpc/.... read more