123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334 |
- /*********************************************************************
- * SEGGER Microcontroller GmbH *
- * The Embedded Experts *
- **********************************************************************
- * *
- * (c) 1995 - 2021 SEGGER Microcontroller GmbH *
- * *
- * www.segger.com Support: support@segger.com *
- * *
- **********************************************************************
- * *
- * SEGGER SystemView * Real-time application analysis *
- * *
- **********************************************************************
- * *
- * All rights reserved. *
- * *
- * SEGGER strongly recommends to not make any changes *
- * to or modify the source code of this software in order to stay *
- * compatible with the SystemView and RTT protocol, and J-Link. *
- * *
- * Redistribution and use in source and binary forms, with or *
- * without modification, are permitted provided that the following *
- * condition is met: *
- * *
- * o Redistributions of source code must retain the above copyright *
- * notice, this condition and the following disclaimer. *
- * *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
- * DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
- * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
- * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
- * DAMAGE. *
- * *
- **********************************************************************
- * *
- * SystemView version: 3.32 *
- * *
- **********************************************************************
- -------------------------- END-OF-HEADER -----------------------------
- File : SEGGER_SYSVIEW_FreeRTOS.h
- Purpose : Interface between FreeRTOS and SystemView.
- Tested with FreeRTOS V10.4.3
- Revision: $Rev: 7745 $
- Notes:
- (1) Include this file at the end of FreeRTOSConfig.h
- */
- #ifndef SYSVIEW_FREERTOS_H
- #define SYSVIEW_FREERTOS_H
- #include "SEGGER_SYSVIEW.h"
- /*********************************************************************
- *
- * Defines, configurable
- *
- **********************************************************************
- */
- #ifndef portSTACK_GROWTH
- #define portSTACK_GROWTH ( -1 )
- #endif
- #define SYSVIEW_FREERTOS_MAX_NOF_TASKS 8
- /*********************************************************************
- *
- * Defines, fixed
- *
- **********************************************************************
- */
- #define apiID_OFFSET (32u)
- #define apiID_VTASKALLOCATEMPUREGIONS (1u)
- #define apiID_VTASKDELETE (2u)
- #define apiID_VTASKDELAY (3u)
- #define apiID_VTASKDELAYUNTIL (4u)
- #define apiID_UXTASKPRIORITYGET (5u)
- #define apiID_UXTASKPRIORITYGETFROMISR (6u)
- #define apiID_ETASKGETSTATE (7u)
- #define apiID_VTASKPRIORITYSET (8u)
- #define apiID_VTASKSUSPEND (9u)
- #define apiID_VTASKRESUME (10u)
- #define apiID_XTASKRESUMEFROMISR (11u)
- #define apiID_VTASKSTARTSCHEDULER (12u)
- #define apiID_VTASKENDSCHEDULER (13u)
- #define apiID_VTASKSUSPENDALL (14u)
- #define apiID_XTASKRESUMEALL (15u)
- #define apiID_XTASKGETTICKCOUNT (16u)
- #define apiID_XTASKGETTICKCOUNTFROMISR (17u)
- #define apiID_UXTASKGETNUMBEROFTASKS (18u)
- #define apiID_PCTASKGETTASKNAME (19u)
- #define apiID_UXTASKGETSTACKHIGHWATERMARK (20u)
- #define apiID_VTASKSETAPPLICATIONTASKTAG (21u)
- #define apiID_XTASKGETAPPLICATIONTASKTAG (22u)
- #define apiID_VTASKSETTHREADLOCALSTORAGEPOINTER (23u)
- #define apiID_PVTASKGETTHREADLOCALSTORAGEPOINTER (24u)
- #define apiID_XTASKCALLAPPLICATIONTASKHOOK (25u)
- #define apiID_XTASKGETIDLETASKHANDLE (26u)
- #define apiID_UXTASKGETSYSTEMSTATE (27u)
- #define apiID_VTASKLIST (28u)
- #define apiID_VTASKGETRUNTIMESTATS (29u)
- #define apiID_XTASKGENERICNOTIFY (30u)
- #define apiID_XTASKGENERICNOTIFYFROMISR (31u)
- #define apiID_XTASKNOTIFYWAIT (32u)
- #define apiID_VTASKNOTIFYGIVEFROMISR (33u)
- #define apiID_ULTASKNOTIFYTAKE (34u)
- #define apiID_XTASKNOTIFYSTATECLEAR (35u)
- #define apiID_XTASKGETCURRENTTASKHANDLE (36u)
- #define apiID_VTASKSETTIMEOUTSTATE (37u)
- #define apiID_XTASKCHECKFORTIMEOUT (38u)
- #define apiID_VTASKMISSEDYIELD (39u)
- #define apiID_XTASKGETSCHEDULERSTATE (40u)
- #define apiID_VTASKPRIORITYINHERIT (41u)
- #define apiID_XTASKPRIORITYDISINHERIT (42u)
- #define apiID_XTASKGENERICCREATE (43u)
- #define apiID_UXTASKGETTASKNUMBER (44u)
- #define apiID_VTASKSETTASKNUMBER (45u)
- #define apiID_VTASKSTEPTICK (46u)
- #define apiID_ETASKCONFIRMSLEEPMODESTATUS (47u)
- #define apiID_XTIMERCREATE (48u)
- #define apiID_PVTIMERGETTIMERID (49u)
- #define apiID_VTIMERSETTIMERID (50u)
- #define apiID_XTIMERISTIMERACTIVE (51u)
- #define apiID_XTIMERGETTIMERDAEMONTASKHANDLE (52u)
- #define apiID_XTIMERPENDFUNCTIONCALLFROMISR (53u)
- #define apiID_XTIMERPENDFUNCTIONCALL (54u)
- #define apiID_PCTIMERGETTIMERNAME (55u)
- #define apiID_XTIMERCREATETIMERTASK (56u)
- #define apiID_XTIMERGENERICCOMMAND (57u)
- #define apiID_XQUEUEGENERICSEND (58u)
- #define apiID_XQUEUEPEEKFROMISR (59u)
- #define apiID_XQUEUEGENERICRECEIVE (60u)
- #define apiID_UXQUEUEMESSAGESWAITING (61u)
- #define apiID_UXQUEUESPACESAVAILABLE (62u)
- #define apiID_VQUEUEDELETE (63u)
- #define apiID_XQUEUEGENERICSENDFROMISR (64u)
- #define apiID_XQUEUEGIVEFROMISR (65u)
- #define apiID_XQUEUERECEIVEFROMISR (66u)
- #define apiID_XQUEUEISQUEUEEMPTYFROMISR (67u)
- #define apiID_XQUEUEISQUEUEFULLFROMISR (68u)
- #define apiID_UXQUEUEMESSAGESWAITINGFROMISR (69u)
- #define apiID_XQUEUEALTGENERICSEND (70u)
- #define apiID_XQUEUEALTGENERICRECEIVE (71u)
- #define apiID_XQUEUECRSENDFROMISR (72u)
- #define apiID_XQUEUECRRECEIVEFROMISR (73u)
- #define apiID_XQUEUECRSEND (74u)
- #define apiID_XQUEUECRRECEIVE (75u)
- #define apiID_XQUEUECREATEMUTEX (76u)
- #define apiID_XQUEUECREATECOUNTINGSEMAPHORE (77u)
- #define apiID_XQUEUEGETMUTEXHOLDER (78u)
- #define apiID_XQUEUETAKEMUTEXRECURSIVE (79u)
- #define apiID_XQUEUEGIVEMUTEXRECURSIVE (80u)
- #define apiID_VQUEUEADDTOREGISTRY (81u)
- #define apiID_VQUEUEUNREGISTERQUEUE (82u)
- #define apiID_XQUEUEGENERICCREATE (83u)
- #define apiID_XQUEUECREATESET (84u)
- #define apiID_XQUEUEADDTOSET (85u)
- #define apiID_XQUEUEREMOVEFROMSET (86u)
- #define apiID_XQUEUESELECTFROMSET (87u)
- #define apiID_XQUEUESELECTFROMSETFROMISR (88u)
- #define apiID_XQUEUEGENERICRESET (89u)
- #define apiID_VLISTINITIALISE (90u)
- #define apiID_VLISTINITIALISEITEM (91u)
- #define apiID_VLISTINSERT (92u)
- #define apiID_VLISTINSERTEND (93u)
- #define apiID_UXLISTREMOVE (94u)
- #define apiID_XEVENTGROUPCREATE (95u)
- #define apiID_XEVENTGROUPWAITBITS (96u)
- #define apiID_XEVENTGROUPCLEARBITS (97u)
- #define apiID_XEVENTGROUPCLEARBITSFROMISR (98u)
- #define apiID_XEVENTGROUPSETBITS (99u)
- #define apiID_XEVENTGROUPSETBITSFROMISR (100u)
- #define apiID_XEVENTGROUPSYNC (101u)
- #define apiID_XEVENTGROUPGETBITSFROMISR (102u)
- #define apiID_VEVENTGROUPDELETE (103u)
- #define apiID_UXEVENTGROUPGETNUMBER (104u)
- #define apiID_XSTREAMBUFFERCREATE (105u)
- #define apiID_VSTREAMBUFFERDELETE (106u)
- #define apiID_XSTREAMBUFFERRESET (107u)
- #define apiID_XSTREAMBUFFERSEND (108u)
- #define apiID_XSTREAMBUFFERSENDFROMISR (109u)
- #define apiID_XSTREAMBUFFERRECEIVE (110u)
- #define apiID_XSTREAMBUFFERRECEIVEFROMISR (111u)
- #define traceSTART() SEGGER_SYSVIEW_Conf()
- #define traceTASK_NOTIFY_TAKE(uxIndexToWait) SEGGER_SYSVIEW_RecordU32x2(apiID_OFFSET + apiID_ULTASKNOTIFYTAKE, xClearCountOnExit, xTicksToWait)
- #define traceTASK_DELAY() SEGGER_SYSVIEW_RecordU32 (apiID_OFFSET + apiID_VTASKDELAY, xTicksToDelay)
- #define traceTASK_DELAY_UNTIL(xTimeToWake) SEGGER_SYSVIEW_RecordVoid (apiID_OFFSET + apiID_VTASKDELAYUNTIL)
- #define traceTASK_NOTIFY_GIVE_FROM_ISR(uxIndexToNotify) SEGGER_SYSVIEW_RecordU32x2(apiID_OFFSET + apiID_VTASKNOTIFYGIVEFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxTCB), (U32)pxHigherPriorityTaskWoken)
- #define traceTASK_PRIORITY_INHERIT( pxTCB, uxPriority ) SEGGER_SYSVIEW_RecordU32 (apiID_OFFSET + apiID_VTASKPRIORITYINHERIT, (U32)pxMutexHolder)
- #define traceTASK_RESUME( pxTCB ) SEGGER_SYSVIEW_RecordU32 (apiID_OFFSET + apiID_VTASKRESUME, SEGGER_SYSVIEW_ShrinkId((U32)pxTCB))
- #define traceINCREASE_TICK_COUNT( xTicksToJump ) SEGGER_SYSVIEW_RecordU32 (apiID_OFFSET + apiID_VTASKSTEPTICK, xTicksToJump)
- #define traceTASK_SUSPEND( pxTCB ) SEGGER_SYSVIEW_RecordU32 (apiID_OFFSET + apiID_VTASKSUSPEND, SEGGER_SYSVIEW_ShrinkId((U32)pxTCB))
- #define traceTASK_PRIORITY_DISINHERIT( pxTCB, uxBasePriority ) SEGGER_SYSVIEW_RecordU32 (apiID_OFFSET + apiID_XTASKPRIORITYDISINHERIT, (U32)pxMutexHolder)
- #define traceTASK_RESUME_FROM_ISR( pxTCB ) SEGGER_SYSVIEW_RecordU32 (apiID_OFFSET + apiID_XTASKRESUMEFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxTCB))
- #define traceTASK_NOTIFY(uxIndexToNotify) SEGGER_SYSVIEW_RecordU32x4(apiID_OFFSET + apiID_XTASKGENERICNOTIFY, SEGGER_SYSVIEW_ShrinkId((U32)pxTCB), ulValue, eAction, (U32)pulPreviousNotificationValue)
- #define traceTASK_NOTIFY_FROM_ISR(uxIndexToWait) SEGGER_SYSVIEW_RecordU32x5(apiID_OFFSET + apiID_XTASKGENERICNOTIFYFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxTCB), ulValue, eAction, (U32)pulPreviousNotificationValue, (U32)pxHigherPriorityTaskWoken)
- #define traceTASK_NOTIFY_WAIT(uxIndexToWait) SEGGER_SYSVIEW_RecordU32x4(apiID_OFFSET + apiID_XTASKNOTIFYWAIT, ulBitsToClearOnEntry, ulBitsToClearOnExit, (U32)pulNotificationValue, xTicksToWait)
- #define traceQUEUE_CREATE( pxNewQueue ) SEGGER_SYSVIEW_RecordU32x3(apiID_OFFSET + apiID_XQUEUEGENERICCREATE, uxQueueLength, uxItemSize, ucQueueType)
- #define traceQUEUE_DELETE( pxQueue ) SEGGER_SYSVIEW_RecordU32 (apiID_OFFSET + apiID_VQUEUEDELETE, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue))
- #define traceQUEUE_PEEK( pxQueue ) SEGGER_SYSVIEW_RecordU32x4(apiID_OFFSET + apiID_XQUEUEGENERICRECEIVE, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), SEGGER_SYSVIEW_ShrinkId((U32)pvBuffer), xTicksToWait, 1)
- #define traceQUEUE_PEEK_FROM_ISR( pxQueue ) SEGGER_SYSVIEW_RecordU32x2(apiID_OFFSET + apiID_XQUEUEPEEKFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), SEGGER_SYSVIEW_ShrinkId((U32)pvBuffer))
- #define traceQUEUE_PEEK_FROM_ISR_FAILED( pxQueue ) SEGGER_SYSVIEW_RecordU32x2(apiID_OFFSET + apiID_XQUEUEPEEKFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), SEGGER_SYSVIEW_ShrinkId((U32)pvBuffer))
- #define traceQUEUE_RECEIVE( pxQueue ) SEGGER_SYSVIEW_RecordU32x4(apiID_OFFSET + apiID_XQUEUEGENERICRECEIVE, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), SEGGER_SYSVIEW_ShrinkId((U32)0), xTicksToWait, 1)
- #define traceQUEUE_RECEIVE_FAILED( pxQueue ) SEGGER_SYSVIEW_RecordU32x4(apiID_OFFSET + apiID_XQUEUEGENERICRECEIVE, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), SEGGER_SYSVIEW_ShrinkId((U32)0), xTicksToWait, 1)
- #define traceQUEUE_SEMAPHORE_RECEIVE( pxQueue ) SEGGER_SYSVIEW_RecordU32x4(apiID_OFFSET + apiID_XQUEUEGENERICRECEIVE, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), SEGGER_SYSVIEW_ShrinkId((U32)0), xTicksToWait, 0)
- #define traceQUEUE_RECEIVE_FROM_ISR( pxQueue ) SEGGER_SYSVIEW_RecordU32x3(apiID_OFFSET + apiID_XQUEUERECEIVEFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), SEGGER_SYSVIEW_ShrinkId((U32)pvBuffer), (U32)pxHigherPriorityTaskWoken)
- #define traceQUEUE_RECEIVE_FROM_ISR_FAILED( pxQueue ) SEGGER_SYSVIEW_RecordU32x3(apiID_OFFSET + apiID_XQUEUERECEIVEFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), SEGGER_SYSVIEW_ShrinkId((U32)pvBuffer), (U32)pxHigherPriorityTaskWoken)
- #define traceQUEUE_REGISTRY_ADD( xQueue, pcQueueName ) SEGGER_SYSVIEW_RecordU32x2(apiID_OFFSET + apiID_VQUEUEADDTOREGISTRY, SEGGER_SYSVIEW_ShrinkId((U32)xQueue), (U32)pcQueueName)
- #if ( configUSE_QUEUE_SETS != 1 )
- #define traceQUEUE_SEND( pxQueue ) SEGGER_SYSVIEW_RecordU32x4(apiID_OFFSET + apiID_XQUEUEGENERICSEND, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), (U32)pvItemToQueue, xTicksToWait, xCopyPosition)
- #else
- #define traceQUEUE_SEND( pxQueue ) SEGGER_SYSVIEW_RecordU32x4(apiID_OFFSET + apiID_XQUEUEGENERICSEND, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), 0u, 0u, xCopyPosition)
- #endif
- #define traceQUEUE_SEND_FAILED( pxQueue ) SEGGER_SYSVIEW_RecordU32x4(apiID_OFFSET + apiID_XQUEUEGENERICSEND, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), (U32)pvItemToQueue, xTicksToWait, xCopyPosition)
- #define traceQUEUE_SEND_FROM_ISR( pxQueue ) SEGGER_SYSVIEW_RecordU32x2(apiID_OFFSET + apiID_XQUEUEGENERICSENDFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), (U32)pxHigherPriorityTaskWoken)
- #define traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue ) SEGGER_SYSVIEW_RecordU32x2(apiID_OFFSET + apiID_XQUEUEGENERICSENDFROMISR, SEGGER_SYSVIEW_ShrinkId((U32)pxQueue), (U32)pxHigherPriorityTaskWoken)
- #define traceSTREAM_BUFFER_CREATE( pxStreamBuffer, xIsMessageBuffer ) SEGGER_SYSVIEW_RecordU32x2(apiID_OFFSET + apiID_XSTREAMBUFFERCREATE, (U32)xIsMessageBuffer, (U32)pxStreamBuffer)
- #define traceSTREAM_BUFFER_CREATE_FAILED( xIsMessageBuffer ) SEGGER_SYSVIEW_RecordU32x2(apiID_OFFSET + apiID_XSTREAMBUFFERCREATE, (U32)xIsMessageBuffer, 0u)
- #define traceSTREAM_BUFFER_DELETE( xStreamBuffer ) SEGGER_SYSVIEW_RecordU32 (apiID_OFFSET + apiID_VSTREAMBUFFERDELETE, (U32)xStreamBuffer)
- #define traceSTREAM_BUFFER_RESET( xStreamBuffer ) SEGGER_SYSVIEW_RecordU32 (apiID_OFFSET + apiID_XSTREAMBUFFERRESET, (U32)xStreamBuffer)
- #define traceSTREAM_BUFFER_SEND( xStreamBuffer, xBytesSent ) SEGGER_SYSVIEW_RecordU32x2(apiID_OFFSET + apiID_XSTREAMBUFFERSEND, (U32)xStreamBuffer, (U32)xBytesSent)
- #define traceSTREAM_BUFFER_SEND_FAILED( xStreamBuffer ) SEGGER_SYSVIEW_RecordU32x2(apiID_OFFSET + apiID_XSTREAMBUFFERSEND, (U32)xStreamBuffer, 0u)
- #define traceSTREAM_BUFFER_SEND_FROM_ISR( xStreamBuffer, xBytesSent ) SEGGER_SYSVIEW_RecordU32x2(apiID_OFFSET + apiID_XSTREAMBUFFERSENDFROMISR, (U32)xStreamBuffer, (U32)xBytesSent)
- #define traceSTREAM_BUFFER_RECEIVE( xStreamBuffer, xReceivedLength ) SEGGER_SYSVIEW_RecordU32x2(apiID_OFFSET + apiID_XSTREAMBUFFERRECEIVE, (U32)xStreamBuffer, (U32)xReceivedLength)
- #define traceSTREAM_BUFFER_RECEIVE_FAILED( xStreamBuffer ) SEGGER_SYSVIEW_RecordU32x2(apiID_OFFSET + apiID_XSTREAMBUFFERRECEIVE, (U32)xStreamBuffer, 0u)
- #define traceSTREAM_BUFFER_RECEIVE_FROM_ISR( xStreamBuffer, xReceivedLength ) SEGGER_SYSVIEW_RecordU32x2(apiID_OFFSET + apiID_XSTREAMBUFFERRECEIVEFROMISR, (U32)xStreamBuffer, (U32)xReceivedLength)
- #define traceTASK_DELETE( pxTCB ) { \
- SEGGER_SYSVIEW_RecordU32(apiID_OFFSET + apiID_VTASKDELETE, SEGGER_SYSVIEW_ShrinkId((U32)pxTCB)); \
- SYSVIEW_DeleteTask((U32)pxTCB); \
- }
- #if( portSTACK_GROWTH < 0 )
- #define traceTASK_CREATE(pxNewTCB) if (pxNewTCB != NULL) { \
- SEGGER_SYSVIEW_OnTaskCreate((U32)pxNewTCB); \
- SYSVIEW_AddTask((U32)pxNewTCB, \
- &(pxNewTCB->pcTaskName[0]), \
- pxNewTCB->uxPriority, \
- (U32)pxNewTCB->pxStack, \
- ((U32)pxNewTCB->pxTopOfStack - (U32)pxNewTCB->pxStack) \
- ); \
- }
- #else
- #define traceTASK_CREATE(pxNewTCB) if (pxNewTCB != NULL) { \
- SEGGER_SYSVIEW_OnTaskCreate((U32)pxNewTCB); \
- SYSVIEW_AddTask((U32)pxNewTCB, \
- &(pxNewTCB->pcTaskName[0]), \
- pxNewTCB->uxPriority, \
- (U32)pxNewTCB->pxStack, \
- (U32)(pxNewTCB->pxStack-pxNewTCB->pxTopOfStack) \
- ); \
- }
- #endif
- #define traceTASK_PRIORITY_SET(pxTask, uxNewPriority) { \
- SEGGER_SYSVIEW_RecordU32x2(apiID_OFFSET+apiID_VTASKPRIORITYSET, \
- SEGGER_SYSVIEW_ShrinkId((U32)pxTCB), \
- uxNewPriority \
- ); \
- SYSVIEW_UpdateTask((U32)pxTask, \
- &(pxTask->pcTaskName[0]), \
- uxNewPriority, \
- (U32)pxTask->pxStack, \
- 0 \
- ); \
- }
- //
- // Define INCLUDE_xTaskGetIdleTaskHandle as 1 in FreeRTOSConfig.h to allow identification of Idle state.
- //
- #if ( INCLUDE_xTaskGetIdleTaskHandle == 1 )
- #define traceTASK_SWITCHED_IN() if(prvGetTCBFromHandle(NULL) == xIdleTaskHandle) { \
- SEGGER_SYSVIEW_OnIdle(); \
- } else { \
- SEGGER_SYSVIEW_OnTaskStartExec((U32)pxCurrentTCB); \
- }
- #else
- #define traceTASK_SWITCHED_IN() { \
- if (memcmp(pxCurrentTCB->pcTaskName, "IDLE", 5) != 0) { \
- SEGGER_SYSVIEW_OnTaskStartExec((U32)pxCurrentTCB); \
- } else { \
- SEGGER_SYSVIEW_OnIdle(); \
- } \
- }
- #endif
- #define traceMOVED_TASK_TO_READY_STATE(pxTCB) SEGGER_SYSVIEW_OnTaskStartReady((U32)pxTCB)
- #define traceREADDED_TASK_TO_READY_STATE(pxTCB)
- #define traceMOVED_TASK_TO_DELAYED_LIST() SEGGER_SYSVIEW_OnTaskStopReady((U32)pxCurrentTCB, (1u << 2))
- #define traceMOVED_TASK_TO_OVERFLOW_DELAYED_LIST() SEGGER_SYSVIEW_OnTaskStopReady((U32)pxCurrentTCB, (1u << 2))
- #define traceMOVED_TASK_TO_SUSPENDED_LIST(pxTCB) SEGGER_SYSVIEW_OnTaskStopReady((U32)pxTCB, ((3u << 3) | 3))
- #define traceISR_EXIT_TO_SCHEDULER() SEGGER_SYSVIEW_RecordExitISRToScheduler()
- #define traceISR_EXIT() SEGGER_SYSVIEW_RecordExitISR()
- #define traceISR_ENTER() SEGGER_SYSVIEW_RecordEnterISR()
- /*********************************************************************
- *
- * API functions
- *
- **********************************************************************
- */
- #ifdef __cplusplus
- extern "C" {
- #endif
- void SYSVIEW_AddTask (U32 xHandle, const char* pcTaskName, unsigned uxCurrentPriority, U32 pxStack, unsigned uStackHighWaterMark);
- void SYSVIEW_UpdateTask (U32 xHandle, const char* pcTaskName, unsigned uxCurrentPriority, U32 pxStack, unsigned uStackHighWaterMark);
- void SYSVIEW_DeleteTask (U32 xHandle);
- void SYSVIEW_SendTaskInfo (U32 TaskID, const char* sName, unsigned Prio, U32 StackBase, unsigned StackSize);
- #ifdef __cplusplus
- }
- #endif
- #endif
- /*************************** End of file ****************************/
|