Skip to content

Commit 03831c5

Browse files
committed
- Build Event Recorder setup function conditionally.
- Fix build issues for Cortex-A profile.
1 parent a9f9a43 commit 03831c5

4 files changed

Lines changed: 29 additions & 13 deletions

File tree

ARM.CMSIS-FreeRTOS.pdsc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88
<license>License/license.txt</license>
99

1010
<releases>
11+
<release version="10.0.2-dev5">
12+
CMSIS:RTOS2:FreeRTOS update:
13+
- Build Event Recorder setup function conditionally.
14+
- Fix build issues for Cortex-A profile.
15+
</release>
1116
<release version="10.0.2-dev4">
1217
CMSIS:RTOS2:FreeRTOS update:
1318
- Updated ARM standard C library interface

CMSIS/RTOS2/FreeRTOS/Source/ARM/clib_arm.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@ __WEAK
4747
void _platform_post_stackheap_init (void);
4848
void _platform_post_stackheap_init (void) {
4949
/* Initialize OS, memory, etc. */
50-
EvrFreeRTOSSetup(0);
50+
#if defined(RTE_Compiler_EventRecorder)
51+
EvrFreeRTOSSetup(0);
52+
#endif
5153
}
5254
#endif /* __MICROLIB */
5355

@@ -56,7 +58,9 @@ __WEAK
5658
void software_init_hook (void);
5759
void software_init_hook (void) {
5860
/* Initialize OS, memory, etc. */
59-
EvrFreeRTOSSetup(0);
61+
#if defined(RTE_Compiler_EventRecorder)
62+
EvrFreeRTOSSetup(0);
63+
#endif
6064
}
6165

6266
#endif

CMSIS/RTOS2/FreeRTOS/Source/cmsis_os2.c

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,11 @@
5656
#define IS_IRQ_MASKED() ((__get_PRIMASK() != 0U) || ((KernelState == osKernelRunning) && (__get_BASEPRI() != 0U)))
5757
#elif (__ARM_ARCH_6M__ == 1U)
5858
#define IS_IRQ_MASKED() ((__get_PRIMASK() != 0U) && (KernelState == osKernelRunning))
59-
#elif (__ARM_ARCH_7A__ == 1)
60-
#define IS_IRQ_MASKED() (0U)
59+
#elif (__ARM_ARCH_7A__ == 1U)
60+
/* CPSR mask bits */
61+
#define CPSR_MASKBIT_I 0x80U
62+
63+
#define IS_IRQ_MASKED() ((__get_CPSR() & CPSR_MASKBIT_I) != 0U)
6164
#else
6265
#define IS_IRQ_MASKED() (__get_PRIMASK() != 0U)
6366
#endif
@@ -169,7 +172,9 @@ osStatus_t osKernelInitialize (void) {
169172
}
170173
else {
171174
if (KernelState == osKernelInactive) {
172-
EvrFreeRTOSSetup(0U);
175+
#if defined(RTE_Compiler_EventRecorder)
176+
EvrFreeRTOSSetup(0U);
177+
#endif
173178
#if defined(RTE_RTOS_FreeRTOS_HEAP_5) && (HEAP_5_REGION_SETUP == 1)
174179
vPortDefineHeapRegions (configHEAP_5_REGIONS);
175180
#endif
@@ -356,7 +361,7 @@ uint32_t osKernelGetTickFreq (void) {
356361
}
357362

358363
uint32_t osKernelGetSysTimerCount (void) {
359-
uint32_t primask = __get_PRIMASK();
364+
uint32_t irqmask = IS_IRQ_MASKED();
360365
TickType_t ticks;
361366
uint32_t val;
362367

@@ -371,7 +376,7 @@ uint32_t osKernelGetSysTimerCount (void) {
371376
}
372377
val += ticks * OS_Tick_GetInterval();
373378

374-
if (primask == 0U) {
379+
if (irqmask == 0U) {
375380
__enable_irq();
376381
}
377382

@@ -840,10 +845,12 @@ osStatus_t osDelayUntil (uint32_t ticks) {
840845
else {
841846
stat = osOK;
842847
tcnt = xTaskGetTickCount();
848+
849+
/* Determine remaining number of ticks to delay */
843850
delay = (TickType_t)ticks - tcnt;
844851

845-
/* check if target tick has not expired */
846-
if(delay && 0 == (delay >> (8 * sizeof(TickType_t) - 1))){
852+
/* Check if target tick has not expired */
853+
if((delay != 0U) && (0 == (delay >> (8 * sizeof(TickType_t) - 1)))) {
847854
vTaskDelayUntil (&tcnt, delay);
848855
}
849856
else

CMSIS/RTOS2/FreeRTOS/Source/freertos_evr.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* --------------------------------------------------------------------------
2-
* Copyright (c) 2013-2018 Arm Limited. All rights reserved.
2+
* Copyright (c) 2013-2019 Arm Limited. All rights reserved.
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*
@@ -196,8 +196,6 @@
196196
#define EvtFreeRTOSStreamBuf_StreamBufferReceiveFailed EventID(EventLevelError, EvtFreeRTOSStreamBufNo, 0x0BU)
197197
#define EvtFreeRTOSStreamBuf_StreamBufferReceiveFromIsr EventID(EventLevelOp, EvtFreeRTOSStreamBufNo, 0x0CU)
198198

199-
#endif /* RTE_Compiler_EventRecorder */
200-
201199
/* Event Recorder initialization and level filter setup */
202200
void EvrFreeRTOSSetup (uint32_t reset) {
203201
#if !defined(EVR_FREERTOS_DISABLE)
@@ -229,6 +227,8 @@ void EvrFreeRTOSSetup (uint32_t reset) {
229227
#endif
230228
}
231229

230+
#endif /* RTE_Compiler_EventRecorder */
231+
232232
/* Tasks */
233233

234234
#if (!defined(EVR_FREERTOS_DISABLE) && !defined(traceTASK_CREATE_DISABLE))
@@ -971,7 +971,7 @@ void EvrFreeRTOSStreamBuf_StreamBufferCreateFailed (uint32_t uxIsMessageBuffer)
971971
#if defined(RTE_Compiler_EventRecorder)
972972
EventRecord2(EvtFreeRTOSStreamBuf_StreamBufferCreateFailed, (uint32_t)uxIsMessageBuffer, 0U);
973973
#else
974-
(void)pxStreamBuffer;
974+
(void)uxIsMessageBuffer;
975975
#endif
976976
}
977977
#endif

0 commit comments

Comments
 (0)