mirror of
https://github.com/QuantumLeaps/qpcpp.git
synced 2025-01-14 05:42:57 +08:00
126 lines
6.7 KiB
Plaintext
126 lines
6.7 KiB
Plaintext
/*! @page ports Ports
|
|
|
|
@section ports_gen 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:
|
|
|
|
- @subpage ports_native "Native Ports" adapt QP/C++ to run on bare-metal processors "natively", using one of the built-in kernels (@ref qv "QV", @ref qk "QK", or @ref qxk "QXK")
|
|
|
|
- @subpage ports_rtos "3rd-Party RTOS Ports" adapt QP/C++ to run on top of a 3rd-Party Real-Time Operating System (RTOS)
|
|
|
|
- @subpage ports_os "3rd-Party OS Ports" adapt QP/C++ to run on top of a 3rd-Party Operating System (OS), such as @ref win32 "Windows" or @ref posix "Linux".
|
|
|
|
|
|
------------------------------------------------------------------------------
|
|
@section ports_code Port Code Structure
|
|
Starting with QP/C++ release 5.4.0, **all** available ports are bundled into the QP/C++ download, as opposed to being distributed as separate QP Development Kits (QDKs). The main benefit is of this approach is that it greatly reduces chances of mistakes in combining the mainline QP/C++ code with various QDKs. The downside is that the QP/C++ distribution becomes quite large and that ports cannot be added or updated independently from the QP/C++ baseline code.
|
|
|
|
All ports are located in sub-directories of the <span class="img folder">ports</span> <a href="files.html">top-level folder</a>, with the hierarchical organization outlined below:
|
|
|
|
<ul class="tag">
|
|
<li><span class="img folder">ports/</span>
|
|
</li>
|
|
<ul class="tag">
|
|
<li><span class="img folder">arm-cm/</span> — Native ports for ARM-Cortex-M (bare-metal) <span class="tag">A</span>
|
|
</li>
|
|
<ul class="tag">
|
|
<li><span class="img folder">qk/</span> — Port to the @ref qk "preemptive QK kernel"
|
|
</li>
|
|
<ul class="tag">
|
|
<li><span class="img folder">arm</span> — Port to ARM-KEIL toolset
|
|
</li>
|
|
<li><span class="img folder">gnu</span> — Port to GNU toolset
|
|
</li>
|
|
<li><span class="img folder">iar</span> — Port to IAR toolset
|
|
</li>
|
|
<li><span class="img folder">ti</span> — Port to TI/CCS toolset
|
|
</li>
|
|
</ul>
|
|
<li><span class="img folder">qv/</span> — Port to the @ref qv "cooperative QV kernel"
|
|
</li>
|
|
<ul class="tag">
|
|
<li><span class="img folder">arm</span> — Port to ARM-KEIL toolset
|
|
</li>
|
|
<li><span class="img folder">gnu</span> — Port to GNU toolset
|
|
</li>
|
|
<li><span class="img folder">iar</span> — Port to IAR toolset
|
|
</li>
|
|
<li><span class="img folder">ti</span> — Port to TI/CCS toolset
|
|
</li>
|
|
</ul>
|
|
<li><span class="img folder">qxk/</span> — Port to the @ref qxk "blocing QXK kernel"
|
|
</li>
|
|
<ul class="tag">
|
|
<li><span class="img folder">arm</span> — Port to ARM-KEIL toolset
|
|
</li>
|
|
<li><span class="img folder">gnu</span> — Port to GNU toolset
|
|
</li>
|
|
<li><span class="img folder">iar</span> — Port to IAR toolset
|
|
</li>
|
|
<li><span class="img folder">ti</span> — Port to TI/CCS toolset
|
|
</li>
|
|
</ul>
|
|
</ul>
|
|
|
|
<li><span class="img folder">ucos-ii/</span> — Port to uCOS-II (3rd-party RTOS) <span class="tag">B</span>
|
|
</li>
|
|
<ul class="tag">
|
|
<li><span class="img folder">arm-cm</span> — Port to ARM-Cortex-M
|
|
</li>
|
|
<ul class="tag">
|
|
<li><span class="img folder">arm</span> — build with ARM toolset
|
|
</li>
|
|
<li><span class="img folder">iar</span> — build with IAR toolset
|
|
</li>
|
|
</ul>
|
|
</ul>
|
|
|
|
<li><span class="img folder">win32/</span> — Port to Win32 (Windows) <span class="tag">C</span>
|
|
</li>
|
|
<ul class="tag">
|
|
<li><span class="img folder">Debug/</span> — Debug build configuration for VC++ toolset
|
|
</li>
|
|
<li><span class="img folder">dbg/</span> — Debug build configuration for MinGW toolset
|
|
</li>
|
|
<li><span class="img folder">Release/</span> — Release build configuration for VC++ toolset
|
|
</li>
|
|
<li><span class="img folder">rel/</span> — Release build configuration for MinGW toolset
|
|
</li>
|
|
<li><span class="img folder">QSpy/</span> — Spy build configuration for VC++ toolset
|
|
</li>
|
|
<li><span class="img folder">spy/</span> — Spy build configuration for MinGW toolset
|
|
</li>
|
|
</ul>
|
|
|
|
<li><span class="img folder">posix/</span> — Port to POSIX (e.g., Linux) <span class="tag">C</span>
|
|
</li>
|
|
<ul class="tag">
|
|
<li><span class="img folder">dbg/</span> — Debug build configuration for GNU toolset
|
|
</li>
|
|
<li><span class="img folder">rel/</span> — Release build configuration for GNU toolset
|
|
</li>
|
|
<li><span class="img folder">spy/</span> — Spy build configuration for GNU toolset
|
|
</li>
|
|
</ul>
|
|
</ul>
|
|
</ul>
|
|
|
|
<ul class="tag">
|
|
<li><span class="tag">A</span> **Native Ports** are located in sub-directories named after the CPU architecture, such as <span class="img folder">arm-cm</span> for ARM Cortex-M. Under that directory, the sub-directories <span class="img folder">qk</span> and <span class="img folder">qv</span> contain ports for the @ref comp_qk "QK" and @ref comp_qv "QV" kernels, respectively.
|
|
</li>
|
|
|
|
<li><span class="tag">B</span> **Ports for 3rd-party RTOS** are located in sub-directories named after the RTOS, such as <span class="img folder">ucos-ii</span> for uCOS-II RTOS. Under that directory, the sub-directories, such as <span class="img folder">arm-cm</span>, contain examples for the specified CPU architecture, such as ARM Cortex-M here.
|
|
</li>
|
|
|
|
<li><span class="tag">C</span> **Ports for 3rd-party OS** are located in sub-directories named after the OS, such as <span class="img folder">win32</span> for the Win32 API (Windows OS). (NOTE: The builds for desktop operating systems, such as Windows or Linux contain the pre-build QP libraries for the Debug, Release, and Spy build configurations).
|
|
</li>
|
|
</ul>
|
|
|
|
@note
|
|
Because the QP distribution contains *all* ports, the number of sub-directories and files in the <span class="img folder">ports</span> folder may seem daunting. However, knowing the structure of the <span class="img folder">ports</span> folder, you can simply **delete** the sub-directories that are not interesting to you.
|
|
|
|
|
|
@next{ports_native}
|
|
*/
|