Skip to content

Commit

Permalink
8.0.1
Browse files Browse the repository at this point in the history
added missing <pthread.h> to ports/posix/qp_port.h
changed ports to ARM-CM, BASEPRI critical section
updated qp_config.h files
updated examples
fixed arm-cr ports, GNU compiler, ARM mode, QF_INT_ENABLE_ALL() macro
  • Loading branch information
quantum-leaps committed Dec 17, 2024
1 parent aaa2b24 commit 12c924a
Show file tree
Hide file tree
Showing 29 changed files with 753 additions and 1,280 deletions.
2 changes: 1 addition & 1 deletion cmakeSupport.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ This file is situated in the root directory of qpc. It performs a pre-initializa
+ `arm-cm`, `arm-cr` - Arm CortexM or CortexR micro controllers. Tested with GNU cross compiler environments.
+ `freertos`, `esp-idf`, `emb-os`, `threadx`, `uc-os2` - real time OS
+ `msp430`, `pic32` - TI MSP430 or PIC32 micro controllers
+ `riscv`- Risc V µC
+ `riscv`- Risc V micro controllers
+ `qep-only`, `qube` - test environments
+ `win32`, `posix` - host environments MS Winows, Linux (Posix compatible systems)
* `QPC-CFG-GUI` - BOOL: set this boolean variable to ON/TRUE, if GUI support (win32) shall be compiled in. Default: OFF
Expand Down
2 changes: 1 addition & 1 deletion examples
Submodule examples updated 383 files
18 changes: 7 additions & 11 deletions include/qp.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@
#define QP_H_

//============================================================================
#define QP_VERSION_STR "8.0.0"
#define QP_VERSION 800U
#define QP_RELEASE 0x7055936FU
#define QP_VERSION_STR "8.0.1"
#define QP_VERSION 801U
#define QP_RELEASE 0x703931CEU

//============================================================================
//! @cond INTERNAL
Expand Down Expand Up @@ -434,18 +434,14 @@ QState QMsm_enterHistory_(

//${QEP-macros::QASM_INIT} ...................................................
#ifdef Q_SPY
#define QASM_INIT(me_, par_, qsId_) do { \
Q_ASSERT(((QAsm *)(me_))->vptr); \
(*((QAsm *)(me_))->vptr->init)((QAsm *)(me_), (par_), (qsId_)); \
} while (false)
#define QASM_INIT(me_, par_, qsId_) \
(*((QAsm *)(me_))->vptr->init)((QAsm *)(me_), (par_), (qsId_))
#endif // def Q_SPY

//${QEP-macros::QASM_INIT} ...................................................
#ifndef Q_SPY
#define QASM_INIT(me_, par_, dummy) do { \
Q_ASSERT(((QAsm *)(me_))->vptr); \
(*((QAsm *)(me_))->vptr->init)((QAsm *)(me_), (par_), 0); \
} while (false)
#define QASM_INIT(me_, par_, dummy) \
(*((QAsm *)(me_))->vptr->init)((QAsm *)(me_), (par_), 0U)
#endif // ndef Q_SPY

//${QEP-macros::QASM_DISPATCH} ...............................................
Expand Down
129 changes: 66 additions & 63 deletions ports/arm-cm/qk/config/qp_config.h → ports/arm-cm/config/qp_config.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//============================================================================
// QP configuration file (QK on ARM Cortex-M)
// QP configuration file (QV/QK/QXK on ARM Cortex-M)
//
// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
//
Expand Down Expand Up @@ -59,19 +59,19 @@
// <i> * Hard-limits for all loops
// <i> * Memory Isolation by means of Memory Protection Unit (MPU)

// <c3>Disable QP FuSa in development
// <c3>Disable QP FuSa in development (NOT recommended)
// <i>Disable assertions and other self monitoring features
// <i>in development build configurations (NDEBUG undefined).
// <i>VIOLATES functional safety standards. NOT recommended !!!
// <i>NOTE: Disabling safety *violates* functional safety standards.
//#ifndef NDEBUG
//#define Q_UNSAFE
//#endif
// </c>

// <c3>Disable QP FuSa in production release
// <i>Disable assertions and other self monitoring features
// <c3>Disable QP FuSa in production release (NOT recommended)
// <i>Disable assertions and other safety features
// <i>in the release build configurations (NDEBUG defined).
// <i>VIOLATES functional safety standards. NOT recommended !!!
// <i>NOTE: Disabling safety *violates* functional safety standards.
//#ifdef NDEBUG
//#define Q_UNSAFE
//#endif
Expand All @@ -80,7 +80,7 @@
// </h>

//..........................................................................
// <h>QEP Event Processor
// <h>QEP Event Processor (Events)
// <i>Events and state machines.

// <o>Event signal size (Q_SIGNAL_SIZE)
Expand All @@ -94,7 +94,7 @@
// </h>

//..........................................................................
// <h>QF Framework
// <h>QF Framework (Active Objects)
// <i>Active Object framework

// <o>Maximum # Active Objects (QF_MAX_ACTIVE) <1-64>
Expand All @@ -120,16 +120,6 @@
// <i>Default: 1
#define QF_MAX_TICK_RATE 1U

// <c1>Event parameter initialization (QEVT_PAR_INIT)
// <i>Resource Acquisition Is Initialization (RAII) for dynamic events
//#define QEVT_PAR_INIT
// </c>

