QP/C 8.1.1
Real-Time Event Framework
Loading...
Searching...
No Matches
QP/C Extras

Downloading & Installing QP/CQP/C Tutorial

About QP/C Extras

The open source GPL distribution of QP/C can be augmented by the QP/C Extras, which provide more advanced QP/C features, such as:

Licensing and Getting QP/C Extras

The QP/C Extras are licensed commercially↑ and available to the commercial licensees with the active Support Term.

Remarks
If you already are a commercial licensee, please contact Quantum Leaps technical support↑ to obtain the QP/C Extras matching the indicated public QP/C version.
Remarks
The QP/C Extras are also available for evaluation (upon request↑).

Installing QP/C Extras

The QP/C Extras are delivered in a ZIP archive with the following naming convention:

qpc-extras_{version}.zip  // e.g., qpc-extras_8.1.0.zip
Note
The ZIP archive is password-protected, whereas the password is the commercial/evaluation license number you received from Quantum Leaps.

The ZIP archive should be extracted and merged into the matching existing open-source QP/C installation. For example, qpc-extras_8.1.0.zip should be extracted into the existing installation of QP/C 8.1.0.

QP/C Extras Directories & Files

QP/C Extras consist of the following directories and files:

qpc/             // qpc installation directory
|
+---include/
|       qs.h     // QS target-resident software tracing public header file
|       qs_pkg.h // QS target-resident software tracing package-scope header
|       qxk.h    // QXK dual-mode real-time kernel header file
|
+---src/
|   |
|   +---qs/      // QS target-resident software tracing component implementation
|   |       qs.c
|   |       qs_64bit.c
|   |       qs_fp.c
|   |       qs_rx.c
|   |       qutest.c
|   |
|   \---qxk/      // QXK dual-mode component implementation
|           qxk.c
|           qxk_mutex.c
|           qxk_sema.c
|           qxk_xthr.c
|
+---ports/
|   +---arm-cm/
|   |   +---qxk/
|   |   |   +---armclang/
|   |   |   |       qxk_port.c
|   |   |   |       qp_port.h
|   |   |   |       qs_port.h
|   |   |   |
|   |   |   +---gnu/
|   |   |   |       qxk_port.c
|   |   |   |       qp_port.h
|   |   |   |       qs_port.h
|   |   |   |
|   |   |   \---iar/
|   |   |           qxk_port.c
|   |   |           qp_port.h
|   |   |           qs_port.h
|   |   |
|   |   \---qutest/
|   |           qp_port.h
|   |           qs_port.h
|   |
|   +---posix-qutest/
|   |       qp_port.h
|   |       qs_port.h
|   |       qutest_port.c
|   |       safe_std.h
|   |
|   \---win32-qutest/
|           qp_port.h
|           qs_port.h
|           qutest_port.c
|           safe_std.h
|
+---static-analysis/
|   |
|   \---pclp
|       |   au-barr.lnt      // BARR-C:2018 stylistic guidelines for C code
|       |   au-ds.lnt        // Dan Saks' recommendations for placing 'const' and 'volatile'
|       |   au-misra5.lnt    // PCLP MISRA-C:2025 (MC5) confiuration for rules checking
|       |   co-gnu_arm.bat   // script to generate configuration for GNU-ARM toolset
|       |   co-gnu_arm.h     // generated PCLP header file for GNU-ARM (14.3 at this time)
|       |   co-gnu_arm.lnt   // generated PCLP configuration file for GNU-ARM (14.3 at this time)
|       |   co-mingw32.bat   // script to generate configuration for MinGW32 toolset
|       |   co-mingw32.h     // generated PCLP header file for MinGW32 (14.2 at this time)
|       |   co-mingw32.lnt   // generated PCLP configuration for MinGW32 (14.2 at this time)
|       |   make.bat         // script to run the PCLP analysis
|       |   metrics_file.py  // Python script to generate file metrics report from PCLP data
|       |   metrics_func.py  // Python script to generate function metrics report from PCLP data
|       |   options.lnt      // PCLP configuration with Deviation Records in QP source code
|       |   qpcpp.lnt        // PCLP configuration with Deviation Permits in QP applications
|       |   qp_config.h      // QP compile-time configuration used for "linting" QP source code
|       |   std.lnt          // PCLP standard configuration used for "linting" QP source code
|       |
|       +---qk/
|       |       qp_port.hpp  // "QK port" for "linting" QK kernel code
|       |       qs_port.hpp  // "QS port" for "linting" QK kernel code
|       |
|       +---qv/
|       |       qp_port.hpp  // "QV port" for "linting" QV kernel code
|       |       qs_port.hpp  // "QS port" for "linting" QV kernel code
|       |
|       \---qxk/
|               qp_port.hpp   // "QXK port" for "linting" QXK kernel code
|               qs_port.hpp   // "QS port" for "linting" QXK kernel code
|
\---tests/
    |
    |   // unit tests (TUN) (host and embedded target)
    +---TUN_QP_qep_hsm/       // unit tests (TUN) for the qep_hsm module
    |   +---src/              // code for exercising the module under test
    |   |       tstsm.c       // QM-generated state machine implementation
    |   |       tstsm.h       // QM-generated state machine interface
    |   |       tstsm.qm      // QM model to generate code
    |   |       tstsm_sf.c    // QM-generated state machines for Safety Functions
    |   |       tstsm_sf.h    // QM-generated state machines interface
    |   \---test/
    |   |       Makefile          // makefile to build & run tests on the host
    |   |       nucleo-u545re.mak // makefile to build & run tests on NUCLEO-U545
    |   |       test_fixture.c    // QUTest fixture
    |   |       TUN_QP_qep_hsm.py    // QUTest script for main functionality
    |   |       TUN_QP_qep_hsm_sf.py // QUTest script for Safety Functions
    |   |
    +---TUN_QP_qep_msm/       // unit tests (TUN) for the qep_msm module
    |      ...
    +---TUN_QP_qf_act/        // unit tests (TUN) for the qf_act module
    |      ...
    +---TUN_QP_qf_actq/       // unit tests (TUN) for the qf_actq module
    |      ...
    +---TUN_QP_qf_defer/      // unit tests (TUN) for the qf_defer module
    |      ...
    +---TUN_QP_qf_dyn/        // unit tests (TUN) for the qf_dyn module
    |      ...
    +---TUN_QP_qf_mem/        // unit tests (TUN) for the qf_mem module
    |      ...
    +---TUN_QP_qf_ps/         // unit tests (TUN) for the qf_ps module
    |      ...
    +---TUN_QP_qf_qact32/     // unit tests (TUN) for the qf_qact module (32 AOs)
    |      ...
    +---TUN_QP_qf_qact64/     // unit tests (TUN) for the qf_qact module (64 AOs)
    |      ...
    +---TUN_QP_qf_qeq/        // unit tests (TUN) for the qf_qeq module
    |      ...
    +---TUN_QP_qf_qmact/      // unit tests (TUN) for the qf_qmact module
    |      ...
    +---TUN_QP_qf_time/       // unit tests (TUN) for the qf_time module
    |      ...
    +---TUN_QP_qutest/        // unit tests (TUN) for the qutest module
    |      ...
    |
    |   // integration tests (TIN) (embedded target only)
    +---TIN_QP_mem/           // integration tests (TIN) for memory protection
    |   \---test_mpu/
    +---TIN_QP_qk/            // integration tests (TIN) for QK kernel
    |   \---test_sched/
    +---TIN_QP_qv/            // integration tests (TIN) for QV kernel
    |   \---test_sched/
    +---TIN_QP_qxk/           // integration tests (TIN) for QXK kernel
        +---test_mutex/
        \---test_sched/


Getting StartedQP/C Tutorial