54 #ifndef SEGGER_SYSVIEW_H
55 #define SEGGER_SYSVIEW_H
57 #if (dg_configSYSTEMVIEW == 1)
67 #include "SEGGER_SYSVIEW_ConfDefaults.h"
81 #define SEGGER_SYSVIEW_MAJOR 3
82 #define SEGGER_SYSVIEW_MINOR 10
83 #define SEGGER_SYSVIEW_REV 0
84 #define SEGGER_SYSVIEW_VERSION ((SEGGER_SYSVIEW_MAJOR * 10000) + (SEGGER_SYSVIEW_MINOR * 100) + SEGGER_SYSVIEW_REV)
86 #define SEGGER_SYSVIEW_INFO_SIZE 9 // Minimum size, which has to be reserved for a packet. 1-2 byte of message type, 0-2 byte of payload length, 1-5 bytes of timestamp.
87 #define SEGGER_SYSVIEW_QUANTA_U32 5 // Maximum number of bytes to encode a U32, should be reserved for each 32-bit value in a packet.
89 #define SEGGER_SYSVIEW_LOG (0u)
90 #define SEGGER_SYSVIEW_WARNING (1u)
91 #define SEGGER_SYSVIEW_ERROR (2u)
92 #define SEGGER_SYSVIEW_FLAG_APPEND (1u << 6)
94 #define SEGGER_SYSVIEW_PREPARE_PACKET(p) (p) + 4
98 #define SYSVIEW_EVTID_NOP 0 // Dummy packet.
99 #define SYSVIEW_EVTID_OVERFLOW 1
100 #define SYSVIEW_EVTID_ISR_ENTER 2
101 #define SYSVIEW_EVTID_ISR_EXIT 3
102 #define SYSVIEW_EVTID_TASK_START_EXEC 4
103 #define SYSVIEW_EVTID_TASK_STOP_EXEC 5
104 #define SYSVIEW_EVTID_TASK_START_READY 6
105 #define SYSVIEW_EVTID_TASK_STOP_READY 7
106 #define SYSVIEW_EVTID_TASK_CREATE 8
107 #define SYSVIEW_EVTID_TASK_INFO 9
108 #define SYSVIEW_EVTID_TRACE_START 10
109 #define SYSVIEW_EVTID_TRACE_STOP 11
110 #define SYSVIEW_EVTID_SYSTIME_CYCLES 12
111 #define SYSVIEW_EVTID_SYSTIME_US 13
112 #define SYSVIEW_EVTID_SYSDESC 14
113 #define SYSVIEW_EVTID_MARK_START 15
114 #define SYSVIEW_EVTID_MARK_STOP 16
115 #define SYSVIEW_EVTID_IDLE 17
116 #define SYSVIEW_EVTID_ISR_TO_SCHEDULER 18
117 #define SYSVIEW_EVTID_TIMER_ENTER 19
118 #define SYSVIEW_EVTID_TIMER_EXIT 20
119 #define SYSVIEW_EVTID_STACK_INFO 21
120 #define SYSVIEW_EVTID_MODULEDESC 22
122 #define SYSVIEW_EVTID_INIT 24
123 #define SYSVIEW_EVTID_NAME_RESOURCE 25
124 #define SYSVIEW_EVTID_PRINT_FORMATTED 26
125 #define SYSVIEW_EVTID_NUMMODULES 27
126 #define SYSVIEW_EVTID_END_CALL 28
127 #define SYSVIEW_EVTID_TASK_TERMINATE 29
129 #define SYSVIEW_EVTID_EX 31
133 #define SYSVIEW_EVTID_EX_MARK 0
134 #define SYSVIEW_EVTID_EX_NAME_MARKER 1
138 #define SYSVIEW_EVTMASK_NOP (1 << SYSVIEW_EVTID_NOP)
139 #define SYSVIEW_EVTMASK_OVERFLOW (1 << SYSVIEW_EVTID_OVERFLOW)
140 #define SYSVIEW_EVTMASK_ISR_ENTER (1 << SYSVIEW_EVTID_ISR_ENTER)
141 #define SYSVIEW_EVTMASK_ISR_EXIT (1 << SYSVIEW_EVTID_ISR_EXIT)
142 #define SYSVIEW_EVTMASK_TASK_START_EXEC (1 << SYSVIEW_EVTID_TASK_START_EXEC)
143 #define SYSVIEW_EVTMASK_TASK_STOP_EXEC (1 << SYSVIEW_EVTID_TASK_STOP_EXEC)
144 #define SYSVIEW_EVTMASK_TASK_START_READY (1 << SYSVIEW_EVTID_TASK_START_READY)
145 #define SYSVIEW_EVTMASK_TASK_STOP_READY (1 << SYSVIEW_EVTID_TASK_STOP_READY)
146 #define SYSVIEW_EVTMASK_TASK_CREATE (1 << SYSVIEW_EVTID_TASK_CREATE)
147 #define SYSVIEW_EVTMASK_TASK_INFO (1 << SYSVIEW_EVTID_TASK_INFO)
148 #define SYSVIEW_EVTMASK_TRACE_START (1 << SYSVIEW_EVTID_TRACE_START)
149 #define SYSVIEW_EVTMASK_TRACE_STOP (1 << SYSVIEW_EVTID_TRACE_STOP)
150 #define SYSVIEW_EVTMASK_SYSTIME_CYCLES (1 << SYSVIEW_EVTID_SYSTIME_CYCLES)
151 #define SYSVIEW_EVTMASK_SYSTIME_US (1 << SYSVIEW_EVTID_SYSTIME_US)
152 #define SYSVIEW_EVTMASK_SYSDESC (1 << SYSVIEW_EVTID_SYSDESC)
153 #define SYSVIEW_EVTMASK_USER_START (1 << SYSVIEW_EVTID_USER_START)
154 #define SYSVIEW_EVTMASK_USER_STOP (1 << SYSVIEW_EVTID_USER_STOP)
155 #define SYSVIEW_EVTMASK_IDLE (1 << SYSVIEW_EVTID_IDLE)
156 #define SYSVIEW_EVTMASK_ISR_TO_SCHEDULER (1 << SYSVIEW_EVTID_ISR_TO_SCHEDULER)
157 #define SYSVIEW_EVTMASK_TIMER_ENTER (1 << SYSVIEW_EVTID_TIMER_ENTER)
158 #define SYSVIEW_EVTMASK_TIMER_EXIT (1 << SYSVIEW_EVTID_TIMER_EXIT)
159 #define SYSVIEW_EVTMASK_STACK_INFO (1 << SYSVIEW_EVTID_STACK_INFO)
160 #define SYSVIEW_EVTMASK_MODULEDESC (1 << SYSVIEW_EVTID_MODULEDESC)
162 #define SYSVIEW_EVTMASK_INIT (1 << SYSVIEW_EVTID_INIT)
163 #define SYSVIEW_EVTMASK_NAME_RESOURCE (1 << SYSVIEW_EVTID_NAME_RESOURCE)
164 #define SYSVIEW_EVTMASK_PRINT_FORMATTED (1 << SYSVIEW_EVTID_PRINT_FORMATTED)
165 #define SYSVIEW_EVTMASK_NUMMODULES (1 << SYSVIEW_EVTID_NUMMODULES)
166 #define SYSVIEW_EVTMASK_END_CALL (1 << SYSVIEW_EVTID_END_CALL)
167 #define SYSVIEW_EVTMASK_TASK_TERMINATE (1 << SYSVIEW_EVTID_TASK_TERMINATE)
169 #define SYSVIEW_EVTMASK_EX (1 << SYSVIEW_EVTID_EX)
171 #define SYSVIEW_EVTMASK_ALL_INTERRUPTS ( SYSVIEW_EVTMASK_ISR_ENTER \
172 | SYSVIEW_EVTMASK_ISR_EXIT \
173 | SYSVIEW_EVTMASK_ISR_TO_SCHEDULER)
174 #define SYSVIEW_EVTMASK_ALL_TASKS ( SYSVIEW_EVTMASK_TASK_START_EXEC \
175 | SYSVIEW_EVTMASK_TASK_STOP_EXEC \
176 | SYSVIEW_EVTMASK_TASK_START_READY \
177 | SYSVIEW_EVTMASK_TASK_STOP_READY \
178 | SYSVIEW_EVTMASK_TASK_CREATE \
179 | SYSVIEW_EVTMASK_TASK_INFO \
180 | SYSVIEW_EVTMASK_STACK_INFO \
181 | SYSVIEW_EVTMASK_TASK_TERMINATE)
196 } SEGGER_SYSVIEW_TASKINFO;
198 typedef struct SEGGER_SYSVIEW_MODULE_STRUCT SEGGER_SYSVIEW_MODULE;
200 struct SEGGER_SYSVIEW_MODULE_STRUCT {
204 void (*pfSendModuleDesc)(void);
205 SEGGER_SYSVIEW_MODULE* pNext;
208 typedef void (SEGGER_SYSVIEW_SEND_SYS_DESC_FUNC)(void);
221 #ifndef SEGGER_SYSVIEW_C // Defined in SEGGER_SYSVIEW.c which includes this header beside other C-files
222 #define EXTERN extern
227 EXTERN
unsigned int SEGGER_SYSVIEW_TickCnt;
228 EXTERN
unsigned int SEGGER_SYSVIEW_InterruptId;
240 U64 (*pfGetTime) (void);
241 void (*pfSendTaskList) (void);
242 } SEGGER_SYSVIEW_OS_API;
248 void SEGGER_SYSVIEW_Init (U32 SysFreq, U32 CPUFreq,
const SEGGER_SYSVIEW_OS_API *pOSAPI, SEGGER_SYSVIEW_SEND_SYS_DESC_FUNC pfSendSysDesc);
249 void SEGGER_SYSVIEW_SetRAMBase (U32 RAMBaseAddress);
250 void SEGGER_SYSVIEW_Start (
void);
251 void SEGGER_SYSVIEW_Stop (
void);
252 void SEGGER_SYSVIEW_GetSysDesc (
void);
253 void SEGGER_SYSVIEW_SendTaskList (
void);
254 void SEGGER_SYSVIEW_SendTaskInfo (
const SEGGER_SYSVIEW_TASKINFO* pInfo);
255 void SEGGER_SYSVIEW_SendSysDesc (
const char* sSysDesc);
256 int SEGGER_SYSVIEW_IsStarted (
void);
257 int SEGGER_SYSVIEW_GetChannelID (
void);
263 void SEGGER_SYSVIEW_RecordVoid (
unsigned int EventId);
264 void SEGGER_SYSVIEW_RecordU32 (
unsigned int EventId, U32 Para0);
265 void SEGGER_SYSVIEW_RecordU32x2 (
unsigned int EventId, U32 Para0, U32 Para1);
266 void SEGGER_SYSVIEW_RecordU32x3 (
unsigned int EventId, U32 Para0, U32 Para1, U32 Para2);
267 void SEGGER_SYSVIEW_RecordU32x4 (
unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3);
268 void SEGGER_SYSVIEW_RecordU32x5 (
unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4);
269 void SEGGER_SYSVIEW_RecordU32x6 (
unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4, U32 Para5);
270 void SEGGER_SYSVIEW_RecordU32x7 (
unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4, U32 Para5, U32 Para6);
271 void SEGGER_SYSVIEW_RecordU32x8 (
unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4, U32 Para5, U32 Para6, U32 Para7);
272 void SEGGER_SYSVIEW_RecordU32x9 (
unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4, U32 Para5, U32 Para6, U32 Para7, U32 Para8);
273 void SEGGER_SYSVIEW_RecordU32x10 (
unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4, U32 Para5, U32 Para6, U32 Para7, U32 Para8, U32 Para9);
274 void SEGGER_SYSVIEW_RecordString (
unsigned int EventId,
const char* pString);
275 void SEGGER_SYSVIEW_RecordSystime (
void);
276 void SEGGER_SYSVIEW_RecordEnterISR (
void);
277 void SEGGER_SYSVIEW_RecordExitISR (
void);
278 void SEGGER_SYSVIEW_RecordExitISRToScheduler (
void);
279 void SEGGER_SYSVIEW_RecordEnterTimer (U32 TimerId);
280 void SEGGER_SYSVIEW_RecordExitTimer (
void);
281 void SEGGER_SYSVIEW_RecordEndCall (
unsigned int EventID);
282 void SEGGER_SYSVIEW_RecordEndCallU32 (
unsigned int EventID, U32 Para0);
284 void SEGGER_SYSVIEW_OnIdle (
void);
285 void SEGGER_SYSVIEW_OnTaskCreate (U32 TaskId);
286 void SEGGER_SYSVIEW_OnTaskTerminate (U32 TaskId);
287 void SEGGER_SYSVIEW_OnTaskStartExec (U32 TaskId);
288 void SEGGER_SYSVIEW_OnTaskStopExec (
void);
289 void SEGGER_SYSVIEW_OnTaskStartReady (U32 TaskId);
290 void SEGGER_SYSVIEW_OnTaskStopReady (U32 TaskId,
unsigned int Cause);
291 void SEGGER_SYSVIEW_MarkStart (
unsigned int MarkerId);
292 void SEGGER_SYSVIEW_MarkStop (
unsigned int MarkerId);
293 void SEGGER_SYSVIEW_Mark (
unsigned int MarkerId);
294 void SEGGER_SYSVIEW_NameMarker (
unsigned int MarkerId,
const char* sName);
296 void SEGGER_SYSVIEW_NameResource (U32 ResourceId,
const char* sName);
298 int SEGGER_SYSVIEW_SendPacket (U8* pPacket, U8* pPayloadEnd,
unsigned int EventId);
304 U8* SEGGER_SYSVIEW_EncodeU32 (U8* pPayload, U32 Value);
305 U8* SEGGER_SYSVIEW_EncodeData (U8* pPayload,
const char* pSrc,
unsigned int Len);
306 U8* SEGGER_SYSVIEW_EncodeString (U8* pPayload,
const char* s,
unsigned int MaxLen);
307 U8* SEGGER_SYSVIEW_EncodeId (U8* pPayload, U32 Id);
308 U32 SEGGER_SYSVIEW_ShrinkId (U32 Id);
315 void SEGGER_SYSVIEW_RegisterModule (SEGGER_SYSVIEW_MODULE* pModule);
316 void SEGGER_SYSVIEW_RecordModuleDescription (
const SEGGER_SYSVIEW_MODULE* pModule,
const char* sDescription);
317 void SEGGER_SYSVIEW_SendModule (U8 ModuleId);
318 void SEGGER_SYSVIEW_SendModuleDescription (
void);
319 void SEGGER_SYSVIEW_SendNumModules (
void);
325 #ifndef SEGGER_SYSVIEW_EXCLUDE_PRINTF // Define in project to avoid warnings about variable parameter list
326 void SEGGER_SYSVIEW_PrintfHostEx (
const char* s, U32 Options, ...);
327 void SEGGER_SYSVIEW_PrintfTargetEx (
const char* s, U32 Options, ...);
328 void SEGGER_SYSVIEW_PrintfHost (
const char* s, ...);
329 void SEGGER_SYSVIEW_PrintfTarget (
const char* s, ...);
330 void SEGGER_SYSVIEW_WarnfHost (
const char* s, ...);
331 void SEGGER_SYSVIEW_WarnfTarget (
const char* s, ...);
332 void SEGGER_SYSVIEW_ErrorfHost (
const char* s, ...);
333 void SEGGER_SYSVIEW_ErrorfTarget (
const char* s, ...);
336 void SEGGER_SYSVIEW_Print (
const char* s);
337 void SEGGER_SYSVIEW_Warn (
const char* s);
338 void SEGGER_SYSVIEW_Error (
const char* s);
344 void SEGGER_SYSVIEW_EnableEvents (U32 EnableMask);
345 void SEGGER_SYSVIEW_DisableEvents (U32 DisableMask);
351 void SEGGER_SYSVIEW_Conf (
void);
352 U32 SEGGER_SYSVIEW_X_GetTimestamp (
void);
353 U32 SEGGER_SYSVIEW_X_GetInterruptId (
void);
355 void SEGGER_SYSVIEW_X_StartComm (
void);
356 void SEGGER_SYSVIEW_X_OnEventRecorded (
unsigned NumBytes);
366 #define SEGGER_SYSVIEW_OnUserStart SEGGER_SYSVIEW_MarkStart
367 #define SEGGER_SYSVIEW_OnUserStop SEGGER_SYSVIEW_MarkStop