From f9e20be9e6e2154d4522055b4876b1350a312d5b Mon Sep 17 00:00:00 2001 From: Manuel Knoerle Date: Mon, 20 Apr 2026 10:08:17 +0200 Subject: [PATCH 1/2] fix: include CMSIS device header unconditionally in freertos_os2.h Move `#include CMSIS_device_header` outside the `#if defined(_RTE_)` guard so it is included for all toolchains, not only Keil MDK. Previously the device header was only included when _RTE_ was defined, which meant the SysTick macro was never available on GCC/CMake builds and SysTick_Handler in cmsis_os2.c was silently compiled out. Add an `#elif !defined(CMSIS_device_header)` error guard for non-RTE builds, matching the pattern used in os_systick.c from the CMSIS_6 repository (ARM-software/CMSIS_6). Note: handlers.c and Config/FreeRTOSConfig.h have a similar unconditional `#include "RTE_Components.h"` but are RTE-only components (Cortex-A IRQ handler / template config) and are not addressed in this change. --- CMSIS/RTOS2/FreeRTOS/Include/freertos_os2.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMSIS/RTOS2/FreeRTOS/Include/freertos_os2.h b/CMSIS/RTOS2/FreeRTOS/Include/freertos_os2.h index 4eec4269..2eaa60fe 100644 --- a/CMSIS/RTOS2/FreeRTOS/Include/freertos_os2.h +++ b/CMSIS/RTOS2/FreeRTOS/Include/freertos_os2.h @@ -30,8 +30,13 @@ #if defined(_RTE_) #include "RTE_Components.h" // Component selection +#elif !defined(CMSIS_device_header) +#error "CMSIS_device_header must be defined to point to CMSIS device header" +#endif + #include CMSIS_device_header +#if defined(_RTE_) /* Configuration and component setup check */ #if defined(RTE_Compiler_EventRecorder) || defined(RTE_CMSIS_View_EventRecorder) #if !defined(EVR_FREERTOS_DISABLE) From 03b37b9d07b9a4f4da6172ff1e728ec2e8946642 Mon Sep 17 00:00:00 2001 From: Vladimir Umek Date: Fri, 8 May 2026 09:12:18 +0200 Subject: [PATCH 2/2] Correct RTE_Components.h and CMSIS_device_header includes --- CMSIS/RTOS2/FreeRTOS/Include/freertos_evr.h | 4 +++- CMSIS/RTOS2/FreeRTOS/Include/freertos_os2.h | 2 -- CMSIS/RTOS2/FreeRTOS/Source/clib_os.c | 8 +++++++- CMSIS/RTOS2/FreeRTOS/Source/handlers.c | 16 ++++++---------- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/CMSIS/RTOS2/FreeRTOS/Include/freertos_evr.h b/CMSIS/RTOS2/FreeRTOS/Include/freertos_evr.h index 6446648e..2c390b94 100644 --- a/CMSIS/RTOS2/FreeRTOS/Include/freertos_evr.h +++ b/CMSIS/RTOS2/FreeRTOS/Include/freertos_evr.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- - * Copyright (c) 2013-2025 Arm Limited. All rights reserved. + * Copyright 2013-2026 Arm Limited and/or its affiliates. * * SPDX-License-Identifier: Apache-2.0 * @@ -26,7 +26,9 @@ #include #include +#if defined(_RTE_) #include "RTE_Components.h" +#endif #if !defined(RTE_Compiler_EventRecorder) && !defined(RTE_CMSIS_View_EventRecorder) /* Disable debug events if Event Recorder is not used */ diff --git a/CMSIS/RTOS2/FreeRTOS/Include/freertos_os2.h b/CMSIS/RTOS2/FreeRTOS/Include/freertos_os2.h index 2eaa60fe..0897d623 100644 --- a/CMSIS/RTOS2/FreeRTOS/Include/freertos_os2.h +++ b/CMSIS/RTOS2/FreeRTOS/Include/freertos_os2.h @@ -36,7 +36,6 @@ #include CMSIS_device_header -#if defined(_RTE_) /* Configuration and component setup check */ #if defined(RTE_Compiler_EventRecorder) || defined(RTE_CMSIS_View_EventRecorder) #if !defined(EVR_FREERTOS_DISABLE) @@ -59,7 +58,6 @@ #if defined(RTE_RTOS_FreeRTOS_HEAP_5) #define USE_FreeRTOS_HEAP_5 #endif -#endif /* _RTE_ */ /* CMSIS-RTOS2 FreeRTOS image size optimization definitions. diff --git a/CMSIS/RTOS2/FreeRTOS/Source/clib_os.c b/CMSIS/RTOS2/FreeRTOS/Source/clib_os.c index eee8d260..a31662cc 100644 --- a/CMSIS/RTOS2/FreeRTOS/Source/clib_os.c +++ b/CMSIS/RTOS2/FreeRTOS/Source/clib_os.c @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- - * Copyright (c) 2024-2025 Arm Limited. All rights reserved. + * Copyright 2024-2026 Arm Limited and/or its affiliates. * * SPDX-License-Identifier: Apache-2.0 * @@ -27,6 +27,12 @@ #include "task.h" // ARM.FreeRTOS::RTOS:Core #include "semphr.h" // ARM.FreeRTOS::RTOS:Core +#include "cmsis_compiler.h" + +#if defined(_RTE_) +#include "RTE_Components.h" +#endif + /* Event Recorder initialization before entering function "main" */ #if (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && !defined(__MICROLIB)) extern void _platform_post_stackheap_init (void); diff --git a/CMSIS/RTOS2/FreeRTOS/Source/handlers.c b/CMSIS/RTOS2/FreeRTOS/Source/handlers.c index 049094d7..64840ff5 100644 --- a/CMSIS/RTOS2/FreeRTOS/Source/handlers.c +++ b/CMSIS/RTOS2/FreeRTOS/Source/handlers.c @@ -1,14 +1,5 @@ -/****************************************************************************** - * @file irq_handler.c - * @brief CMSIS-FreeRTOS Interrupt Handler - * @version 9.1.0 - * @date 11 Aug 2017 - * - * @note - * - ******************************************************************************/ /* - * Copyright (c) 2017 Arm Limited. All rights reserved. + * Copyright 2017-2018, 2026 Arm Limited and/or its affiliates. * * SPDX-License-Identifier: Apache-2.0 * @@ -27,7 +18,12 @@ #include +#if defined(_RTE_) #include "RTE_Components.h" +#elif !defined(CMSIS_device_header) +#error "CMSIS_device_header must be defined to point to CMSIS device header" +#endif + #include CMSIS_device_header #include "irq_ctrl.h"