Modern Embedded Systems Programming
Embedded software developers are independently re-discovering patterns for building concurrent software that is safer, more responsive and easier to understand than naked threads of a Real-Time Operating System (RTOS). These best practices universally favor non-blocking, asynchronous, event-driven, encapsulated state machines instead of naked, blocking RTOS threads.
While these concepts can be implemented manually on top of the "free threading" approach, a better way is to use an active object (actor) framework, which inherently supports and automatically enforces the best practices of concurrent programming.
The QP™ family of active object frameworks from Quantum Leaps provides a lightweight, reusable architecture designed specifically for deeply embedded systems. The QP family consists of QP/C, QP/C++, and QP-nano frameworks, which are all strictly quality controlled and thoroughly documented. The frameworks are licensed as GPL open source as well as commercially.
The behavior of active objects is specified in QP by means of hierarchical state machines (UML statecharts). The frameworks support manual coding of UML state machines in C or C++ as well as fully automatic code generation by means of the free QM™ graphical modeling tool.
All QP frameworks contain a selection of built-in real-time kernels and can run on bare-metal microcontrollers, completely replacing a conventional RTOS. Native QP ports and ready-to-use examples are provided for major CPU families, such as ARM Cortex-M. QP/C and QP/C++ frameworks can also be used with many traditional RTOSes and desktop OSes (such as Windows and Linux).