Skip to content

Examples for the QP/C++ Real-Time Embedded Framework

Notifications You must be signed in to change notification settings

QuantumLeaps/qpcpp-examples

Repository files navigation

Brought to you by:

Quantum Leaps


About qpc-examples

This repository contains the application examples for the QP/C Real-Time Embedded Framework (see https://github.com/QuantumLeaps/qpc ).

This repository can be used in several ways:

Standalone (examples in the cmsis-packs folder)

+---cmsis-packs    <=== standalone examples
|   +---dpp_nucleo-c031c6-qk-gcc
|   +---dpp_nucleo-c031c6-qk-keil
|   +---dpp_nucleo-c031c6-qk-stm32cube
|   \---dpp_nucleo-u545re-qk-stm32cube
|

As a sub-module to the qpc repository

+---arm-cm
|   +---blinky_ek-tm4c123gxl
|   +---blinky_nucleo-c031c6
|   +---dpp_efm32-slstk3401a
|   |   +---qk
|   |   |   +---armclang
|   |   |   +---gnu
|   |   |   \---iar
|   |   +---qv
|   |   |   +---armclang
|   |   |   +---gnu
|   |   |   \---iar
|   |   +---qview
|   |   |   \---img
|   |   \---qxk
|   |       +---armclang
|   |       +---gnu
|   |       \---iar
|   +---dpp_ek-tm4c123gxl
|   +---dpp_ek-tm4c123gxl_mpu
|   +---dpp_mbed-lpc1768
|   +---dpp_nucleo-c031c6
|   +---dpp_nucleo-c031c6_mpu
|   +---dpp_nucleo-h743zi
|   +---dpp_nucleo-l053r8
|   +---dpp_nucleo-l152re
|   +---dpp_nucleo-l552ze
|   +---dpp_nucleo-u545re
|   +---dpp_stm32f4-discovery
|   +---game_efm32-slstk3401a
|   +---low-power_ek-tm4c123gxl
|   \---real-time_nucleo-l053r8
|
+---arm-cr
|   +---blinky_launchxl2-tms57012
|   \---dpp_launchxl2-tms57012
|
+---embos
|   \---arm-cm
|       \---dpp_nucleo-h743zi
+---emwin
|   +---demo_no_wm
|   \---demo_with_wm
|
+---freertos
|   \---arm-cm
|       +---dpp_ek-tm4c123gxl
|       \---dpp_nucleo-h743zi
|
+---lwip
|   \---arm-cm
|       \---lwip_ek-lm3s6965
|
+---msp430
|   +---blinky_msp-exp430f5529lp
|   +---blinky_msp-exp430g2
|   \---dpp_msp-exp430f5529lp
|
+---posix-win32   <== examples for the host computer
|   +---blinky
|   +---calc
|   +---calc2
|   +---calc_sub
|   +---comp
|   +---defer
|   +---dpp
|   +---dpp-posix
|   +---dpp_comp
|   +---history_qhsm
|   +---history_qmsm
|   +---qhsmtst
|   +---qmsmtst
|   +---reminder
|   \---reminder2
|
+---threadx
|   \---arm-cm
|       +---dpp_ek-tm4c123gxl
|       \---dpp_stm32f429-discovery
+---uc-os2
|   \---arm-cm
|       \---dpp_ek-tm4c123gxl
+---zephyr
|   +---blinky
|   \---dpp
|
+---qutest    <== examples for QUTest testing harness
|   +---blinky
|   +---dpp
|   +---dpp-comp
|   +---evt_par
|   +---qhsmtst
|   +---qmsmtst
|   +---self_test
|   +---start_seq
|   +---unity_basic
|   +---unity_ledbar
|   +---unity_ledbar2
|   +---unity_mock
|   \---unity_strlen
|       +---qutest
|       +---src
|       \---test
|
+---qview-dpp   <== examples for QView monitoring (DPP example)
|   +---img
|       dpp.py
|       dpp1.py
|       qview-dpp.lnk
|       qview-dpp.lnk
|
+---qwin-gui   <== examples for the QWin GUI
|   +---dpp-gui
|   \---game-gui
|

Examples for QTest Testing System

The "qutest" Python package (included in the QTools collection) is a powerful testing system. It has been specifically designed for deeply embedded systems, but also supports unit and integration testing of embedded code on host computers ("dual targeting"). QUTest is the fundamental tooling for Test-Driven Development (TDD) and Behavior- Driven Development (BDD) of QP/C/C++ applications , which is a highly recommended best-practice.

The following screen shot show a typical QUTest run with the QSPY ouptut in the background.

Examples for QView Monitoring System

The "qview" Python package (included in the QTools collection) is a powerful Visualization and Monitoring system, which allows embedded developers to create virtual Graphical User Interfaces in Python to monitor and control their embedded devices from a host (desktop) computer. The interfaces created by QView can visualize the data produced by QP/Spy software tracing system and can also interact with the embedded target by sending various commands.

NOTE You need to install the qview package in your Python setup.
pip install qview

The python scripts qview-dpp/dpp.py and qview-dpp/dpp1.py will allow monitoring of all DPP examples running on any supported board (or on the host computer). Here is how you can launch the QView monitoring for DPP:

pythonw dpp.py

pythonw dpp1.py

The following screen shot shows QView for the DPP (Dining Philosophers Problem) application with the QSPY ouptut in the background.