mirror of
https://github.com/QuantumLeaps/qpcpp.git
synced 2025-02-04 06:13:00 +08:00
237 lines
14 KiB
Plaintext
237 lines
14 KiB
Plaintext
/**
|
|
\anchor main_page
|
|
\mainpage About QP/C++
|
|
|
|
\image html qp_banner.jpg
|
|
|
|
<a href="http://www.state-machine.com/qm/"><strong>QP™ (Quantum Platform)</strong></a> is a family of lightweight, open source software frameworks for building responsive and modular real-time embedded applications as systems of cooperating, event-driven <a href="http://www.state-machine.com/qp/index.php#Active">active objects</a> (<a href="http://en.wikipedia.org/wiki/Actor_model">actors</a>). The QP™ family consists of QP/C, QP/C++, and QP-nano frameworks, which are all strictly quality controlled, superbly documented, and commercially licensable.
|
|
|
|
\image html qp_components.jpg
|
|
|
|
All QP™ frameworks can run on "bare-metal" single-chip microcontrollers, completely replacing a traditional Real-Time Operating System (RTOS). Ports and ready-to-use examples are provided for most major <a href="http://www.state-machine.com/downloads/index.php#QDK">CPU families</a>. QP/C and QP/C++ can also work with a traditional OS/RTOS, such as: <a href="http://www.state-machine.com/linux/">POSIX (Linux, QNX)</a>, <a href="http://www.state-machine.com/win32/">Windows</a>, <a href="http://www.state-machine.com/android/">Android-NDK</a>, <a href="http://www.state-machine.com/threadx/">ThreadX</a>, <a href="http://www.state-machine.com/ucos2/">MicroC/OS</a>, <a href="http://www.state-machine.com/freertos/">FreeRTOS</a>, etc.
|
|
|
|
The behavior of active objects is specified in QP by means of <a href="http://en.wikipedia.org/wiki/UML_state_machine">hierarchical state machines (UML statecharts)</a>. The frameworks support manual coding of UML state machines in C or C++ as well as fully automatic code generation by means of the free graphical <a href="http://www.state-machine.com/qm/">QM™ modeling tool</a>.
|
|
|
|
\image html PSiCC2_250x200.jpg
|
|
|
|
The QP frameworks are used in millions of products worldwide in aerospace, robotics, consumer electronics, wired and wireless telecommunications, industrial automation, transportation, and many more. The QP frameworks and the QM modeling tool receive over <a href="http://sourceforge.net/projects/qpc/files/stats/timeline?dates=2012-08-28+to+2013-08-28">30,000 downloads a year</a> (not even counting downloads of QP ports).
|
|
|
|
QP is available for download from <a href="http://sourceforge.net/projects/qpc">SourceForge.net</a>--the world's biggest open source repository. The summary of available downloads is also available from <a href="http://www.state-machine.com/downloads">Quantum Leaps download page</a>.
|
|
|
|
For more information about QP, please visit:
|
|
<a href="http://www.state-machine.com/qp"><strong>state-machine.com/qp</strong></a>
|
|
|
|
<HR>
|
|
QP/C++ Licensing
|
|
==============
|
|
|
|
QP/C++ is licensed under the increasingly popular dual licensing model, in which both the open source software distribution mechanism and traditional closed source software distribution models are combined.
|
|
|
|
\note If your company has a policy forbidding open source in your product, all QP frameworks can be licensed commercially, in which case you don't use any open source license and you do not violate your policy.
|
|
|
|
Open Source Projects:
|
|
---------------------
|
|
If you are developing and distributing open source applications under the GNU General Public License (GPL), as published by the Free Software Foundation, then you are free to use the Quantum Leaps software under the GPL version 2 of the License, or (at your option) any later version. Please note that GPL requires that all modifications to the original code as well as your application code (Derivative Works as defined in the Copyright Law) must also be released under the terms of the GPL open source license.
|
|
|
|
Closed Source Projects:
|
|
-----------------------
|
|
If you are developing and distributing traditional closed source applications, you can purchase one of Quantum Leaps commercial licenses, which are specifically designed for users interested in retaining the proprietary status of their code. All Quantum Leaps commercial licenses expressly supersede the GPL open source license. This means that when you license Quantum Leaps software under a commercial license, you specifically do not use the software under the open source license and therefore you are not subject to any of its terms.
|
|
|
|
<HR>
|
|
Contact Information
|
|
===================
|
|
- Quantum Leaps Web site: http://www.state-machine.com
|
|
- Quantum Leaps licensing: http://www.state-machine.com/licensing
|
|
- QP/QM on SourceForge.net: http://sourceforge.net/projects/qpc
|
|
- e-mail: info@quantum-leaps.com
|
|
- Toll-free: 1-866-450-LEAP (US Eastern Standard Time)
|
|
|
|
\image html logo_ql_TM.jpg
|
|
Copyright © 2002-2013 Quantum Leaps, LLC. All Rights Reserved.\n
|
|
http://www.state-machine.com
|
|
|
|
<HR>
|
|
\section files Directories and Files
|
|
|
|
The following annotated directory tree lists the most important directories
|
|
and files provided in the standard QP/C++ distribution.
|
|
|
|
\code
|
|
qpcpp\ - QP/C++ root directory
|
|
|
|
|
+-qpcpp.chm - "QP/C++ Reference Manual" in CHM Help format
|
|
|
|
|
+-doxygen\ - QP/C++ documentation generated with Doxygen
|
|
| | +- . . .
|
|
| +-Doxyfile - Doxygen configuration file to generate the Manual
|
|
| +- . . .
|
|
|
|
|
+-examples\ - QP examples
|
|
| | +-posix\ - Examples for POSIX (Linux, BSD, etc.)
|
|
| | | +-gnu\ - Examples with the GNU compiler
|
|
| | | | +-dpp\ - Dining Philosopher Problem (DPP) example for Linux
|
|
| | | | | +-dbg\ - Debug build
|
|
| | | | | +-rel\ - Release build
|
|
| | | | | +-spy\ - Spy build (with software instrumentation)
|
|
| | | | | +-dpp.qm - QM model file for this project
|
|
| | | | | +-Makefile - GNU Makefile to build the DPP application
|
|
| | | | | +-. . .
|
|
| | |
|
|
| | +-win32\ - Examples for Win32 (Windows)
|
|
| | | +-mingw\ - Examples for the MinGW (GNU) compiler
|
|
| | | | +-dpp\ - Dining Philosopher Problem (DPP) example for Linux
|
|
| | | | | +-dbg\ - Debug build
|
|
| | | | | | +-dpp.exe - DPP executable (Debug configuration)
|
|
| | | | | +-rel\ - Release build
|
|
| | | | | +-spy\ - Spy build (with software tracing)
|
|
| | | | | +-dpp.qm - QM model file for this project
|
|
| | | | | +-Makefile - GNU Makefile to build the DPP application
|
|
| | | | | +-. . .
|
|
| | | | +-game-gui\ - "Fly 'n' Shoot" game example (GUI)
|
|
| | | | +-calc\ - Calculator example
|
|
| | | | +-qhsmtst\ - QHsmTst example (PSiCC2 in Chapter 2)
|
|
| | | | +-comp\ - "Orthogonal Component" pattern (PSiCC2 Chapter 5)
|
|
| | | | +-defer\ - "Deferred Event" pattern (PSiCC2 Chapter 5)
|
|
| | | | +-history\ - "Transition to History" pattern (PSiCC2 Chapter 5)
|
|
| | | | +-hook\ - "Ultimate Hook" pattern (Chapter 5)
|
|
| | | | +-reminder\ - "Reminder" pattern (PSiCC2 Chapter 5)
|
|
| | | | +-reminder2\ - "Reminder" pattern different example
|
|
| | | |
|
|
| | | +-vc\ - Examples for the Visual C++ compiler
|
|
| | | | +-dpp\ - Dining Philosopher Problem (DPP) example (console)
|
|
| | | | | +-Debug\ - Debug build
|
|
| | | | | | +-dpp.exe - DPP executable (Debug configuration)
|
|
| | | | | +-Release\ - Release build
|
|
| | | | | +-Spy\ - Spy build (with software instrumentation)
|
|
| | | | | +-dpp.qm - QM model file for this project
|
|
| | | | | +-dpp.sln - Visual Studio solution file
|
|
| | | | | +-dpp.vcxproj - Visual Studio project file
|
|
| | | | | +-. . .
|
|
| | | | +-dpp-gui\ - Dining Philosopher Problem (DPP) example (GUI)
|
|
| | | | +-game-gui\ - "Fly 'n' Shoot" game example (GUI)
|
|
| |
|
|
| +-arm-cm\ - Examples for ARM Cortex-M processor
|
|
| | +-vanilla\ - Examples for the cooperative "vanilla" kernel
|
|
| | | +-arm_keil\ - Examples with the ARM/Keil compiler (Keil MDK)
|
|
| | | | +-blinky_ek-tm4c123gxl\ - Blinky example for for EK-TM4C123GXL board
|
|
| | | | +-dpp_qk-lm3s811\ - DPP example for for EK-LM3S811 board
|
|
| | | | +-game_qk-lm3s811\ - "Fly 'n' Shoot" example for EK-LM3S811 board
|
|
| | | | +-. . . - Other examples for ARM Cortex
|
|
| | | +-gnu\ - Examples with the GNU compiler (Code Sourcery G++)
|
|
| | | | +-blinky_ek-tm4c123gxl\ - Blinky example for for EK-TM4C123GXL board
|
|
| | | | +-dpp_qk-lm3s811\ - DPP example for for EK-LM3S811 board
|
|
| | | | +-game_qk-lm3s811\ - "Fly 'n' Shoot" example for EK-LM3S811 board
|
|
| | | | +-. . . - Other examples for ARM Cortex
|
|
| | | +-iar\ - Examples with the IAR compiler
|
|
| | | | +-blinky_ek-tm4c123gxl\ - Blinky example for for EK-TM4C123GXL board
|
|
| | | | +-dpp_qk-lm3s811\ - DPP example for for EK-LM3S811 board
|
|
| | | | +-game_qk-lm3s811\ - "Fly 'n' Shoot" example for EK-LM3S811 board
|
|
| | | | +-. . . - Other examples for ARM Cortex
|
|
| | |
|
|
| | +-qk\ - Examples for the preemptive QK kernel
|
|
| | | +-iar\ - Examples with the IAR compiler
|
|
| | | | +-dpp-qk_qk-lm3s811\ - DPP example for for EK-LM3S811 board
|
|
| | | | +-game-qk_qk-lm3s811\ - "Fly 'n' Shoot" example for EK-LM3S811 board
|
|
| | | | +-. . . - Other examples for ARM Cortex
|
|
| | | +-gnu\ - Examples with the GNU compiler (Code Sourcery G++)
|
|
| | | | +-dpp-qk_qk-lm3s811\ - DPP example for for EK-LM3S811 board
|
|
| | | | +-game-qk_qk-lm3s811\ - "Fly 'n' Shoot" example for EK-LM3S811 board
|
|
| | | | +-. . . - Other examples for ARM Cortex-M
|
|
| |
|
|
| +-. . . - Examples for other CPUs and compiler
|
|
|
|
|
+-include\ - QP platform-independent header files
|
|
| +- qassert.h - QP assertions
|
|
| +- qevt.h - QEvt declaration
|
|
| +- qep.h - QEP platform-independent interface
|
|
| +- qf.h - QF platform-independent interface
|
|
| +- qk.h - QK platform-independent interface
|
|
| +- qs.h - QS platform-independent active interface
|
|
| +- qs_dummy.h - QS platform-independent inactive interface
|
|
| +- qequeue.h - QF native event queue facility
|
|
| +- qmpool.h - QF native memory pool facility
|
|
| +- qpset.h - QF native priority set facility
|
|
| +- qvanilla.h - QF native "vanilla" cooperative kernel interface
|
|
| +- qp_port.h - QP port include file
|
|
|
|
|
+-ports\ - Platform-specific QP ports
|
|
| +-posix\ - Ports to the POSIX operating systems (Linux, BSD, etc.)
|
|
| | +-gnu\ - Ports with the GNU compiler
|
|
| | | +-Makefile - make file to build the QP libraries
|
|
| | | +-. . .
|
|
| |
|
|
| +-win32\ - Ports to the POSIX operating systems (Linux, BSD, etc.)
|
|
| | +-mingw\ - Port with the MinGW (GNU) compiler
|
|
| | | +-qp.sln - Visual Studio solution to build the QP libraries
|
|
| | | +-. . .
|
|
| | |
|
|
| | +-vc\ - Port with the Visual C++ compiler
|
|
| |
|
|
| +-arm-cm\ - Ports for ARM Cortex-M processor
|
|
| | +-cmsis\ - Cortex Microcontroller Software Interface Standard
|
|
| | +-vanilla\ - Ports to the cooperative "vanilla" kernel
|
|
| | | | +-arm_keil\ - Examples with the ARM/Keil compiler (Keil MDK)
|
|
| | | | | +-dbg\ - Debug build
|
|
| | | | | +-rel\ - Release build
|
|
| | | | | +-spy\ - Spy build (with software instrumentation)
|
|
| | | | | +-make_Cortex-M3.bat - batch script for building QP libraries for M3
|
|
| | | | | +-qep_port.h - QEP platform-dependent include file
|
|
| | | | | +-qf_port.h - QF platform-dependent include file
|
|
| | | | | +-qs_port.h - QS platform-dependent include file
|
|
| | | | | +-qp_port.h - QP platform-dependent include file
|
|
| | | . . .
|
|
| | | +-gnu\ - Ports with the GNU compiler (Code Sourcery G++)
|
|
| | | | | +-dbg\ - Debug build
|
|
| | | | | +-rel\ - Release build
|
|
| | | | | +-spy\ - Spy build (with software instrumentation)
|
|
| | | | | +-make_cortex-m3_cs.bat - batch script for building QP libraries for M3
|
|
| | | | | +-qep_port.h - QEP platform-dependent include file
|
|
| | | | | +-qf_port.h - QF platform-dependent include file
|
|
| | | | | +-qs_port.h - QS platform-dependent include file
|
|
| | | | | +-qp_port.h - QP platform-dependent include file
|
|
| | | . . .
|
|
| | | +-iar\ - Ports with the IAR compiler
|
|
| | | | | +-dbg\ - Debug build
|
|
| | | | | +-rel\ - Release build
|
|
| | | | | +-spy\ - Spy build (with software instrumentation)
|
|
| | | | | +-make_cortex-m3.bat - batch script for building QP libraries for M3
|
|
| | | | | +-qep_port.h - QEP platform-dependent include file
|
|
| | | | | +-qf_port.h - QF platform-dependent include file
|
|
| | | | | +-qs_port.h - QS platform-dependent include file
|
|
| | | | | +-qp_port.h - QP platform-dependent include file
|
|
| | | . . .
|
|
| | +-qk\ - Ports to the preemptive QK kernel
|
|
| | +-iar\ - Ports with the IAR compiler
|
|
| | +-gnu\ - Ports with the GNU compiler (Code Sourcery G++)
|
|
| | - Ports to other CPUs
|
|
| +-lint\ - Ports for "linting" QP/C++
|
|
| | +- qep_port.h - example qep_port.h header file for portintg the QEP component
|
|
| | +- qf_port.h - example qf_port.h header file for portintg the QF component
|
|
| | +- qk_port.h - example qk_port.h header file for portintg the QK component
|
|
| | +- qs_port.h - example qs_port.h header file for portintg the QS component
|
|
|
|
|
+-qep\ - QEP hierarchical event processor
|
|
| +-source\ - QEP platform-independent source code (*.cpp files)
|
|
| | +- . . .
|
|
|
|
|
+-qf\ - QF real-time framework
|
|
| +-source\ - QF platform-independent source code (*.cpp files)
|
|
| | +- . . .
|
|
|
|
|
+-qk\ - QK preemptive kernel
|
|
| +-source\ - QK platform-independent source code (*.cpp files)
|
|
| | +- . . .
|
|
|
|
|
+-qs\ - QS software tracing (target component)
|
|
| +-source\ - QS platform-independent source code (*.cpp files)
|
|
| | +- . . .
|
|
\endcode
|
|
|
|
|
|
<HR>
|
|
\image html logo_ql_TM.jpg
|
|
Copyright © 2002-2013 Quantum Leaps, LLC. All Rights Reserved.\n
|
|
http://www.state-machine.com
|
|
*/
|
|
|