From 9567f5bc00f15147f91f7806967c6e542415a3bf Mon Sep 17 00:00:00 2001 From: MMS Date: Mon, 14 Nov 2022 18:50:37 -0500 Subject: [PATCH] 7.1.3 --- .gitignore | 2 + doxygen/Doxyfile-LATEX | 4 + .../qk/visualgdb/dpp-qk-Spy.vgdbsettings | 134 ---------------- .../dpp_nucleo-l152re/qk/visualgdb/dpp-qk.ld | 139 ---------------- .../dpp_nucleo-l152re/qk/visualgdb/dpp-qk.sln | 28 ---- .../qk/visualgdb/dpp-qk.vcxproj | 148 ------------------ .../qk/visualgdb/dpp-qk.vcxproj.filters | 137 ---------------- .../qk/visualgdb/stm32.props | 31 ---- .../dpp_nucleo-l152re/qk/visualgdb/stm32.xml | 39 ----- .../dpp_nucleo-h743zi/iar/SEGGER/SEGGER_RTT.c | 16 +- .../dpp_nucleo-h743zi/iar/SEGGER/SEGGER_RTT.h | 8 +- .../iar/SEGGER/SEGGER_RTT_ASM_ARMv7M.S | 6 +- .../iar/SEGGER/SEGGER_SYSVIEW.c | 48 +++--- .../iar/SEGGER/SEGGER_SYSVIEW_ConfDefaults.h | 34 ++-- .../lwip_ek-lm3s6965/website/ssi_demo.shtm | 16 +- .../blinky_msp-exp430f5529lp/qk/bsp.cpp | 2 +- .../qk/ccs-gnu/.project | 5 - .../qk/ccs-ti/.cproject | 141 ++++++++--------- .../qk/ccs-ti/.project | 13 +- .../qv/ccs-gnu/.project | 5 - .../qv/ccs-ti/.project | 5 - .../dpp_msp-exp430f5529lp/qk/ccs-gnu/.project | 45 +++--- .../dpp_msp-exp430f5529lp/qk/ccs-ti/.cproject | 134 ++++++++-------- .../dpp_msp-exp430f5529lp/qk/ccs-ti/.project | 45 +++--- .../dpp_msp-exp430f5529lp/qv/ccs-gnu/.project | 45 +++--- .../dpp_msp-exp430f5529lp/qv/ccs-ti/.project | 35 ++--- include/qep.hpp | 8 +- include/qf.hpp | 6 +- ports/arm-cm/qutest/qf_port.hpp | 67 ++++---- ports/msp430/qk/qf_port.hpp | 2 +- ports/msp430/qutest/qf_port.hpp | 65 ++++---- ports/pic32/qutest/xc32/qf_port.hpp | 65 ++++---- ports/posix-qutest/qf_port.hpp | 8 +- ports/win32-quit/qf_port.hpp | 8 +- ports/win32-qutest/qf_port.hpp | 8 +- qpcpp.qm | 27 +++- src/qf/qf_qact.cpp | 12 +- src/qk/qk.cpp | 7 + src/qs/qutest.cpp | 1 + src/qxk/qxk.cpp | 4 +- 40 files changed, 440 insertions(+), 1113 deletions(-) delete mode 100644 examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk-Spy.vgdbsettings delete mode 100644 examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk.ld delete mode 100644 examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk.sln delete mode 100644 examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk.vcxproj delete mode 100644 examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk.vcxproj.filters delete mode 100644 examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/stm32.props delete mode 100644 examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/stm32.xml diff --git a/.gitignore b/.gitignore index 417b2727..f2641b2f 100644 --- a/.gitignore +++ b/.gitignore @@ -38,7 +38,9 @@ version-* JLink*.* html/ +latex/ cert-pack/ +cert-latex/ test_priv/ dbg/ rel/ diff --git a/doxygen/Doxyfile-LATEX b/doxygen/Doxyfile-LATEX index 483336c9..e22211ce 100644 --- a/doxygen/Doxyfile-LATEX +++ b/doxygen/Doxyfile-LATEX @@ -5,3 +5,7 @@ GENERATE_HTML = NO GENERATE_LATEX = YES ENABLED_SECTIONS += LATEX + +# no source code in latex... +SOURCE_BROWSER = NO +VERBATIM_HEADERS = NO diff --git a/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk-Spy.vgdbsettings b/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk-Spy.vgdbsettings deleted file mode 100644 index 7c9fe82c..00000000 --- a/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk-Spy.vgdbsettings +++ /dev/null @@ -1,134 +0,0 @@ - - - Spy - - - - MinGWUnixSlash - $(ToolchainDir) - - $(ProjectDir) - false - stm32.xml - - - - - 0 - - - dpp-qk.vcxproj - - - - 1 - true - - - - - - - - - - - - - Default - - - - true - - - - - Unknown - - true - true - true - - - - false - - - VisualGDB\VisualGDBCache - - - - - - - false - false - false - false - false - false - false - false - false - - false - false - false - false - false - false - true - false - None - false - false - main - true - false - false - false - 0 - - - com.sysprogs.arm.openocd - stlink-v2-1 - 066EFF495056805087184715 - - -f interface/stlink-v2-1.cfg -f target/stm32l1.cfg -c init -c "reset init" - - - - false - - 131072 - Enabled - - set remotetimeout 60 - target remote :$$SYS:GDB_PORT$$ - mon halt - mon reset init - load - - false - 0 - 0 - false - - - - true - Auto - 0 - false - false - true - false - false - - _estack - 0 - false - true - - \ No newline at end of file diff --git a/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk.ld b/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk.ld deleted file mode 100644 index b3a6ec97..00000000 --- a/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk.ld +++ /dev/null @@ -1,139 +0,0 @@ -/***************************************************************************** -* Product: Linker script for for STM32L152RET6, GNU-ARM linker -* Last Updated for Version: 5.9.8 -* Date of the Last Update: 2017-09-13 -* -* Q u a n t u m L e a P s -* --------------------------- -* innovating embedded systems -* -* Copyright (C) Quantum Leaps, LLC. All rights reserved. -* -* This program is open source software: you can redistribute it and/or -* modify it under the terms of the GNU General Public License as published -* by the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* Alternatively, this program may be distributed and modified under the -* terms of Quantum Leaps commercial licenses, which expressly supersede -* the GNU General Public License and are specifically designed for -* licensees interested in retaining the proprietary status of their code. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -* -* Contact information: -* https://state-machine.com -* mailto:info@state-machine.com -*****************************************************************************/ -OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") -OUTPUT_ARCH(arm) -ENTRY(Reset_Handler) /* entry Point */ - -MEMORY { /* memory map of STM32L152RET6 */ - ROM (rx) : ORIGIN = 0x08000000, LENGTH = 512K - RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 80K -} - -/* The size of the stack used by the application. NOTE: you need to adjust */ -STACK_SIZE = 2048; - -/* The size of the heap used by the application. NOTE: you need to adjust */ -HEAP_SIZE = 0; - -SECTIONS { - - .isr_vector : { /* the vector table goes FIRST into ROM */ - KEEP(*(.isr_vector)) /* vector table */ - . = ALIGN(4); - } >ROM - - .text : { /* code and constants */ - . = ALIGN(4); - *(.text) /* .text sections (code) */ - *(.text*) /* .text* sections (code) */ - *(.rodata) /* .rodata sections (constants, strings, etc.) */ - *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ - - KEEP (*(.init)) - KEEP (*(.fini)) - - . = ALIGN(4); - } >ROM - - .preinit_array : { - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array*)) - PROVIDE_HIDDEN (__preinit_array_end = .); - } >ROM - - .init_array : { - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array*)) - PROVIDE_HIDDEN (__init_array_end = .); - } >ROM - - .fini_array : { - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(.fini_array*)) - KEEP (*(SORT(.fini_array.*))) - PROVIDE_HIDDEN (__fini_array_end = .); - } >ROM - - _etext = .; /* global symbols at end of code */ - - .stack : { - __stack_start__ = .; - . = . + STACK_SIZE; - . = ALIGN(4); - __stack_end__ = .; - } >RAM - - .data : AT (_etext) { - __data_load = LOADADDR (.data); - __data_start = .; - *(.data) /* .data sections */ - *(.data*) /* .data* sections */ - . = ALIGN(4); - __data_end__ = .; - _edata = __data_end__; - } >RAM - - .bss : { - __bss_start__ = .; - *(.bss) - *(.bss*) - *(COMMON) - . = ALIGN(4); - _ebss = .; /* define a global symbol at bss end */ - __bss_end__ = .; - } >RAM - - __exidx_start = .; - .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } >RAM - __exidx_end = .; - - PROVIDE ( end = _ebss ); - PROVIDE ( _end = _ebss ); - PROVIDE ( __end__ = _ebss ); - - .heap : { - __heap_start__ = .; - . = . + HEAP_SIZE; - . = ALIGN(4); - __heap_end__ = .; - } >RAM - - /* Remove information from the standard libraries */ - /DISCARD/ : { - libc.a ( * ) - libm.a ( * ) - libgcc.a ( * ) - } -} diff --git a/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk.sln b/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk.sln deleted file mode 100644 index 065c42fa..00000000 --- a/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk.sln +++ /dev/null @@ -1,28 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30517.126 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dpp-qk", "dpp-qk.vcxproj", "{33464F24-9B0F-4276-89FF-8D462C1392EE}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|VisualGDB = Debug|VisualGDB - Release|VisualGDB = Release|VisualGDB - Spy|VisualGDB = Spy|VisualGDB - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {33464F24-9B0F-4276-89FF-8D462C1392EE}.Debug|VisualGDB.ActiveCfg = Debug|VisualGDB - {33464F24-9B0F-4276-89FF-8D462C1392EE}.Debug|VisualGDB.Build.0 = Debug|VisualGDB - {33464F24-9B0F-4276-89FF-8D462C1392EE}.Release|VisualGDB.ActiveCfg = Release|VisualGDB - {33464F24-9B0F-4276-89FF-8D462C1392EE}.Release|VisualGDB.Build.0 = Release|VisualGDB - {33464F24-9B0F-4276-89FF-8D462C1392EE}.Spy|VisualGDB.ActiveCfg = Spy|VisualGDB - {33464F24-9B0F-4276-89FF-8D462C1392EE}.Spy|VisualGDB.Build.0 = Spy|VisualGDB - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {35222B4D-B267-427E-8293-873EDD0720C0} - EndGlobalSection -EndGlobal diff --git a/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk.vcxproj b/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk.vcxproj deleted file mode 100644 index 11b7e4fd..00000000 --- a/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk.vcxproj +++ /dev/null @@ -1,148 +0,0 @@ - - - - - Debug - VisualGDB - - - Release - VisualGDB - - - Spy - VisualGDB - - - - 16.0 - {33464F24-9B0F-4276-89FF-8D462C1392EE} - com.sysprogs.arm.stm32 - 2020.06 - - - - $(ProjectDir)stm32.props - - - $(ProjectDir)stm32.props - - - $(ProjectDir)stm32.props - - - - - - - - - Debug - d883dc4a-545e-4d48-bba0-41645b13fd69 - 9.3.1/(GNU/r0 - - - Debug - d883dc4a-545e-4d48-bba0-41645b13fd69 - 9.3.1/(GNU/r0 - - - d883dc4a-545e-4d48-bba0-41645b13fd69 - 9.3.1/(GNU/r0 - - - - ..;../..;../../../../../include;../../../../../src;../../../../../ports/arm-cm/qk/gnu;../../../../../3rd_party/CMSIS/Include;../../../../../3rd_party/nucleo-l152re;%(ClCompile.AdditionalIncludeDirectories) - DEBUG=1;%(ClCompile.PreprocessorDefinitions) - - - ;%(Link.AdditionalLinkerInputs) - ;%(Link.LibrarySearchDirectories) - ;%(Link.AdditionalLibraryNames) - dpp-qk.ld - -specs=nosys.specs -specs=nano.specs %(AdditionalOptions) - - - - - ..;../..;../../../../../include;../../../../../src;../../../../../ports/arm-cm/qk/gnu;../../../../../3rd_party/CMSIS/Include;../../../../../3rd_party/nucleo-l152re;%(ClCompile.AdditionalIncludeDirectories) - DEBUG=1;Q_SPY;%(ClCompile.PreprocessorDefinitions) - O3 - - - ;%(Link.AdditionalLinkerInputs) - ;%(Link.LibrarySearchDirectories) - ;%(Link.AdditionalLibraryNames) - dpp-qk.ld - -specs=nosys.specs -specs=nano.specs %(AdditionalOptions) - - - - - ..;../..;../../../../../include;../../../../../src;../../../../../ports/arm-cm/qk/gnu;../../../../../3rd_party/CMSIS/Include;../../../../../3rd_party/nucleo-l152re;%(ClCompile.AdditionalIncludeDirectories) - NDEBUG=1;RELEASE=1;%(ClCompile.PreprocessorDefinitions) - - - ;%(Link.AdditionalLinkerInputs) - ;%(Link.LibrarySearchDirectories) - ;%(Link.AdditionalLibraryNames) - dpp-qk.ld - -specs=nosys.specs -specs=nano.specs %(AdditionalOptions) - - - - - - - - - - - - - - - - - - - - - - true - true - - - true - true - - - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk.vcxproj.filters b/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk.vcxproj.filters deleted file mode 100644 index e7476e32..00000000 --- a/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/dpp-qk.vcxproj.filters +++ /dev/null @@ -1,137 +0,0 @@ - - - - - {c6017ab7-6299-4b81-acee-c1763a48750d} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {c919b77d-bd4e-42dd-90aa-1ccb1597d180} - - - {d32a0836-a71c-48cd-a0dc-003d1237eae2} - - - {546cf9df-d280-46a0-8461-b51c82a3baa5} - - - {0d86c7f6-a92e-4327-835c-5bbf87534465} - - - {3c579ef5-dace-45b5-8c74-75413c8bb3b6} - - - - - nucleo-l152re - - - VisualGDB settings - - - VisualGDB settings - - - VisualGDB settings - - - - - nucleo-l152re - - - nucleo-l152re - - - QP - - - QP - - - QP - - - QP - - - QP - - - QP - - - QP - - - QP - - - QP - - - QP - - - QP - - - QP - - - QP-port - - - QS - - - QS - - - QS - - - Source files - - - Source files - - - Source files - - - Source files - - - Source files - - - QP - - - - - QP-port - - - QP-port - - - QP-port - - - QP-port - - - Source files - - - Source files - - - - - Source files - - - \ No newline at end of file diff --git a/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/stm32.props b/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/stm32.props deleted file mode 100644 index 80190729..00000000 --- a/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/stm32.props +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - ARM_MATH_CM3;flash_layout;STM32L152RE;STM32L152xE;%(ClCompile.PreprocessorDefinitions) - %(ClCompile.AdditionalIncludeDirectories);$(ProjectDir);$(BSP_ROOT)/STM32L1xxxx/STM32L1xx_HAL_Driver/Inc;$(BSP_ROOT)/STM32L1xxxx/STM32L1xx_HAL_Driver/Inc/Legacy;$(BSP_ROOT)/STM32L1xxxx/CMSIS_HAL/Device/ST/STM32L1xx/Include;$(BSP_ROOT)/STM32L1xxxx/CMSIS_HAL/Core/Include;$(BSP_ROOT)/STM32L1xxxx/CMSIS_HAL/Include - - - - - $(BSP_ROOT)/STM32L1xxxx/LinkerScripts/STM32L152RE_flash.lds - - - - $(BSP_ROOT)/STM32L1xxxx/LinkerScripts/STM32L152RE_flash.lds - - - - - cortex-m3 - THUMB - - - diff --git a/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/stm32.xml b/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/stm32.xml deleted file mode 100644 index 63349b32..00000000 --- a/examples/arm-cm/dpp_nucleo-l152re/qk/visualgdb/stm32.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - d883dc4a-545e-4d48-bba0-41645b13fd69 - - 9.3.1 - (GNU - 0 - - com.sysprogs.arm.stm32 - 2020.06 - STM32L152RE - STM32L1xxxx/DeviceDefinitions/stm32l152xe.xml - - - - com.sysprogs.bspoptions.primary_memory - flash - - - com.sysprogs.mcuoptions.ignore_startup_file - - - - Device-specific files - stm32.mak - - com.sysprogs.arm.stm32.ll - - - - - com.sysprogs.bspoptions.stm32.ll_driver - - - - - - - \ No newline at end of file diff --git a/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_RTT.c b/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_RTT.c index 4e5c329f..0a716196 100644 --- a/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_RTT.c +++ b/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_RTT.c @@ -46,7 +46,7 @@ Additional information: WrOff == (RdOff - 1): Buffer is full WrOff > RdOff: Free space includes wrap-around WrOff < RdOff: Used space includes wrap-around - (WrOff == (SizeOfBuffer - 1)) && (RdOff == 0): + (WrOff == (SizeOfBuffer - 1)) && (RdOff == 0): Buffer full and wrap-around after next byte @@ -521,7 +521,7 @@ static unsigned _GetAvailWriteSpace(SEGGER_RTT_BUFFER_UP* pRing) { * Reads characters from SEGGER real-time-terminal control block * which have been previously stored by the application. * Do not lock against interrupts and multiple access. -* Used to do the same operation that J-Link does, to transfer +* Used to do the same operation that J-Link does, to transfer * RTT data via other channels, such as TCP/IP or UART. * * Parameters @@ -706,7 +706,7 @@ unsigned SEGGER_RTT_ReadNoLock(unsigned BufferIndex, void* pData, unsigned Buffe * Function description * Reads characters from SEGGER real-time-terminal control block * which have been previously stored by the application. -* Used to do the same operation that J-Link does, to transfer +* Used to do the same operation that J-Link does, to transfer * RTT data via other channels, such as TCP/IP or UART. * * Parameters @@ -721,7 +721,7 @@ unsigned SEGGER_RTT_ReadNoLock(unsigned BufferIndex, void* pData, unsigned Buffe * This function must not be called when J-Link might also do RTT. * This function locks against all other RTT operations. I.e. during * the read operation, writing is also locked. -* If only one consumer reads from the up buffer, +* If only one consumer reads from the up buffer, * call sEGGER_RTT_ReadUpBufferNoLock() instead. */ unsigned SEGGER_RTT_ReadUpBuffer(unsigned BufferIndex, void* pBuffer, unsigned BufferSize) { @@ -779,7 +779,7 @@ unsigned SEGGER_RTT_Read(unsigned BufferIndex, void* pBuffer, unsigned BufferSiz * Function description * Stores a specified number of characters in SEGGER RTT * control block. -* SEGGER_RTT_WriteWithOverwriteNoLock does not lock the application +* SEGGER_RTT_WriteWithOverwriteNoLock does not lock the application * and overwrites data if the data does not fit into the buffer. * * Parameters @@ -792,7 +792,7 @@ unsigned SEGGER_RTT_Read(unsigned BufferIndex, void* pBuffer, unsigned BufferSiz * (2) For performance reasons this function does not call Init() * and may only be called after RTT has been initialized. * Either by calling SEGGER_RTT_Init() or calling another RTT API function first. -* (3) Do not use SEGGER_RTT_WriteWithOverwriteNoLock if a J-Link +* (3) Do not use SEGGER_RTT_WriteWithOverwriteNoLock if a J-Link * connection reads RTT data. */ void SEGGER_RTT_WriteWithOverwriteNoLock(unsigned BufferIndex, const void* pBuffer, unsigned NumBytes) { @@ -966,7 +966,7 @@ CopyStraight: * Stores a specified number of characters in SEGGER RTT * control block inside a buffer. * SEGGER_RTT_WriteDownBufferNoLock does not lock the application. -* Used to do the same operation that J-Link does, to transfer +* Used to do the same operation that J-Link does, to transfer * RTT data from other channels, such as TCP/IP or UART. * * Parameters @@ -1134,7 +1134,7 @@ unsigned SEGGER_RTT_WriteNoLock(unsigned BufferIndex, const void* pBuffer, unsig * This function must not be called when J-Link might also do RTT. * This function locks against all other RTT operations. I.e. during * the write operation, writing from the application is also locked. -* If only one consumer writes to the down buffer, +* If only one consumer writes to the down buffer, * call SEGGER_RTT_WriteDownBufferNoLock() instead. */ unsigned SEGGER_RTT_WriteDownBuffer(unsigned BufferIndex, const void* pBuffer, unsigned NumBytes) { diff --git a/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_RTT.h b/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_RTT.h index 0afe8c78..5c9f12ee 100644 --- a/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_RTT.h +++ b/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_RTT.h @@ -28,7 +28,7 @@ ---------------------------END-OF-HEADER------------------------------ File : SEGGER_RTT.h Purpose : Implementation of SEGGER real-time transfer which allows - real-time communication on targets which support debugger + real-time communication on targets which support debugger memory accesses while the CPU is running. Revision: $Rev: 20869 $ ---------------------------------------------------------------------- @@ -51,11 +51,11 @@ Revision: $Rev: 20869 $ #elif (defined __CROSSWORKS_ARM) // Rowley Crossworks #define _CC_HAS_RTT_ASM_SUPPORT 1 #elif (defined __ARMCC_VERSION) // ARM compiler - #if (__ARMCC_VERSION >= 6000000) // ARM compiler V6.0 and later is clang based + #if (__ARMCC_VERSION >= 6000000) // ARM compiler V6.0 and later is clang based #define _CC_HAS_RTT_ASM_SUPPORT 1 - #else + #else #define _CC_HAS_RTT_ASM_SUPPORT 0 - #endif + #endif #elif (defined __GNUC__) // GCC #define _CC_HAS_RTT_ASM_SUPPORT 1 #elif (defined __clang__) // Clang compiler diff --git a/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_RTT_ASM_ARMv7M.S b/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_RTT_ASM_ARMv7M.S index 8b134723..b2033fd6 100644 --- a/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_RTT_ASM_ARMv7M.S +++ b/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_RTT_ASM_ARMv7M.S @@ -58,9 +58,9 @@ Additional information: #define _THUMB_CODE .code 16 #define _WORD .word #define _SECTION(Sect, Type, AlignExp) .section Sect ##, "ax" - #define _ALIGN(Exp) .align Exp + #define _ALIGN(Exp) .align Exp #define _PLACE_LITS .ltorg - #define _DATA_SECT_START + #define _DATA_SECT_START #define _C_STARTUP _start #define _STACK_END __stack_end__ #define _RAMFUNC @@ -80,7 +80,7 @@ Additional information: #define _THUMB_CODE THUMB #define _WORD DCD #define _SECTION(Sect, Type, AlignExp) SECTION Sect ## : ## Type ## :REORDER:NOROOT ## (AlignExp) - #define _ALIGN(Exp) alignrom Exp + #define _ALIGN(Exp) alignrom Exp #define _PLACE_LITS #define _DATA_SECT_START DATA #define _C_STARTUP __iar_program_start diff --git a/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_SYSVIEW.c b/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_SYSVIEW.c index 2a994f69..337112ff 100644 --- a/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_SYSVIEW.c +++ b/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_SYSVIEW.c @@ -40,7 +40,7 @@ Additional information: Packets with IDs 24..31 are standard packets with extendible structure and contain a length field. - + Packet ID 31 is used for SystemView extended events. @@ -491,7 +491,7 @@ static U8 *_EncodeStr(U8 *pPayload, const char *pText, unsigned int Limit) { // Write Len // if (Len < 255) { - *pPayload++ = Len; + *pPayload++ = Len; } else { *pPayload++ = 255; *pPayload++ = (Len & 255); @@ -648,7 +648,7 @@ static int _TrySendOverflowPacket(void) { * _SendSyncInfo() * * Function description -* Send SystemView sync packet and system information in +* Send SystemView sync packet and system information in * post mortem mode. * * Additional information @@ -866,9 +866,9 @@ static int _VPrintHost(const char* s, U32 Options, va_list* pParamList) { U8* pPayloadStart; #if SEGGER_SYSVIEW_PRINTF_IMPLICIT_FORMAT U8 HasNonScalar; - + HasNonScalar = 0; -#endif +#endif // // Count number of arguments by counting '%' characters in string. // If enabled, check for non-scalar modifier flags to format string on the target. @@ -968,7 +968,7 @@ static void _StoreChar(SEGGER_SYSVIEW_PRINTF_DESC * p, char c) { * _PrintUnsigned() * * Function description -* Print an unsigned integer with the given formatting into the +* Print an unsigned integer with the given formatting into the * formatted string. * * Parameters @@ -1059,7 +1059,7 @@ static void _PrintUnsigned(SEGGER_SYSVIEW_PRINTF_DESC * pBufferDesc, unsigned in * _PrintInt() * * Function description -* Print a signed integer with the given formatting into the +* Print a signed integer with the given formatting into the * formatted string. * * Parameters @@ -1302,7 +1302,7 @@ static void _VPrintTarget(const char* sFormat, U32 Options, va_list* pParamList) * * Function description * Initializes the SYSVIEW module. -* Must be called before the Systemview Application connects to +* Must be called before the Systemview Application connects to * the system. * * Parameters @@ -1312,9 +1312,9 @@ static void _VPrintTarget(const char* sFormat, U32 Options, va_list* pParamList) * pfSendSysDesc - Pointer to record system description callback function. * * Additional information -* This function initializes the RTT channel used to transport -* SEGGER SystemView packets. -* The channel is assigned the label "SysView" for client software +* This function initializes the RTT channel used to transport +* SEGGER SystemView packets. +* The channel is assigned the label "SysView" for client software * to identify the SystemView channel. * * The channel is configured with the macro SEGGER_SYSVIEW_RTT_CHANNEL. @@ -1911,7 +1911,7 @@ void SEGGER_SYSVIEW_SendTaskList(void) { * * The system description is usually called by the system description * callback, to ensure it is only sent when the SystemView Application -* is connected. +* is connected. * * Parameters * sSysDesc - Pointer to the 0-terminated system description string. @@ -2029,7 +2029,7 @@ void SEGGER_SYSVIEW_RecordExitISRToScheduler(void) { * * Function description * Format and send a Timer entry event. -* +* * Parameters * TimerId - Id of the timer which starts. */ @@ -2065,7 +2065,7 @@ void SEGGER_SYSVIEW_RecordExitTimer(void) { * * Function description * Format and send an End API Call event without return value. -* +* * Parameters * EventID - Id of API function which ends. */ @@ -2086,7 +2086,7 @@ void SEGGER_SYSVIEW_RecordEndCall(unsigned int EventID) { * * Function description * Format and send an End API Call event with return value. -* +* * Parameters * EventID - Id of API function which ends. * Para0 - Return value which will be returned by the API function. @@ -2146,9 +2146,9 @@ void SEGGER_SYSVIEW_OnTaskCreate(U32 TaskId) { * SEGGER_SYSVIEW_OnTaskTerminate() * * Function description -* Record a Task termination event. -* The Task termination event corresponds to terminating a task in -* the OS. If the TaskId is the currently active task, +* Record a Task termination event. +* The Task termination event corresponds to terminating a task in +* the OS. If the TaskId is the currently active task, * SEGGER_SYSVIEW_OnTaskStopExec may be used, either. * * Parameters @@ -2325,7 +2325,7 @@ void SEGGER_SYSVIEW_Mark(unsigned int MarkerId) { * * Marker names are usually set in the system description * callback, to ensure it is only sent when the SystemView Application -* is connected. +* is connected. * * Parameters * MarkerId - User defined ID for the marker. @@ -2353,7 +2353,7 @@ void SEGGER_SYSVIEW_NameMarker(unsigned int MarkerId, const char* sName) { * * Marker names are usually set in the system description * callback, to ensure it is only sent when the SystemView Application -* is connected. +* is connected. * * Parameters * ResourceId - Id of the resource to be named. i.e. its address. @@ -2775,7 +2775,7 @@ void SEGGER_SYSVIEW_PrintfHost(const char* s, ...) { * SEGGER_SYSVIEW_WarnfHost() * * Function description -* Print a warnin string which is formatted on the host by +* Print a warnin string which is formatted on the host by * the SystemView Application. * * Parameters @@ -2810,7 +2810,7 @@ void SEGGER_SYSVIEW_WarnfHost(const char* s, ...) { * SEGGER_SYSVIEW_ErrorfHost() * * Function description -* Print an error string which is formatted on the host by +* Print an error string which is formatted on the host by * the SystemView Application. * * Parameters @@ -2845,7 +2845,7 @@ void SEGGER_SYSVIEW_ErrorfHost(const char* s, ...) { * SEGGER_SYSVIEW_PrintfTargetEx() * * Function description -* Print a string which is formatted on the target before sent to +* Print a string which is formatted on the target before sent to * the host with Additional information. * * Parameters @@ -2865,7 +2865,7 @@ void SEGGER_SYSVIEW_PrintfTargetEx(const char* s, U32 Options, ...) { * SEGGER_SYSVIEW_PrintfTarget() * * Function description -* Print a string which is formatted on the target before sent to +* Print a string which is formatted on the target before sent to * the host. * * Parameters diff --git a/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_SYSVIEW_ConfDefaults.h b/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_SYSVIEW_ConfDefaults.h index ebf687ff..0c650e8d 100644 --- a/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_SYSVIEW_ConfDefaults.h +++ b/examples/embos/arm-cm/dpp_nucleo-h743zi/iar/SEGGER/SEGGER_SYSVIEW_ConfDefaults.h @@ -151,7 +151,7 @@ extern "C" { * Default * Call user-supplied function SEGGER_SYSVIEW_X_GetInterruptId(). * Notes -* For some known compilers and cores, a ready-to-use, core-specific +* For some known compilers and cores, a ready-to-use, core-specific * default is set. * ARMv7M: Read ICSR[8:0] (active vector) * ARMv6M: Read ICSR[5:0] (active vector) @@ -183,7 +183,7 @@ extern "C" { * Default * Call user-supplied function SEGGER_SYSVIEW_X_GetTimestamp(). * Notes -* For some known compilers and cores, a ready-to-use, core-specific +* For some known compilers and cores, a ready-to-use, core-specific * default is set. * ARMv7M: Read Cortex-M Cycle Count register. * @@ -257,7 +257,7 @@ extern "C" { * Default * undefined: Do not place into a specific section. * Notes -* If SEGGER_RTT_SECTION is defined, the default changes to use +* If SEGGER_RTT_SECTION is defined, the default changes to use * this section for the SystemView RTT Buffer, too. */ #if !(defined SEGGER_SYSVIEW_SECTION) && (defined SEGGER_RTT_SECTION) @@ -289,11 +289,11 @@ extern "C" { * Default * 0 * Notes -* Value is usually subtracted from mailboxes, semaphores, tasks, +* Value is usually subtracted from mailboxes, semaphores, tasks, * .... addresses, to compress event parameters. * Should be the lowest RAM address of the system. */ -#ifndef SEGGER_SYSVIEW_ID_BASE +#ifndef SEGGER_SYSVIEW_ID_BASE #define SEGGER_SYSVIEW_ID_BASE 0 #endif @@ -348,8 +348,8 @@ extern "C" { * Define: SEGGER_SYSVIEW_PRINTF_IMPLICIT_FORMAT * * Description -* If enabled, on SEGGER_SYSVIEW_PrintHost, check the format string -* and if it includes unsupported formatters, use formatting on the +* If enabled, on SEGGER_SYSVIEW_PrintHost, check the format string +* and if it includes unsupported formatters, use formatting on the * target instead. * Default * 0: Disabled. @@ -416,10 +416,10 @@ extern "C" { * 1: Enabled. * Notes * If enabled, the static memory use by SystemView is increased by -* the maximum packet size. SystemView is locked on entry of a +* the maximum packet size. SystemView is locked on entry of a * recording function. -* If disabled, the stack usage by SystemView recording functions -* might be increased by up to the maximum packet size. SystemView +* If disabled, the stack usage by SystemView recording functions +* might be increased by up to the maximum packet size. SystemView * is locked when writing the packet to the RTT buffer. */ #ifndef SEGGER_SYSVIEW_USE_STATIC_BUFFER @@ -435,7 +435,7 @@ extern "C" { * Default * Automatically calculated. * Notes -* The maximum packet size is mainly defined by the maximum string +* The maximum packet size is mainly defined by the maximum string * length and the maximum number of arguments. */ #ifndef SEGGER_SYSVIEW_MAX_PACKET_SIZE @@ -447,12 +447,12 @@ extern "C" { * Define: SEGGER_SYSVIEW_POST_MORTEM_MODE * * Description -* If enabled, SystemView records for post-mortem analysis instead +* If enabled, SystemView records for post-mortem analysis instead * of real-time analysis. * Default * 0: Disabled. * Notes -* For more information refer to +* For more information refer to * https://www.segger.com/products/development-tools/systemview/technology/post-mortem-mode */ #ifndef SEGGER_SYSVIEW_POST_MORTEM_MODE @@ -464,14 +464,14 @@ extern "C" { * Define: SEGGER_SYSVIEW_SYNC_PERIOD_SHIFT * * Description -* Configure how frequently syncronization is sent in post-mortem +* Configure how frequently syncronization is sent in post-mortem * mode. * Default * 8: (1 << 8) = Every 256 Events. * Notes * In post-mortem mode, at least one sync has to be in the RTT buffer. * Recommended sync frequency: Buffer Size / 16 -* For more information refer to +* For more information refer to * https://www.segger.com/products/development-tools/systemview/technology/post-mortem-mode */ #ifndef SEGGER_SYSVIEW_SYNC_PERIOD_SHIFT @@ -503,8 +503,8 @@ extern "C" { * Default * Use RTT Locking mechanism (defined by SEGGER_RTT_LOCK()). * Notes -* If SystemView recording is not locked, recording events from -* interrupts and tasks may lead to unpredictable, undefined, event +* If SystemView recording is not locked, recording events from +* interrupts and tasks may lead to unpredictable, undefined, event * data. */ #ifndef SEGGER_SYSVIEW_LOCK diff --git a/examples/lwip/arm-cm/lwip_ek-lm3s6965/website/ssi_demo.shtm b/examples/lwip/arm-cm/lwip_ek-lm3s6965/website/ssi_demo.shtm index 84111ded..b53c81a6 100644 --- a/examples/lwip/arm-cm/lwip_ek-lm3s6965/website/ssi_demo.shtm +++ b/examples/lwip/arm-cm/lwip_ek-lm3s6965/website/ssi_demo.shtm @@ -11,10 +11,10 @@ - @@ -33,7 +33,7 @@
Quantum Leaps - innovating embedded systems
- +

