QP/C  7.4.0-rc.2
Real-Time Embedded Framework
No Matches

General Comments

The QP/C framework can be easily adapted to various operating systems, processor architectures, and compilers. Adapting the QP/C software is called porting and the QP/C framework has been designed from the ground up to make porting easy.

The QP/C distribution contains many QP/C ports, which are organized into the three categories:

  • PC-Lint-Plus (generic C compiler) QP/C "port" to the PC-Lint Plus static analysis tool (a "compiler")
  • Native Ports adapt QP/C to run on bare-metal processors "natively", using one of the built-in kernels (QV, QK, or QXK)
  • 3rd-Party RTOS Ports adapt QP/C to run on top of a 3rd-Party Real-Time Operating System (RTOS)
  • General-Purpose OS Ports adapt QP/C to run on top of a General Purpose Operating System (GPOS), such as Linux or Windows.

Code Structure

All QP/C ports are located in sub-directories of the ports/ top-level directory, with the hierarchical organization outlined below:

qpc|qpcpp/ // QP/C or QP/C++ installation directory
+---ports/ // ports directory
| |
| [1a]-arm-cm/ // ports for ARM Cortex-M
| | +---qk/ // ports for preemptive QK kernel
| | | +---armclang/ // port with ARM-Clang (Compiler Version 6) toolchain
| | | +---gnu/ // port with GNU-ARM toolchain
| | | +---iar/ // port with IAR toolchain
| | +---qv/ // ports for non-preemptive QV kernel
| | \---qxk/ // ports for dual-mode QXK kernel
| |
| [1b]-arm-cr/ // ports for ARM Cortex-R
| . . .
| |
| [2a]-embos/ // ports for embOS (3rd-party RTOS)
| |
| [2b]-freertos/ // ports for FreeRTOS (3rd-party RTOS)
| . . .
| |
| [3a]-posix/ // port to POSIX (multithreaded)
| |
| [3b]-posix-qv/ // port to POSIX (single-threaded)
| |
| [4a]-win32/ // port to Win32 (multithreaded)
| |
| [4b]-win32-qv/ // port to Win32 (single-threaded)

[1a-b] Native Ports are located in sub-directories named after the CPU architecture, such as arm-cm for ARM Cortex-M or arm-cr for ARM Cortex-R. Under that directory, the sub-directories qk and qv contain ports for the QK and QV kernels, respectively.

[2a-b] Ports for 3rd-party RTOS are located in sub-directories named after the RTOS, such as embos for embOS RTOS or freertos for FreeRTOS.

[3a-b] Ports for the POSIX OS Standard are located in sub-directories named posix for the POSIX API (multi-threaded variant) and posix-qv for the POSIX API (single-threaded) variant.

[4a-b] Ports for the Win32 API are are located in sub-directories named win32 for the Win32 API (multi-threaded variant) and win32-qv for the Win32 API (single-threaded) variant.

Because the QP distribution contains all ports, the number of sub-directories and files in the ports folder may seem daunting. However, knowing the structure of the ports folder, you can simply delete the sub-directories that are not relevant to you.