// <c1>Active Object stop API (QACTIVE_CAN_STOP)
// <i>Enable Active Object stop API (Not recommended)
//#define QACTIVE_CAN_STOP
// </c>

// <o>Event size (QF_EVENT_SIZ_SIZE)
// <1U=>1
// <2U=>2 (default)
Expand Down Expand Up @@ -169,15 +159,69 @@
// <i>Default: 2 (64K bytes maximum block size)
#define QF_MPOOL_SIZ_SIZE 2U

// <c2>Enable event parameter initialization (QEVT_PAR_INIT)
// <i>Initialize parameters of dynamic events at allocation
// <i>(Resource Acquisition Is Initialization (RAII) for dynamic events)
//#define QEVT_PAR_INIT
// </c>

// <c1>Enable active object stop API (QACTIVE_CAN_STOP)
// <i>NOTE: Not recommended
//#define QACTIVE_CAN_STOP
// </c>

// <c1>Enable context switch callback *without* QS (QF_ON_CONTEXT_SW)
// <i>Context switch callback QF_onContextSw() when Q_SPY is undefined.
//#ifndef Q_SPY
//#define QF_ON_CONTEXT_SW
//#endif
// </c>

// <c1>Enable context switch callback *with* QS (QF_ON_CONTEXT_SW)
// <i>Context switch callback QF_onContextSw() when Q_SPY is defined.
//#ifdef Q_SPY
//#define QF_ON_CONTEXT_SW
//#endif
// </c>

// <c2>Enable memory isolation (QF_MEM_ISOLATE)
// <i>Memory isolation (requires MPU)
// <i>NOTE: implies QF_ON_CONTEXT_SW.
//#define QF_MEM_ISOLATE
// </c>

// </h>

//..........................................................................
// <h>QS Software Tracing
// <h>QV/QK/QXK built-in kernels (ARM Cortex-M)

// <c2>Kernel uses critical section based on BASEPRI (QF_USE_BASEPRI)
// <i>If not selected, critical section will be based on PRIMASK
// <i>NOTE: The BASEPRI threshold can be adjusted in the "Text Editor" mode.
//#define QF_USE_BASEPRI 0x3F
// </c>

// <c2>QK Kernel uses IRQ for return-from-preemption
// <i>NOTE: Use "editor mode" to edit QK_USE_IRQ_NUM
// <i>NOTE: Use "editor mode" to edit QK_USE_IRQ_HANDLER
//#define QK_USE_IRQ_NUM NNN
//#define QK_USE_IRQ_HANDLER XXX_IRQHandler
// </c>

// <c2>QXK Kernel uses IRQ for return-from-preemption
// <i>NOTE: Use "editor mode" to edit QXK_USE_IRQ_NUM
// <i>NOTE: Use "editor mode" to edit QXK_USE_IRQ_HANDLER
//#define QXK_USE_IRQ_NUM NNN
//#define QXK_USE_IRQ_HANDLER XXX_IRQHandler
// </c>

// </h>

//..........................................................................
// <h>QS Software Tracing (Q_SPY)
// <i>Target-resident component of QP/Spy software tracing system
// <i>(tracing instrumentation and command-input).

// <n>NOTE: Requires command-line macro: Q_SPY
// <i>The QS software tracing instrumentation is activated only when
// <i>NOTE: The QS software tracing instrumentation is activated only when
// <i>the macro Q_SPY is defined on the command-line to the compiler.
// <i>Typically, Q_SPY is defined only in the "spy" build configuration.

Expand All @@ -199,47 +243,6 @@

// </h>

//..........................................................................
// <h>QK Preemptive Non-Blocking Kernel
// <i>Preemptive non-blocking/blocking RTOS kernel.

// <h>Context switch callback (QF_ON_CONTEXT_SW)

// <c2>Context switch callback WITHOUT QS
// <i>Enable context switch callback QF_onContextSw()
// <i>When Q_SPY is undefined.
//#ifndef Q_SPY
//#define QF_ON_CONTEXT_SW
//#endif
// </c>

// <c2>Context switch callback WITH QS
// <i>Enable context switch callback QF_onContextSw()
// <i>When Q_SPY is defined.
//#ifdef Q_SPY
//#define QF_ON_CONTEXT_SW
//#endif
// </c>

// </h>

// <c2>MPU memory isolation (QF_MEM_ISOLATE)
// <i>Enable memory isolation (requires MPU)
// <i>NOTE: implies QF_ON_CONTEXT_SW.
//#define QF_MEM_ISOLATE
// </c>

// <c4>Use IRQ handler for QK return-from-preemption
// <i>Enable this option only if the NMI handler is used in the project.
// <i>If enabled, provide the otherwise unused IRQ number (QK_USE_IRQ_NUM)
// <i>and the corresponding IRQ handler name (QK_USE_IRQ_HANDLER)
// <i>in the "Text Editor" mode.
//#define QK_USE_IRQ_NUM <adjust to your MCU>
//#define QK_USE_IRQ_HANDLER <adjust to your MCU>
// </c>

// </h>

//------------- <<< end of configuration section >>> -----------------------

#endif // QP_CONFIG_H_
Loading

0 comments on commit 12c924a

Please sign in to comment.