About SSI Support

@@ -43,17 +43,17 @@

The HTTP server that comes with lwIP has been extended to support rudimentary Server Side Include (SSI) facility. To enable the SSI support in the lwIP-HTTP server, you need to define the macro INCLUDE_HTTPD_SSI in the lwipopts.h header file. Application Note (1.4MB PDF) - + You must also provide your SSI callback function and register it by calling the http_set_ssi_handler() function. The HTTP server will then scan each file with extension .shtml, .shtm or .ssi for the SSI tags of the form <!--#tag--> and will replace on-the-fly every recognized SSI tag with the string composed by your SSI callback function. See the HTML source code for this web page (ssi_demo.shtm) and the SSI callback function definition in lwipmgr.c.

-

While designing your own SSI tags, remember that the tag names are limited to 8 characters and the length of the replacement strings cannot exceed 192 characters. You can re-define these limits by changing the macros MAX_TAG_NAME_LEN and MAX_TAG_INSERT_LEN, respectively, in the http.h header file. +

While designing your own SSI tags, remember that the tag names are limited to 8 characters and the length of the replacement strings cannot exceed 192 characters. You can re-define these limits by changing the macros MAX_TAG_NAME_LEN and MAX_TAG_INSERT_LEN, respectively, in the http.h header file.

Please refer to the Quantum Leaps Application Note: "QP and lwIP TCP/IP Stack" for more information. The Application Note is included in the QP-lwIP example code download.

