Skip to content

Commit 74b3686

Browse files
committed
Added debug events for Event Recorder
Added CMSIS-RTOS compatibility layer
1 parent 053e3d4 commit 74b3686

11 files changed

Lines changed: 3005 additions & 15 deletions

File tree

ARM.CMSIS-FreeRTOS.pdsc

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -211,12 +211,25 @@
211211
</conditions>
212212

213213
<components>
214+
<!-- CMSIS-RTOS FreeRTOS component -->
215+
<component Cclass="CMSIS" Cgroup="RTOS" Csub="FreeRTOS" Cversion="9.0.0" Capiversion="1.0.0" condition="FreeRTOS RTOS2 Core">
216+
<description>CMSIS-RTOS implementation for Cortex-M based on FreeRTOS</description>
217+
<RTE_Components_h>
218+
#define RTE_CMSIS_RTOS /* CMSIS-RTOS */
219+
#define RTE_CMSIS_RTOS_FreeRTOS /* CMSIS-RTOS FreeRTOS */
220+
</RTE_Components_h>
221+
<files>
222+
<file category="header" name="CMSIS/RTOS2/FreeRTOS/Include1/cmsis_os.h"/>
223+
<file category="source" name="CMSIS/RTOS2/FreeRTOS/Source/cmsis_os1.c"/>
224+
</files>
225+
</component>
226+
214227
<!-- CMSIS-RTOS2 FreeRTOS component -->
215228
<component Cclass="CMSIS" Cgroup="RTOS2" Csub="FreeRTOS" Cversion="9.0.0" Capiversion="2.1.0" condition="FreeRTOS RTOS2 Core">
216229
<description>CMSIS-RTOS2 implementation for Cortex-M based on FreeRTOS</description>
217230
<RTE_Components_h>
218-
#define RTE_CMSIS_RTOS2 /* CMSIS-RTOS2 */
219-
#define RTE_CMSIS_RTOS2_FreeRTOS /* CMSIS-RTOS2 FreeRTOS */
231+
#define RTE_CMSIS_RTOS2 /* CMSIS-RTOS2 */
232+
#define RTE_CMSIS_RTOS2_FreeRTOS /* CMSIS-RTOS2 FreeRTOS */
220233
</RTE_Components_h>
221234
<files>
222235
<file category="doc" name="CMSIS/Documentation/General/html/index.html"/>
@@ -231,7 +244,7 @@
231244
<component Cgroup="Core" Cversion="9.0.0" condition="FreeRTOS">
232245
<description>Core components API (Kernel, Tasks, Semaphores, Mutexes, Queues)</description>
233246
<RTE_Components_h>
234-
#define RTE_RTOS_FreeRTOS_CORE /* RTOS FreeRTOS Core */
247+
#define RTE_RTOS_FreeRTOS_CORE /* RTOS FreeRTOS Core */
235248
</RTE_Components_h>
236249
<files>
237250
<file category="include" name="Source/include/"/>
@@ -281,14 +294,16 @@
281294
<file category="source" condition="CA9_GCC" name="Source/portable/GCC/ARM_CA9/port.c"/>
282295
<file category="sourceAsm" condition="CA9_GCC" name="Source/portable/GCC/ARM_CA9/portASM.S"/>
283296

284-
<file category="other" name="CMSIS/RTOS2/FreeRTOS/FreeRTOS.scvd"/>
297+
<file category="header" name="CMSIS/RTOS2/FreeRTOS/Include/freertos_evr.h"/>
298+
<file category="source" name="CMSIS/RTOS2/FreeRTOS/Source/freertos_evr.c"/>
299+
<file category="other" name="CMSIS/RTOS2/FreeRTOS/FreeRTOS.scvd"/>
285300
</files>
286301
</component>
287302

