QP actor frameworks and QM modeling tool / News: Recent posts

New Lesson 14 Added to the Embedded Programming Video Course

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

Posted by Quantum Leaps 2 days ago Labels: Video Course

QM 3.2.1 Released

New version 3.2.1 of the QM modeling and automatic code generation tool has just been released and is available for download from:

https://sourceforge.net/projects/qpc/files/QM/3.2.1/

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

Posted by Quantum Leaps 2014-10-11 Labels: QM

New QDKs for FreeRTOS

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

Posted by Quantum Leaps 2014-09-29 Labels: FreeRTOS QDK-C QDK-Cpp

New QDK for Arduino 1.5.7

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

Posted by Quantum Leaps 2014-09-10

QP/C ported to OSEK/VDX

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

Posted by Quantum Leaps 2014-08-19 Labels: OSEK OSEK/VDX Automotive ERIKA Enterprise AUTOSAR

QM 3.2.0 released

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.

Posted by Quantum Leaps 2014-07-25 Labels: QM Qt LGPL free tool modeling

Code-Signing Certificates added to all .EXE Files

In response to user requests and to ease downloading of QP and QM software, all latest Windows .EXE files available for download from

https://sourceforge.net/projects/qpc/files

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

Posted by Quantum Leaps 2014-07-08 Labels: Code-Signing Certificates

QP/C and QP/C++ ports to embOS RTOS from SEGGER

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.

Posted by Quantum Leaps 2014-07-01 Labels: RTOS QDK embOS SEGGER

QP implementation in JavaScript available for download!

Mr. Wanqiang Xia has contributed a QP active object framework implementation in JavaScript (jsqf). 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 JavaScript!

This QP/JavaScript 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

Posted by Quantum Leaps 2014-05-13

QP implementation in Java available for download!

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

Posted by Quantum Leaps 2014-05-13

QP/C and QP/C++ ports to ThreadX RTOS updated for QP5

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.

Posted by Quantum Leaps 2014-05-13

QM 3.1.3 released

The QM 3.1.3 release (see https://sourceforge.net/projects/qpc/files/QM ) fixes the following bugs, all related to the history
connector (see https://sourceforge.net/p/qpc/bugs):

#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/)
Posted by Quantum Leaps 2014-05-13

Active Objects Meet Qt...

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

Posted by Quantum Leaps 2014-05-13

QM 3.0.0-beta released

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

Posted by Quantum Leaps 2013-12-06

QP5 is Here--See What's New!

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

--MMS

Posted by Quantum Leaps 2013-10-06

New QDKs for ARM Cortex-M with ARM-KEIL ARMCC and Keil uVision4

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.

Enjoy!

Posted by Quantum Leaps 2013-06-30

New QDKs for PIC32 with MPLABX

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).

Enjoy!

--Miro

Posted by Quantum Leaps 2013-06-24

QM 2.3.1 released

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.

Enjoy!

Posted by Quantum Leaps 2013-05-16

QP 4.5.04 released

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

Posted by Quantum Leaps 2013-02-12

New QP Development Kit for Android-NDK

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

Posted by Quantum Leaps 2012-12-19

QP/C++ brings MISRA-C++:2008 compliance

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.

Posted by Quantum Leaps 2012-05-02

QP on Git

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.

Posted by Quantum Leaps 2012-03-30

QP/C 4.4.00 with MISRA-C:2004 and PC-Lint 9.x

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

Posted by Quantum Leaps 2012-02-01

New QDKs for ARM Cortex-M0

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.

Posted by Quantum Leaps 2010-02-26

QP 4.1.03 Release

This QP 4.1.03 release is concerned with the ARM Cortex ports and examples. Specifically, this release contains the following improvements:

  1. Unified source code for ARM Cortex-M3 and the new ARM Cortex-M0 cores, including the common code for the preemptive QK kernel.

  2. Compliance with the Cortex Microcontroller Software Interface Standard (CMSIS) in all ARM Cortex examples.

  3. 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

Posted by Quantum Leaps 2010-02-22