Quick Overview of QP Frameworks & QM Modeling...

Post on 29-May-2020

14 views 0 download

transcript

state-machine.com

Quick Overview ofQuick Overview ofQP Frameworks & QM Modeling Tool

state-machine.com 2

Presentation Outline

• What is QP?• Active Objects (Actors) for Real-Time Embedded Systems• Hierarchical State Machines (UML Statecharts)• QM--Free Graphical Modeling and Code Generation Tool• QS Software Tracing• MISRA Compliance

What is QP?

state-machine.com 3

What is QP?● Family of active object (actor) frameworks

for real-time embedded (RTE) systems

QP/C, QP/C++, and QP-nano

state-machine.com 4

Where does it run? (bare metal)● Single-chip 32-bit, 16-bit, and some 8-bit microcontrollers

32-bit (ARM): ARM Cortex-M, ARM7/9 (TI, NXP, Atmel, ST...)

32-bit (not ARM): Renesas RX, AVR32, PIC32, TI C28, C55 DSPs

16-bit: TI MSP430, Microchip PIC24/dsPIC, Renesas R8C

8-bit: AVRmega, 68HC08

state-machine.com 5

Where does it run? (OS/RTOS)

● QP/C and QP/C++ can run on top of an OS or RTOS

Big OS: POSIX (Linux, QNX, etc.), Win32

Big OS: Qt GUI and application framework

RTOS: ThreadX, uC/OS-II, ...

state-machine.com 6

Who is using it?● Millions of products: medical, defense, communication,

transportation, industrial, consumer, ...

state-machine.com 7

How is it licensed?● QP frameworks are available under dual-licensing model:

– GPL (v3) open source license

– Commercial closed source licenses

● QM modeling tool is freeware

NOTE: If your company has a policy forbidding open source in your product, QP can be licensed commercially

state-machine.com 8

Presentation Outline

• What is QP?• Active Objects (Actors) for Real-Time Embedded Systems• Hierarchical State Machines (UML Statecharts)• QM--Free Graphical Modeling and Code Generation Tool• QS Software Tracing• MISRA Compliance

Active Objects (Actors) for RTE Systems

state-machine.com 9

Active Objects (Actors)● Active objects (actors) automatically enforce the

following best practices of concurrent programming(*):

1. Keep all of the task's data local, bound to the task itself and encapsulated from the rest of the system.

2. Communicate among tasks asynchronously via intermediary event objects. This avoids blocking tasks to wait on each other.

3. Tasks should spend their lifetime responding to incoming events, so their mainline should consist of an event loop.

4. Tasks should process events one at a time (to completion), thus avoiding any concurrency hazards within a task itself.

(*) Articles by: Herb Sutter, Edward E. Lee, dr. Dave Stewart, Jack Ganssle, ...

state-machine.com 10

Active Objects for Embedded MCUs● Active objects cannot operate in a vacuum and require a

software infrastructure (framework)

QP frameworks are smaller than typical bare-bones RTOSes

state-machine.com 11

Asynchronous Communication● All events are delivered asynchronously:

1. Each active object has its own event queue and receives all events exclusively through this queue.

2. Event producers merely post events to the AO queues but they don't wait in line for the processing of the events.

state-machine.com 12

True Encapsulation for Concurrency● Traditional encapsulation with synchronous methods

does not encapsulate anything in terms of concurrency

→ AOs are the most stringent form of object-oriented programming

state-machine.com 13

Run-to-Completion (RTC) Processing● AOs process events one at a time (to completion)

→ RTC should not be confused with thread preemption

→ AOs can preempt each other

state-machine.com 14

No Blocking (!)● Event-driven AOs don't block to wait for events

→ Therefore AOs remain responsive to events

→ Easy to add new events

→ In contrast, all RTOS inter-task communication and synchronization is based on blocking.

state-machine.com 15

Super-Fast Preemptive Kernel● Non-blocking AOs can work with non-blocking kernels

→ Preemptive multitasking with a single stack

→ Fully compatible with Rate-Monotonic Analysis (RMA)