288303
<component Cgroup="Config" Cvariant="CMSIS RTOS2" Cversion="9.0.0" condition="CMSIS RTOS2 FreeRTOS">
289304
<description>FreeRTOS CMSIS-RTOS2 API configuration file</description>
290305
<RTE_Components_h>
291-
#define RTE_RTOS_FreeRTOS_CONFIG_RTOS2 /* RTOS FreeRTOS Config for CMSIS RTOS2 API */
306+
#define RTE_RTOS_FreeRTOS_CONFIG_RTOS2 /* RTOS FreeRTOS Config for CMSIS RTOS2 API */
292307
</RTE_Components_h>
293308
<files>
294309
<file category="header" attr="config" name="CMSIS/RTOS2/FreeRTOS/Config/FreeRTOSConfig.h" version="9.0.0"/>
@@ -298,7 +313,7 @@
298313
<component Cgroup="Config" Cvariant="FreeRTOS" Cversion="9.0.0" condition="FreeRTOS Core">
299314
<description>FreeRTOS API configuration file</description>
300315
<RTE_Components_h>
301-
#define RTE_RTOS_FreeRTOS_CONFIG /* RTOS FreeRTOS Config for FreeRTOS API */
316+
#define RTE_RTOS_FreeRTOS_CONFIG /* RTOS FreeRTOS Config for FreeRTOS API */
302317
</RTE_Components_h>
303318
<files>
304319
<file category="header" attr="config" name="Config/FreeRTOSConfig.h" version="9.0.0"/>
@@ -308,7 +323,7 @@
308323
<component Cgroup="Coroutines" Cversion="9.0.0" condition="FreeRTOS Core">
309324
<description>Co-routine API</description>
310325
<RTE_Components_h>
311-
#define RTE_RTOS_FreeRTOS_COROUTINE /* RTOS FreeRTOS Co-routines */
326+
#define RTE_RTOS_FreeRTOS_COROUTINE /* RTOS FreeRTOS Co-routines */
312327
</RTE_Components_h>
313328
<files>
314329
<file category="header" name="Source/include/croutine.h"/>
@@ -319,7 +334,7 @@
319334
<component Cgroup="Event Groups" Cversion="9.0.0" condition="FreeRTOS Core">
320335
<description>Event Group API</description>
321336
<RTE_Components_h>
322-
#define RTE_RTOS_FreeRTOS_EVENTGROUPS /* RTOS FreeRTOS Event Groups */
337+
#define RTE_RTOS_FreeRTOS_EVENTGROUPS /* RTOS FreeRTOS Event Groups */
323338
</RTE_Components_h>
324339
<files>
325340
<file category="header" name="Source/include/event_groups.h"/>
@@ -330,7 +345,7 @@
330345
<component Cgroup="Timers" Cversion="9.0.0" condition="FreeRTOS Core">
331346
<description>Timer API</description>
332347
<RTE_Components_h>
333-
#define RTE_RTOS_FreeRTOS_TIMERS /* RTOS FreeRTOS Timers */
348+
#define RTE_RTOS_FreeRTOS_TIMERS /* RTOS FreeRTOS Timers */
334349
</RTE_Components_h>
335350
<files>
336351
<file category="header" name="Source/include/timers.h"/>
@@ -341,7 +356,7 @@
341356
<component Cgroup="Heap" Cvariant="Heap_1" Cversion="9.0.0" condition="FreeRTOS Core">
342357
<description>Very simple, does not permit memory to be freed.</description>
343358
<RTE_Components_h>
344-
#define RTE_RTOS_FreeRTOS_HEAP_1 /* RTOS FreeRTOS Heap 1 */
359+
#define RTE_RTOS_FreeRTOS_HEAP_1 /* RTOS FreeRTOS Heap 1 */
345360
</RTE_Components_h>
346361
<files>
347362
<file category="source" name="Source/portable/MemMang/heap_1.c"/>
@@ -352,7 +367,7 @@
352367
<component Cgroup="Heap" Cvariant="Heap_2" Cversion="9.0.0" condition="FreeRTOS Core">
353368
<description>Permits memory to be freed, but not does coalescence adjacent free memory blocks.</description>
354369
<RTE_Components_h>
355-
#define RTE_RTOS_FreeRTOS_HEAP_2 /* RTOS FreeRTOS Heap 2 */
370+
#define RTE_RTOS_FreeRTOS_HEAP_2 /* RTOS FreeRTOS Heap 2 */
356371
</RTE_Components_h>
357372
<files>
358373
<file category="source" name="Source/portable/MemMang/heap_2.c"/>
@@ -363,7 +378,7 @@
363378
<component Cgroup="Heap" Cvariant="Heap_3" Cversion="9.0.0" condition="FreeRTOS Core">
364379
<description>Wraps the standard malloc() and free() for thread safety.</description>
365380
<RTE_Components_h>
366-
#define RTE_RTOS_FreeRTOS_HEAP_3 /* RTOS FreeRTOS Heap 3 */
381+
#define RTE_RTOS_FreeRTOS_HEAP_3 /* RTOS FreeRTOS Heap 3 */
367382
</RTE_Components_h>
368383
<files>
369384
<file category="source" name="Source/portable/MemMang/heap_3.c"/>
@@ -374,7 +389,7 @@
374389
<component Cgroup="Heap" Cvariant="Heap_4" Cversion="9.0.0" condition="FreeRTOS Core" isDefaultVariant="true">
375390
<description>Coalescences adjacent free memory blocks to avoid fragmentation. Includes absolute address placement option.</description>
376391
<RTE_Components_h>
377-
#define RTE_RTOS_FreeRTOS_HEAP_4 /* RTOS FreeRTOS Heap 4 */
392+
#define RTE_RTOS_FreeRTOS_HEAP_4 /* RTOS FreeRTOS Heap 4 */
378393
</RTE_Components_h>
379394
<files>
380395
<file category="source" name="Source/portable/MemMang/heap_4.c"/>
@@ -385,7 +400,7 @@
385400
<component Cgroup="Heap" Cvariant="Heap_5" Cversion="9.0.0" condition="FreeRTOS Core">
386401
<description>Same as Heap_4, with the ability to span the heap across multiple non-adjacent memory areas.</description>
387402
<RTE_Components_h>
388-
#define RTE_RTOS_FreeRTOS_HEAP_5 /* RTOS FreeRTOS Heap 5 */
403+
#define RTE_RTOS_FreeRTOS_HEAP_5 /* RTOS FreeRTOS Heap 5 */
389404
</RTE_Components_h>
390405
<files>
391406
<file category="source" name="Source/portable/MemMang/heap_5.c"/>