SSI Example

-

The following table contains SSI tags embedded in the HTML of this web page. Client browsers never see these tags, as the lwIP-HTTP server replaces them on-the-fly while serving this page. These particular SSI tags cause the target to generate various lwIP link statistics. Please click the Refresh button on your browser to cause re-loading of this page and updating the statistics: +

The following table contains SSI tags embedded in the HTML of this web page. Client browsers never see these tags, as the lwIP-HTTP server replaces them on-the-fly while serving this page. These particular SSI tags cause the target to generate various lwIP link statistics. Please click the Refresh button on your browser to cause re-loading of this page and updating the statistics:

@@ -85,7 +85,7 @@ You must also provide your SSI callback function and register it by calling the

-

NOTE: the webpage loads much slower than the others, because it contains 12 SSI tags, and each tag is sent is a separate TCP/IP packet. +

NOTE: the webpage loads much slower than the others, because it contains 12 SSI tags, and each tag is sent is a separate TCP/IP packet.


diff --git a/examples/msp430/blinky_msp-exp430f5529lp/qk/bsp.cpp b/examples/msp430/blinky_msp-exp430f5529lp/qk/bsp.cpp index 17829716..a2c37872 100644 --- a/examples/msp430/blinky_msp-exp430f5529lp/qk/bsp.cpp +++ b/examples/msp430/blinky_msp-exp430f5529lp/qk/bsp.cpp @@ -105,7 +105,7 @@ void BSP_ledOn(void) { // QF callbacks ============================================================== void QF::onStartup(void) { TA0CCTL0 = CCIE; // CCR0 interrupt enabled - TA0CCR0 = BSP_MCK / BSP_TICKS_PER_SEC; + TA0CCR0 = BSP_SMCLK / BSP_TICKS_PER_SEC; TA0CTL = TASSEL_2 | MC_1 | TACLR; // SMCLK, upmode, clear TAR } //............................................................................ diff --git a/examples/msp430/blinky_msp-exp430f5529lp/qk/ccs-gnu/.project b/examples/msp430/blinky_msp-exp430f5529lp/qk/ccs-gnu/.project index 8d64cefc..9caf8339 100644 --- a/examples/msp430/blinky_msp-exp430f5529lp/qk/ccs-gnu/.project +++ b/examples/msp430/blinky_msp-exp430f5529lp/qk/ccs-gnu/.project @@ -30,11 +30,6 @@ 2 PARENT-5-PROJECT_LOC/src/qf - - QP_include - 2 - PARENT-5-PROJECT_LOC/include - QP_port 2 diff --git a/examples/msp430/blinky_msp-exp430f5529lp/qk/ccs-ti/.cproject b/examples/msp430/blinky_msp-exp430f5529lp/qk/ccs-ti/.cproject index 6b2423b8..151d87e2 100644 --- a/examples/msp430/blinky_msp-exp430f5529lp/qk/ccs-ti/.cproject +++ b/examples/msp430/blinky_msp-exp430f5529lp/qk/ccs-ti/.cproject @@ -15,85 +15,86 @@ - - @@ -119,7 +120,7 @@ - - + \ No newline at end of file diff --git a/examples/msp430/blinky_msp-exp430f5529lp/qk/ccs-ti/.project b/examples/msp430/blinky_msp-exp430f5529lp/qk/ccs-ti/.project index e04c8232..035a35fd 100644 --- a/examples/msp430/blinky_msp-exp430f5529lp/qk/ccs-ti/.project +++ b/examples/msp430/blinky_msp-exp430f5529lp/qk/ccs-ti/.project @@ -30,11 +30,6 @@ 2 PARENT-5-PROJECT_LOC/src/qf - - QP_include - 2 - PARENT-5-PROJECT_LOC/include - Q_port 2 @@ -46,9 +41,9 @@ PARENT-2-PROJECT_LOC/blinky.cpp - blinky.h + blinky.hpp 1 - PARENT-2-PROJECT_LOC/blinky.h + PARENT-2-PROJECT_LOC/blinky.hpp bsp.cpp @@ -56,9 +51,9 @@ PARENT-1-PROJECT_LOC/bsp.cpp - bsp.h + bsp.hpp 1 - PARENT-2-PROJECT_LOC/bsp.h + PARENT-2-PROJECT_LOC/bsp.hpp main.cpp diff --git a/examples/msp430/blinky_msp-exp430f5529lp/qv/ccs-gnu/.project b/examples/msp430/blinky_msp-exp430f5529lp/qv/ccs-gnu/.project index 46dc4435..a6d0f8ad 100644 --- a/examples/msp430/blinky_msp-exp430f5529lp/qv/ccs-gnu/.project +++ b/examples/msp430/blinky_msp-exp430f5529lp/qv/ccs-gnu/.project @@ -30,11 +30,6 @@ 2 PARENT-5-PROJECT_LOC/src/qf - - QP_include - 2 - PARENT-5-PROJECT_LOC/include - QP_port 2 diff --git a/examples/msp430/blinky_msp-exp430f5529lp/qv/ccs-ti/.project b/examples/msp430/blinky_msp-exp430f5529lp/qv/ccs-ti/.project index 74ff99f2..51151e83 100644 --- a/examples/msp430/blinky_msp-exp430f5529lp/qv/ccs-ti/.project +++ b/examples/msp430/blinky_msp-exp430f5529lp/qv/ccs-ti/.project @@ -30,11 +30,6 @@ 2 PARENT-5-PROJECT_LOC/src/qf - - QP_include - 2 - PARENT-5-PROJECT_LOC/include - QP_port 2 diff --git a/examples/msp430/dpp_msp-exp430f5529lp/qk/ccs-gnu/.project b/examples/msp430/dpp_msp-exp430f5529lp/qk/ccs-gnu/.project index e4c2eb9b..ec24d76a 100644 --- a/examples/msp430/dpp_msp-exp430f5529lp/qk/ccs-gnu/.project +++ b/examples/msp430/dpp_msp-exp430f5529lp/qk/ccs-gnu/.project @@ -30,11 +30,6 @@ 2 PARENT-5-PROJECT_LOC/src/qf - - QP_include - 2 - PARENT-5-PROJECT_LOC/include - QP_port 2 @@ -45,26 +40,6 @@ 2 PARENT-5-PROJECT_LOC/src/qs - - qk - 2 - PARENT-5-PROJECT_LOC/src/qk - - - dpp.h - 1 - PARENT-2-PROJECT_LOC/dpp.h - - - philo.cpp - 1 - PARENT-2-PROJECT_LOC/philo.cpp - - - table.cpp - 1 - PARENT-2-PROJECT_LOC/table.cpp - bsp.cpp 1 @@ -75,10 +50,30 @@ 1 PARENT-2-PROJECT_LOC/bsp.h + + dpp.h + 1 + PARENT-2-PROJECT_LOC/dpp.h + main.cpp 1 PARENT-2-PROJECT_LOC/main.cpp + + philo.cpp + 1 + PARENT-2-PROJECT_LOC/philo.cpp + + + qk + 2 + PARENT-5-PROJECT_LOC/src/qk + + + table.cpp + 1 + PARENT-2-PROJECT_LOC/table.cpp + diff --git a/examples/msp430/dpp_msp-exp430f5529lp/qk/ccs-ti/.cproject b/examples/msp430/dpp_msp-exp430f5529lp/qk/ccs-ti/.cproject index d4fa5281..749851c6 100644 --- a/examples/msp430/dpp_msp-exp430f5529lp/qk/ccs-ti/.cproject +++ b/examples/msp430/dpp_msp-exp430f5529lp/qk/ccs-ti/.cproject @@ -15,81 +15,82 @@ - - @@ -115,7 +116,7 @@ - - + + \ No newline at end of file diff --git a/examples/msp430/dpp_msp-exp430f5529lp/qk/ccs-ti/.project b/examples/msp430/dpp_msp-exp430f5529lp/qk/ccs-ti/.project index e4c2eb9b..ec24d76a 100644 --- a/examples/msp430/dpp_msp-exp430f5529lp/qk/ccs-ti/.project +++ b/examples/msp430/dpp_msp-exp430f5529lp/qk/ccs-ti/.project @@ -30,11 +30,6 @@ 2 PARENT-5-PROJECT_LOC/src/qf - - QP_include - 2 - PARENT-5-PROJECT_LOC/include - QP_port 2 @@ -45,26 +40,6 @@ 2 PARENT-5-PROJECT_LOC/src/qs - - qk - 2 - PARENT-5-PROJECT_LOC/src/qk - - - dpp.h - 1 - PARENT-2-PROJECT_LOC/dpp.h - - - philo.cpp - 1 - PARENT-2-PROJECT_LOC/philo.cpp - - - table.cpp - 1 - PARENT-2-PROJECT_LOC/table.cpp - bsp.cpp 1 @@ -75,10 +50,30 @@ 1 PARENT-2-PROJECT_LOC/bsp.h + + dpp.h + 1 + PARENT-2-PROJECT_LOC/dpp.h + main.cpp 1 PARENT-2-PROJECT_LOC/main.cpp + + philo.cpp + 1 + PARENT-2-PROJECT_LOC/philo.cpp + + + qk + 2 + PARENT-5-PROJECT_LOC/src/qk + + + table.cpp + 1 + PARENT-2-PROJECT_LOC/table.cpp + diff --git a/examples/msp430/dpp_msp-exp430f5529lp/qv/ccs-gnu/.project b/examples/msp430/dpp_msp-exp430f5529lp/qv/ccs-gnu/.project index 621f5d69..36d988e6 100644 --- a/examples/msp430/dpp_msp-exp430f5529lp/qv/ccs-gnu/.project +++ b/examples/msp430/dpp_msp-exp430f5529lp/qv/ccs-gnu/.project @@ -30,11 +30,6 @@ 2 PARENT-5-PROJECT_LOC/src/qf - - QP_include - 2 - PARENT-5-PROJECT_LOC/include - QP_port 2 @@ -45,26 +40,6 @@ 2 PARENT-5-PROJECT_LOC/src/qs - - qv - 2 - PARENT-5-PROJECT_LOC/src/qv - - - dpp.h - 1 - PARENT-2-PROJECT_LOC/dpp.h - - - philo.cpp - 1 - PARENT-2-PROJECT_LOC/philo.cpp - - - table.cpp - 1 - PARENT-2-PROJECT_LOC/table.cpp - bsp.cpp 1 @@ -75,10 +50,30 @@ 1 PARENT-2-PROJECT_LOC/bsp.h + + dpp.h + 1 + PARENT-2-PROJECT_LOC/dpp.h + main.cpp 1 PARENT-2-PROJECT_LOC/main.cpp + + philo.cpp + 1 + PARENT-2-PROJECT_LOC/philo.cpp + + + qv + 2 + PARENT-5-PROJECT_LOC/src/qv + + + table.cpp + 1 + PARENT-2-PROJECT_LOC/table.cpp + diff --git a/examples/msp430/dpp_msp-exp430f5529lp/qv/ccs-ti/.project b/examples/msp430/dpp_msp-exp430f5529lp/qv/ccs-ti/.project index 1a9d8a1f..3cdb09a4 100644 --- a/examples/msp430/dpp_msp-exp430f5529lp/qv/ccs-ti/.project +++ b/examples/msp430/dpp_msp-exp430f5529lp/qv/ccs-ti/.project @@ -30,11 +30,6 @@ 2 PARENT-5-PROJECT_LOC/src/qf - - QP_include - 2 - PARENT-5-PROJECT_LOC/include - QP_port 2 @@ -50,11 +45,26 @@ 2 PARENT-5-PROJECT_LOC/src/qv + + bsp.cpp + 1 + PARENT-1-PROJECT_LOC/bsp.cpp + + + bsp.h + 1 + PARENT-2-PROJECT_LOC/bsp.h + dpp.h 1 PARENT-2-PROJECT_LOC/dpp.h + + main.cpp + 1 + PARENT-2-PROJECT_LOC/main.cpp + philo.cpp 1 @@ -65,20 +75,5 @@ 1 PARENT-2-PROJECT_LOC/table.cpp - - bsp.cpp - 1 - PARENT-1-PROJECT_LOC/bsp.cpp - - - bsp.h - 1 - PARENT-2-PROJECT_LOC/bsp.h - - - main.cpp - 1 - PARENT-2-PROJECT_LOC/main.cpp - diff --git a/include/qep.hpp b/include/qep.hpp index 3a911b1a..26ed24c2 100644 --- a/include/qep.hpp +++ b/include/qep.hpp @@ -52,7 +52,7 @@ // major version number, Y is a 1-digit minor version number, and Z is // a 1-digit release number. // -#define QP_VERSION 712U +#define QP_VERSION 713U //! The current QP version as a zero terminated string literal. // @@ -61,10 +61,10 @@ // major version number, Y is a 1-digit minor version number, and Z is // a 1-digit release number. // -#define QP_VERSION_STR "7.1.2" +#define QP_VERSION_STR "7.1.3" -//! Encrypted current QP release (7.1.2) and date (2022-10-07) -#define QP_RELEASE 0x7C44FF47U +//! Encrypted current QP release (7.1.3) and date (2022-11-11) +#define QP_RELEASE 0x7C3520C6U //============================================================================ // Global namespace... diff --git a/include/qf.hpp b/include/qf.hpp index a863ac2e..55a667c6 100644 --- a/include/qf.hpp +++ b/include/qf.hpp @@ -1252,9 +1252,13 @@ public: namespace QP { namespace QF { +//${QF::QF-base::intLock_} ................................................... +//! Interrupt lock up-down counter (used in some QF ports) +extern std::uint_fast8_t volatile intLock_; + //${QF::QF-base::intNest_} ................................................... //! Interrupt nesting up-down counter (used in some QF ports) -extern std::uint_fast8_t intNest_; +extern std::uint_fast8_t volatile intNest_; //${QF::QF-base::init} ....................................................... //! QF initialization diff --git a/ports/arm-cm/qutest/qf_port.hpp b/ports/arm-cm/qutest/qf_port.hpp index 15ef3866..64f55192 100644 --- a/ports/arm-cm/qutest/qf_port.hpp +++ b/ports/arm-cm/qutest/qf_port.hpp @@ -1,39 +1,32 @@ +//============================================================================ +// QP/C++ Real-Time Embedded Framework (RTEF) +// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. +// +// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial +// +// This software is dual-licensed under the terms of the open source GNU +// General Public License version 3 (or any later version), or alternatively, +// under the terms of one of the closed source Quantum Leaps commercial +// licenses. +// +// The terms of the open source GNU General Public License version 3 +// can be found at: +// +// The terms of the closed source Quantum Leaps commercial licenses +// can be found at: +// +// Redistributions in source code must retain this top-level comment block. +// Plagiarizing this software to sidestep the license obligations is illegal. +// +// Contact information: +// +// +//============================================================================ +//! @date Last updated on: 2022-11-11 +//! @version Last updated for: @ref qpcpp_7_1_3 +//! //! @file -//! @brief QF/C++ port for QUTEST Unit Test, ARM Cortex-M with GNU or Visual C++ -//! @cond -//============================================================================ -//! Last updated for version 7.0.1 -//! Last updated on 2022-06-30 -//! -//! Q u a n t u m L e a P s -//! ------------------------ -//! Modern Embedded Software -//! -//! Copyright (C) 2005 Quantum Leaps. All rights reserved. -//! -//! This program is open source software: you can redistribute it and/or -//! modify it under the terms of the GNU General Public License as published -//! by the Free Software Foundation, either version 3 of the License, or -//! (at your option) any later version. -//! -//! Alternatively, this program may be distributed and modified under the -//! terms of Quantum Leaps commercial licenses, which expressly supersede -//! the GNU General Public License and are specifically designed for -//! licensees interested in retaining the proprietary status of their code. -//! -//! This program is distributed in the hope that it will be useful, -//! but WITHOUT ANY WARRANTY; without even the implied warranty of -//! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//! GNU General Public License for more details. -//! -//! You should have received a copy of the GNU General Public License -//! along with this program. If not, see . -//! -//! Contact information: -//! -//! -//============================================================================ -//! @endcond +//! @brief QF/C++ port for QUTEST Unit Test, ARM Cortex-M, GNU or Visual C++ #ifndef QF_PORT_HPP #define QF_PORT_HPP @@ -50,8 +43,8 @@ #define QF_MAX_TICK_RATE 2U // QF interrupt disable/enable -#define QF_INT_DISABLE() (++QP::QF::intNest_) -#define QF_INT_ENABLE() (--QP::QF::intNest_) +#define QF_INT_DISABLE() (++QP::QF::intLock_) +#define QF_INT_ENABLE() (--QP::QF::intLock_) // QF critical section // QF_CRIT_STAT_TYPE not defined diff --git a/ports/msp430/qk/qf_port.hpp b/ports/msp430/qk/qf_port.hpp index f4cbc7e9..e5a30da6 100644 --- a/ports/msp430/qk/qf_port.hpp +++ b/ports/msp430/qk/qf_port.hpp @@ -60,7 +60,7 @@ #endif #include "qep_port.hpp" // QEP port -#include "qk_port.hpp" // QK preemptive kernel port +#include "qk_port.hpp" // QK preemptive kernel port //============================================================================ // NOTE01: diff --git a/ports/msp430/qutest/qf_port.hpp b/ports/msp430/qutest/qf_port.hpp index 54331bf2..57065473 100644 --- a/ports/msp430/qutest/qf_port.hpp +++ b/ports/msp430/qutest/qf_port.hpp @@ -1,39 +1,32 @@ +//============================================================================ +// QP/C++ Real-Time Embedded Framework (RTEF) +// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. +// +// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial +// +// This software is dual-licensed under the terms of the open source GNU +// General Public License version 3 (or any later version), or alternatively, +// under the terms of one of the closed source Quantum Leaps commercial +// licenses. +// +// The terms of the open source GNU General Public License version 3 +// can be found at: +// +// The terms of the closed source Quantum Leaps commercial licenses +// can be found at: +// +// Redistributions in source code must retain this top-level comment block. +// Plagiarizing this software to sidestep the license obligations is illegal. +// +// Contact information: +// +// +//============================================================================ +//! @date Last updated on: 2022-11-11 +//! @version Last updated for: @ref qpcpp_7_1_3 +//! //! @file //! @brief QF/C++ to MSP40, QUTEST unit test harness, generic C99 compiler -//! @cond -//============================================================================ -//! Last updated for version 7.0.1 -//! Last updated on 2022-06-30 -//! -//! Q u a n t u m L e a P s -//! ------------------------ -//! Modern Embedded Software -//! -//! Copyright (C) 2005 Quantum Leaps. All rights reserved. -//! -//! This program is open source software: you can redistribute it and/or -//! modify it under the terms of the GNU General Public License as published -//! by the Free Software Foundation, either version 3 of the License, or -//! (at your option) any later version. -//! -//! Alternatively, this program may be distributed and modified under the -//! terms of Quantum Leaps commercial licenses, which expressly supersede -//! the GNU General Public License and are specifically designed for -//! licensees interested in retaining the proprietary status of their code. -//! -//! This program is distributed in the hope that it will be useful, -//! but WITHOUT ANY WARRANTY; without even the implied warranty of -//! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//! GNU General Public License for more details. -//! -//! You should have received a copy of the GNU General Public License -//! along with this program. If not, see . -//! -//! Contact information: -//! -//! -//============================================================================ -//! @endcond #ifndef QF_PORT_HPP #define QF_PORT_HPP @@ -53,8 +46,8 @@ #define QF_TIMEEVT_CTR_SIZE 2U // QF interrupt disable/enable -#define QF_INT_DISABLE() (++QP::QF::intNest_) -#define QF_INT_ENABLE() (--QP::QF::intNest_) +#define QF_INT_DISABLE() (++QP::QF::intLock_) +#define QF_INT_ENABLE() (--QP::QF::intLock_) // QF critical section // QF_CRIT_STAT_TYPE not defined diff --git a/ports/pic32/qutest/xc32/qf_port.hpp b/ports/pic32/qutest/xc32/qf_port.hpp index c7eab74f..9641fcfb 100644 --- a/ports/pic32/qutest/xc32/qf_port.hpp +++ b/ports/pic32/qutest/xc32/qf_port.hpp @@ -1,39 +1,32 @@ +//============================================================================ +// QP/C++ Real-Time Embedded Framework (RTEF) +// Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved. +// +// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-QL-commercial +// +// This software is dual-licensed under the terms of the open source GNU +// General Public License version 3 (or any later version), or alternatively, +// under the terms of one of the closed source Quantum Leaps commercial +// licenses. +// +// The terms of the open source GNU General Public License version 3 +// can be found at: +// +// The terms of the closed source Quantum Leaps commercial licenses +// can be found at: +// +// Redistributions in source code must retain this top-level comment block. +// Plagiarizing this software to sidestep the license obligations is illegal. +// +// Contact information: +// +// +//============================================================================ +//! @date Last updated on: 2022-11-11 +//! @version Last updated for: @ref qpcpp_7_1_3 +//! //! @file //! @brief QF/C++ port for QUTEST Unit Test, PIC32 -//! @cond -//============================================================================ -//! Last updated for version 7.0.1 -//! Last updated on 2022-06-30 -//! -//! Q u a n t u m L e a P s -//! ------------------------ -//! Modern Embedded Software -//! -//! Copyright (C) 2005 Quantum Leaps. All rights reserved. -//! -//! This program is open source software: you can redistribute it and/or -//! modify it under the terms of the GNU General Public License as published -//! by the Free Software Foundation, either version 3 of the License, or -//! (at your option) any later version. -//! -//! Alternatively, this program may be distributed and modified under the -//! terms of Quantum Leaps commercial licenses, which expressly supersede -//! the GNU General Public License and are specifically designed for -//! licensees interested in retaining the proprietary status of their code. -//! -//! This program is distributed in the hope that it will be useful, -//! but WITHOUT ANY WARRANTY; without even the implied warranty of -//! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -//! GNU General Public License for more details. -//! -//! You should have received a copy of the GNU General Public License -//! along with this program. If not, see . -//! -//! Contact information: -//! -//! -//============================================================================ -//! @endcond #ifndef QF_PORT_HPP #define QF_PORT_HPP @@ -50,8 +43,8 @@ #define QF_MAX_TICK_RATE 2U // QF interrupt disable/enable -#define QF_INT_DISABLE() (++QP::QF::intNest_) -#define QF_INT_ENABLE() (--QP::QF::intNest_) +#define QF_INT_DISABLE() (++QP::QF::intLock_) +#define QF_INT_ENABLE() (--QP::QF::intLock_) // QF critical section // QF_CRIT_STAT_TYPE not defined diff --git a/ports/posix-qutest/qf_port.hpp b/ports/posix-qutest/qf_port.hpp index bb999be1..880f302e 100644 --- a/ports/posix-qutest/qf_port.hpp +++ b/ports/posix-qutest/qf_port.hpp @@ -21,8 +21,8 @@ // // //============================================================================ -//! @date Last updated on: 2022-06-30 -//! @version Last updated for: @ref qpcpp_7_0_1 +//! @date Last updated on: 2022-11-11 +//! @version Last updated for: @ref qpcpp_7_1_3 //! //! @file //! @brief QF/C++ port for QUTEST Windows/Linux/macOS, GNU or Visual C++ @@ -45,8 +45,8 @@ #define QF_ACTIVE_STOP 1 // QF interrupt disable/enable -#define QF_INT_DISABLE() (++QP::QF::intNest_) -#define QF_INT_ENABLE() (--QP::QF::intNest_) +#define QF_INT_DISABLE() (++QP::QF::intLock_) +#define QF_INT_ENABLE() (--QP::QF::intLock_) // QF critical section // QF_CRIT_STAT_TYPE not defined diff --git a/ports/win32-quit/qf_port.hpp b/ports/win32-quit/qf_port.hpp index 7d025f7d..ac8c9de8 100644 --- a/ports/win32-quit/qf_port.hpp +++ b/ports/win32-quit/qf_port.hpp @@ -22,8 +22,8 @@ // // //============================================================================ -//! @date Last updated on: 2022-06-30 -//! @version Last updated for: @ref qpcpp_7_0_1 +//! @date Last updated on: 2022-11-11 +//! @version Last updated for: @ref qpcpp_7_1_3 //! //! @file //! @brief QF/C++ port for QUIT unit internal test, Win32 with GNU/VisualC++ @@ -46,8 +46,8 @@ #define QF_ACTIVE_STOP 1 // QF interrupt disable/enable -#define QF_INT_DISABLE() (++QP::QF::intNest_) -#define QF_INT_ENABLE() (--QP::QF::intNest_) +#define QF_INT_DISABLE() (++QP::QF::intLock_) +#define QF_INT_ENABLE() (--QP::QF::intLock_) // QUIT critical section // QF_CRIT_STAT_TYPE not defined diff --git a/ports/win32-qutest/qf_port.hpp b/ports/win32-qutest/qf_port.hpp index fc80533e..457810e9 100644 --- a/ports/win32-qutest/qf_port.hpp +++ b/ports/win32-qutest/qf_port.hpp @@ -21,8 +21,8 @@ // // //============================================================================ -//! @date Last updated on: 2022-06-30 -//! @version Last updated for: @ref qpcpp_7_0_1 +//! @date Last updated on: 2022-11-11 +//! @version Last updated for: @ref qpcpp_7_1_3 //! //! @file //! @brief QF/C++ port for QUTEST Windows/Linux/macOS, GNU or Visual C++ @@ -45,8 +45,8 @@ #define QF_ACTIVE_STOP 1 // QF interrupt disable/enable -#define QF_INT_DISABLE() (++QP::QF::intNest_) -#define QF_INT_ENABLE() (--QP::QF::intNest_) +#define QF_INT_DISABLE() (++QP::QF::intLock_) +#define QF_INT_ENABLE() (--QP::QF::intLock_) // QF critical section // QF_CRIT_STAT_TYPE not defined diff --git a/qpcpp.qm b/qpcpp.qm index 9fbc4a81..27d87691 100644 --- a/qpcpp.qm +++ b/qpcpp.qm @@ -5228,8 +5228,12 @@ return true; // the event is always posted correctly + + + //! Interrupt lock up-down counter (used in some QF ports) + - + //! Interrupt nesting up-down counter (used in some QF ports) @@ -8887,6 +8891,7 @@ while (QF::readySet_.notEmpty()) { //! data (as is required by the C++ Standard). QActive::subscrList_ = nullptr; QActive::maxPubSignal_ = 0; +QF::intLock_ = 0U; QF::intNest_ = 0U; QF::maxPool_ = 0U; @@ -9671,6 +9676,13 @@ bzero(&QK_attr_, sizeof(QK_attr_)); // setup the QK scheduler as initially locked and not running QK_attr_.lockCeil = (QF_MAX_ACTIVE + 1U); // scheduler locked +// QK idle AO object (const in ROM) +static void * const idle_ao[(sizeof(QActive)/sizeof(void*)) + 1U] + = { nullptr }; +// register the idle AO object (cast 'const' away) +QActive::registry_[0] = QF_CONST_CAST_(QActive*, + reinterpret_cast<QActive const*>(&idle_ao[0])); + #ifdef QK_INIT QK_INIT(); // port-specific initialization of the QK kernel #endif @@ -11683,11 +11695,11 @@ bzero(&QXK_attr_, sizeof(QXK_attr_)); QXK_attr_.lockCeil = (QF_MAX_ACTIVE + 1U); // scheduler locked // QXK idle AO object (const in ROM) -static QActive * const idle_ao[(sizeof(QActive)/sizeof(QActive*)) + 1U] +static void * const idle_ao[(sizeof(QActive)/sizeof(void*)) + 1U] = { nullptr }; // register the idle AO object (cast 'const' away) QActive::registry_[0] = QF_CONST_CAST_(QActive*, - QXK_PTR_CAST_(QActive const*, &idle_ao[0])); + reinterpret_cast<QActive const*>(&idle_ao[0])); #ifdef QXK_INIT QXK_INIT(); // port-specific initialization of the QXK kernel @@ -12251,7 +12263,7 @@ QF_CRIT_X_(); // major version number, Y is a 1-digit minor version number, and Z is // a 1-digit release number. // -#define QP_VERSION 712U +#define QP_VERSION 713U //! The current QP version as a zero terminated string literal. // @@ -12260,10 +12272,10 @@ QF_CRIT_X_(); // major version number, Y is a 1-digit minor version number, and Z is // a 1-digit release number. // -#define QP_VERSION_STR "7.1.2" +#define QP_VERSION_STR "7.1.3" -//! Encrypted current QP release (7.1.2) and date (2022-10-07) -#define QP_RELEASE 0x7C44FF47U +//! Encrypted current QP release (7.1.3) and date (2022-11-11) +#define QP_RELEASE 0x7C3520C6U //============================================================================ // Global namespace... @@ -13646,6 +13658,7 @@ Q_DEFINE_THIS_MODULE("qf_qact") //============================================================================ $define ${QF::QActive::registry_[QF_MAX_ACTIVE + 1U]} +$define ${QF::QF-base::intLock_} $define ${QF::QF-base::intNest_} $define ${QF::QF-pkg::readySet_} $define ${QF::QF-pkg::bzero} diff --git a/src/qf/qf_qact.cpp b/src/qf/qf_qact.cpp index 6590a255..3199d56e 100644 --- a/src/qf/qf_qact.cpp +++ b/src/qf/qf_qact.cpp @@ -69,12 +69,22 @@ QActive * QActive::registry_[QF_MAX_ACTIVE + 1U]; } // namespace QP //$enddef${QF::QActive::registry_[QF_MAX_ACTIVE + 1U]} ^^^^^^^^^^^^^^^^^^^^^^^ +//$define${QF::QF-base::intLock_} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv +namespace QP { +namespace QF { + +//${QF::QF-base::intLock_} ................................................... +std::uint_fast8_t volatile intLock_; + +} // namespace QF +} // namespace QP +//$enddef${QF::QF-base::intLock_} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //$define${QF::QF-base::intNest_} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv namespace QP { namespace QF { //${QF::QF-base::intNest_} ................................................... -std::uint_fast8_t intNest_; +std::uint_fast8_t volatile intNest_; } // namespace QF } // namespace QP diff --git a/src/qk/qk.cpp b/src/qk/qk.cpp index ca136bd9..20f0592b 100644 --- a/src/qk/qk.cpp +++ b/src/qk/qk.cpp @@ -161,6 +161,13 @@ void init() { // setup the QK scheduler as initially locked and not running QK_attr_.lockCeil = (QF_MAX_ACTIVE + 1U); // scheduler locked + // QK idle AO object (const in ROM) + static void * const idle_ao[(sizeof(QActive)/sizeof(void*)) + 1U] + = { nullptr }; + // register the idle AO object (cast 'const' away) + QActive::registry_[0] = QF_CONST_CAST_(QActive*, + reinterpret_cast(&idle_ao[0])); + #ifdef QK_INIT QK_INIT(); // port-specific initialization of the QK kernel #endif diff --git a/src/qs/qutest.cpp b/src/qs/qutest.cpp index 94114894..9a23c00f 100644 --- a/src/qs/qutest.cpp +++ b/src/qs/qutest.cpp @@ -188,6 +188,7 @@ void init() { //! data (as is required by the C++ Standard). QActive::subscrList_ = nullptr; QActive::maxPubSignal_ = 0; + QF::intLock_ = 0U; QF::intNest_ = 0U; QF::maxPool_ = 0U; diff --git a/src/qxk/qxk.cpp b/src/qxk/qxk.cpp index 8f9bf193..6d25f96f 100644 --- a/src/qxk/qxk.cpp +++ b/src/qxk/qxk.cpp @@ -166,11 +166,11 @@ void init() { QXK_attr_.lockCeil = (QF_MAX_ACTIVE + 1U); // scheduler locked // QXK idle AO object (const in ROM) - static QActive * const idle_ao[(sizeof(QActive)/sizeof(QActive*)) + 1U] + static void * const idle_ao[(sizeof(QActive)/sizeof(void*)) + 1U] = { nullptr }; // register the idle AO object (cast 'const' away) QActive::registry_[0] = QF_CONST_CAST_(QActive*, - QXK_PTR_CAST_(QActive const*, &idle_ao[0])); + reinterpret_cast(&idle_ao[0])); #ifdef QXK_INIT QXK_INIT(); // port-specific initialization of the QXK kernel