→ Less CPU, less RAM, shorter latencies.

state-machine.com 16

Presentation Outline

• What is QP?• Active Objects (Actors) for Real-Time Embedded Systems• Hierarchical State Machines (UML Statecharts)• QM--Free Graphical Modeling and Code Generation Tool• QS Software Tracing• MISRA Compliance

Hierarchical State Machines (UML Statecharts)

state-machine.com 17

Specifying Behavior of Active Objects● Each Active Object in QP has a state machine

→ Naturally handle events based on the type and the system state

→ Avoids “spaghetti code”--No 1. problem of event-driven systems.

state-machine.com 18

Transition Explosion in Traditional FSMs● Traditional Finite State Machines inflict repetitions

→ There is no way to capture similar transitions

state-machine.com 19

Reuse of Behavior Through State Nesting● Hierarchical State Machines support state nesting

→ Nested states inherit the behavior from the surrounding states

state-machine.com 20

Manual Coding of HSMs in QP/C++QState Calc::on(Calc *me, QEvt const *e) { switch (e->sig) { case Q_ENTRY_SIG: { // entry action BSP_message("on-ENTRY"); return Q_HANDLED(); } case Q_EXIT_SIG: { // exit action BSP_message("on-EXIT"); return Q_HANDLED(); } case Q_INIT_SIG: { // initial transition BSP_message("on-INIT"); return Q_TRAN(&Calc::ready); } case C_SIG: { // state transition BSP_clear(); // clear the display return Q_TRAN(&Calc::on); } case OFF_SIG: { // state transition return Q_TRAN(&Calc::final); } } return Q_SUPER(&QHsm::top); // superstate}

state-machine.com 21

Presentation Outline

• What is QP?• Active Objects (Actors) for Real-Time Embedded Systems• Hierarchical State Machines (UML Statecharts)• QM--Free Graphical Modeling and Code Generation Tool• QS Software Tracing• MISRA Compliance

QM—Free Graphical and Code Generation Tool

state-machine.com 22

What is QM?• Free graphical modeling and code generation tool for QP

state-machine.com 23

How Does it Work?1. Create AO classes

2. Draw state machines

3. Add actions/guard code

4. Generate code

state-machine.com 24

What's Special about QM? Turning code generation“upside down”...

state-machine.com 25

Presentation Outline

• What is QP?• Active Objects (Actors) for Real-Time Embedded Systems• Hierarchical State Machines (UML Statecharts)• QM--Free Graphical Modeling and Code Generation Tool• QS Software Tracing• MISRA Compliance

QS Software Tracing

state-machine.com 26

Why Software Tracing?Biggest problem: limited visibility into the embedded system

→ You need to observe the system live; not stopped in a debugger

state-machine.com 27

QS Software Tracing SystemQS (QP Spy ) tracing provides wealth of information:

→ All state machine activities (entering/exiting states, transitions,...)

→ All event posting, event queuing, event dispatching, …

→ Real-time Kernel scheduling, task switches, ...

state-machine.com 28

QSPY Host ApplicationQSPY host application receives and displays the QS data:

→ → Human-readable formatHuman-readable format

→ → Interface to MATLAB/GNU-OctaveInterface to MATLAB/GNU-Octave

→ → Interface to Message-Sequence-Chart (MSC) generator Interface to Message-Sequence-Chart (MSC) generator

state-machine.com 29

Presentation Outline

• What is QP?• Active Objects (Actors) for Real-Time Embedded Systems• Hierarchical State Machines (UML Statecharts)• QM--Free Graphical Modeling and Code Generation Tool• QS Software Tracing• MISRA Compliance MISRA Compliance

state-machine.com 30

MISRA ComplianceSafe subset of C or C++ for use in safety critical applications

→ → MISRA Compliance Matrices for QP/C, QP/C++, and QP-nanoMISRA Compliance Matrices for QP/C, QP/C++, and QP-nano

→ → Complete suite of scripts and tools to automate checking of Complete suite of scripts and tools to automate checking of comliance of the application-level code with PC-Lintcomliance of the application-level code with PC-Lint