CMSIS/RTOS2/FreeRTOS/Config/FreeRTOSConfig.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,4 +199,7 @@ extern uint32_t SystemCoreClock;
199199
#define xPortPendSVHandler PendSV_Handler
200200
#define vPortSVCHandler SVC_Handler
201201

202+
/* Include debug event definitions */
203+
#include "freertos_evr.h"
204+
202205
#endif /* FREERTOS_CONFIG_H */

CMSIS/RTOS2/FreeRTOS/Examples/Blinky/RTE/RTOS/FreeRTOSConfig.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,4 +199,7 @@ extern uint32_t SystemCoreClock;
199199
#define xPortPendSVHandler PendSV_Handler
200200
#define vPortSVCHandler SVC_Handler
201201

202+
/* Include debug event definitions */
203+
#include "freertos_evr.h"
204+
202205
#endif /* FREERTOS_CONFIG_H */

CMSIS/RTOS2/FreeRTOS/Examples/Native_Blinky/RTE/RTOS/FreeRTOSConfig.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,4 +156,7 @@ standard names. */
156156
#define xPortPendSVHandler PendSV_Handler
157157
#define xPortSysTickHandler SysTick_Handler
158158

159+
/* Include debug event definitions */
160+
#include "freertos_evr.h"
161+
159162
#endif /* FREERTOS_CONFIG_H */

CMSIS/RTOS2/FreeRTOS/FreeRTOS.scvd

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,91 @@
491491
</objects>
492492

493493
<events>
494+
495+
<group name="FreeRTOS RTOS">
496+
<component name="Tasks Events" brief="FreeRTOS Tasks" no="0xF0" prefix="EvrFreeRTOSTasks_" info="FreeRTOS Tasks Events"/>
497+
<component name="Queue Events" brief="FreeRTOS Queue" no="0xF1" prefix="EvrFreeRTOSQueue_" info="FreeRTOS Queue Events"/>
498+
<component name="Timers Events" brief="FreeRTOS Timers" no="0xF2" prefix="EvrFreeRTOSTimers_" info="FreeRTOS Timers Events"/>
499+
<component name="EventGroups Events" brief="FreeRTOS EventGroups" no="0xF3" prefix="EvrFreeRTOSEventGroups_" info="FreeRTOS Event Groups Events"/>
500+
<component name="Heap Events" brief="FreeRTOS Heap" no="0xF4" prefix="EvrFreeRTOSHeap_" info="FreeRTOS Heap Events"/>
501+
</group>
502+
503+
<event id="0xF000 + 0x00" level="Op" property="TaskCreate" value="pxNewTCB=%x[val1]" info=""/>
504+
<event id="0xF000 + 0x01" level="Error" property="TaskCreateFailed" value="" info=""/>
505+
<event id="0xF000 + 0x02" level="Op" property="TaskDelete" value="pxTCB=%x[val1]" info=""/>
506+
<event id="0xF000 + 0x03" level="Op" property="TaskDelayUntil" value="xTimeToWake=%d[val1]" info=""/>
507+
<event id="0xF000 + 0x04" level="Op" property="TaskDelay" value="xTicksToDelay=%d[val1]" info=""/>
508+
<event id="0xF000 + 0x05" level="Op" property="TaskPrioritySet" value="pxTCB=%x[val1], uxNewPriority=%d[val2]" info=""/>
509+
<event id="0xF000 + 0x06" level="Op" property="TaskSuspend" value="pxTCB=%x[val1]" info=""/>
510+
<event id="0xF000 + 0x07" level="Op" property="TaskResume" value="pxTCB=%x[val1]" info=""/>
511+
<event id="0xF000 + 0x08" level="Op" property="TaskResumeFromIsr" value="pxTCB=%x[val1]" info=""/>
512+
<event id="0xF000 + 0x09" level="Op" property="TaskIncrementTick" value="xTickCount=%d[val1]" info=""/>
513+
<event id="0xF000 + 0x0A" level="Op" property="IncreaseTickCount" value="xTicksToJump=%d[val1]" info=""/>
514+
<event id="0xF000 + 0x0B" level="Op" property="TaskSwitchedOut" value="pxCurrentTCB=%x[val1]" info=""/>
515+
<event id="0xF000 + 0x0C" level="Op" property="TaskSwitchedIn" value="pxCurrentTCB=%x[val1], priority=%d[val2]" info=""/>
516+
<event id="0xF000 + 0x0D" level="Op" property="TaskPriorityInherit" value="pxTCBOfMutexHolder=%x[val1], uxInheritedPriority=%d[val2]" info=""/>
517+
<event id="0xF000 + 0x0E" level="Op" property="TaskPriorityDisinherit" value="pxTCBOfMutexHolder=%x[val1], uxOriginalPriority=%d[val2]" info=""/>
518+
<event id="0xF000 + 0x0F" level="Op" property="MovedTaskToReadyState" value="pxTCB=%x[val1]" info=""/>
519+
<event id="0xF000 + 0x10" level="Op" property="PostMovedTaskToReadyState" value="pxTCB=%x[val1]" info=""/>
520+
<event id="0xF000 + 0x11" level="Op" property="LowPowerIdleBegin" value="xExpectedIdleTime=%d[val1]" info=""/>
521+
<event id="0xF000 + 0x12" level="Op" property="LowPowerIdleEnd" value="" info=""/>
522+
<event id="0xF000 + 0x13" level="Op" property="TaskNotifyTakeBlock" value="xTicksToWait=%d[val1]" info=""/>
523+
<event id="0xF000 + 0x14" level="Op" property="TaskNotifyTake" value="ulNotifiedValue=%x[val1]" info=""/>
524+
<event id="0xF000 + 0x15" level="Op" property="TaskNotifyWaitBlock" value="xTicksToWait=%d[val1]" info=""/>
525+
<event id="0xF000 + 0x16" level="Op" property="TaskNotifyWait" value="ulNotifiedValue=%x[val1]" info=""/>
526+
<event id="0xF000 + 0x17" level="Op" property="TaskNotify" value="xTaskToNotify=%x[val1], ulValue=%x[val2], eAction=%x[val3], ulNotifiedValue=%x[val4]" info=""/>
527+
<event id="0xF000 + 0x18" level="Op" property="TaskNotifyFromIsr" value="xTaskToNotify=%x[val1], ulValue=%x[val2], eAction=%x[val3], ulNotifiedValue=%x[val4]" info=""/>
528+
<event id="0xF000 + 0x19" level="Op" property="TaskNotifyGiveFromIsr" value="xTaskToNotify=%x[val1], ulNotifiedValue=%x[val2]" info=""/>
529+
530+
<event id="0xF100 + 0x00" level="Op" property="QueueCreate" value="pxQueue=%x[val1]" info=""/>
531+
<event id="0xF100 + 0x01" level="Error" property="QueueCreateFailed" value="ucQueueType=%x[val1]" info=""/>
532+
<event id="0xF100 + 0x02" level="Op" property="CreateMutex" value="pxNewQueue=%x[val1]" info=""/>
533+
<event id="0xF100 + 0x03" level="Error" property="CreateMutexFailed" value="" info=""/>
534+
<event id="0xF100 + 0x04" level="Op" property="GiveMutexRecursive" value="pxMutex=%x[val1]" info=""/>
535+
<event id="0xF100 + 0x05" level="Error" property="GiveMutexRecursiveFailed" value="pxMutex=%x[val1]" info=""/>
536+
<event id="0xF100 + 0x06" level="Op" property="TakeMutexRecursive" value="pxMutex=%x[val1]" info=""/>
537+
<event id="0xF100 + 0x07" level="Error" property="TakeMutexRecursiveFailed" value="pxMutex=%x[val1]" info=""/>
538+
<event id="0xF100 + 0x08" level="Op" property="CreateCountingSemaphore" value="xHandle=%x[val1]" info=""/>
539+
<event id="0xF100 + 0x09" level="Error" property="CreateCountingSemaphoreFailed" value="" info=""/>
540+
<event id="0xF100 + 0x0A" level="Op" property="QueueSend" value="pxQueue=%x[val1]" info=""/>
541+
<event id="0xF100 + 0x0B" level="Error" property="QueueSendFailed" value="pxQueue=%x[val1]" info=""/>
542+
<event id="0xF100 + 0x0C" level="Op" property="QueueReceive" value="pxQueue=%x[val1]" info=""/>
543+
<event id="0xF100 + 0x0D" level="Op" property="QueuePeek" value="pxQueue=%x[val1]" info=""/>
544+
<event id="0xF100 + 0x0E" level="Op" property="QueuePeekFromIsr" value="pxQueue=%x[val1]" info=""/>
545+
<event id="0xF100 + 0x0F" level="Error" property="QueueReceiveFailed" value="pxQueue=%x[val1]" info=""/>
546+
<event id="0xF100 + 0x10" level="Op" property="QueueSendFromIsr" value="pxQueue=%x[val1]" info=""/>
547+
<event id="0xF100 + 0x11" level="Error" property="QueueSendFromIsrFailed" value="pxQueue=%x[val1]" info=""/>
548+
<event id="0xF100 + 0x12" level="Op" property="QueueReceiveFromIsr" value="pxQueue=%x[val1]" info=""/>
549+
<event id="0xF100 + 0x13" level="Error" property="QueueReceiveFromIsrFailed" value="pxQueue=%x[val1]" info=""/>
550+
<event id="0xF100 + 0x14" level="Error" property="QueuePeekFromIsrFailed" value="pxQueue=%x[val1]" info=""/>
551+
<event id="0xF100 + 0x15" level="Op" property="QueueDelete" value="pxQueue=%x[val1]" info=""/>
552+
<event id="0xF100 + 0x16" level="Op" property="QueueRegistryAdd" value="pxQueue=%x[val1], pcQueueName=%x[val2]" info=""/>
553+
<event id="0xF100 + 0x17" level="Op" property="BlockingOnQueueReceive" value="pxQueue=%x[val1]" info=""/>
554+
<event id="0xF100 + 0x18" level="Op" property="BlockingOnQueueSend" value="pxQueue=%x[val1]" info=""/>
555+
556+
<event id="0xF200 + 0x00" level="Op" property="TimerCreate" value="pxNewTimer=%x[val1]" info=""/>
557+
<event id="0xF200 + 0x01" level="Error" property="TimerCreateFailed" value="" info=""/>
558+
<event id="0xF200 + 0x02" level="Op" property="TimerCommandSend" value="xTimer=%x[val1], xMessageID=%x[val2], xOptionalValue=%x[val3], xReturn=%x[val4]" info=""/>
559+
<event id="0xF200 + 0x03" level="Op" property="TimerCommandReceived" value="xTimer=%x[val1], xMessageID=%x[val2], xOptionalValue=%x[val3]" info=""/>
560+
<event id="0xF200 + 0x04" level="Op" property="TimerExpired" value="pxTimer=%x[val1]" info=""/>
561+
<event id="0xF200 + 0x05" level="Op" property="PendFuncCall" value="pxFunctionToPend=%x[val1], pvParameter1=%x[val2], ulParameter2=%x[val3], xReturn=%x[val4]" info=""/>
562+
<event id="0xF200 + 0x06" level="Op" property="PendFuncCallFromIsr" value="pxFunctionToPend=%x[val1], pvParameter1=%x[val2], ulParameter2=%x[val3], xReturn=%x[val4]" info=""/>
563+
564+
<event id="0xF300 + 0x00" level="Op" property="EventGroupCreate" value="pxEventGroup=%x[val1]" info=""/>
565+
<event id="0xF300 + 0x01" level="Error" property="EventGroupCreateFailed" value="" info=""/>
566+
<event id="0xF300 + 0x02" level="Op" property="EventGroupSyncBlock" value="pxEventGroup=%x[val1], uxBitsToSet=%x[val2], uxBitsToWaitFor=%x[val3]" info=""/>
567+
<event id="0xF300 + 0x03" level="Op" property="EventGroupSyncEnd" value="pxEventGroup=%x[val1], uxBitsToSet=%x[val2], uxBitsToWaitFor=%x[val3], xTimeoutOccurred=%x[val4]" info=""/>
568+
<event id="0xF300 + 0x04" level="Op" property="EventGroupWaitBitsBlock" value="pxEventGroup=%x[val1], uxBitsToWaitFor=%x[val2]" info=""/>
569+
<event id="0xF300 + 0x05" level="Op" property="EventGroupWaitBitsEnd" value="pxEventGroup=%x[val1], uxBitsToWaitFor=%x[val2], xTimeoutOccurred=%x[val3]" info=""/>
570+
<event id="0xF300 + 0x06" level="Op" property="EventGroupClearBits" value="pxEventGroup=%x[val1], uxBitsToClear=%x[val2]" info=""/>
571+
<event id="0xF300 + 0x07" level="Op" property="EventGroupClearBitsFromIsr" value="pxEventGroup=%x[val1], uxBitsToClear=%x[val2]" info=""/>
572+
<event id="0xF300 + 0x08" level="Op" property="EventGroupSetBits" value="pxEventGroup=%x[val1], uxBitsToSet=%x[val2]" info=""/>
573+
<event id="0xF300 + 0x09" level="Op" property="EventGroupSetBitsFromIsr" value="pxEventGroup=%x[val1], uxBitsToSet=%x[val2]" info=""/>
574+
<event id="0xF300 + 0x0A" level="Op" property="EventGroupDelete" value="pxEventGroup=%x[val1]" info=""/>
575+
576+
<event id="0xF400 + 0x00" level="Op" property="Malloc" value="pvAddress=%x[val1], uiSize=%d[val2]" info=""/>
577+
<event id="0xF400 + 0x01" level="Op" property="Free" value="pvAddress=%x[val1], uiSize=%d[val2]" info=""/>
578+
494579
</events>
495580

496581
</component_viewer>

0 commit comments

Comments
 (0)