68 #ifndef SEGGER_SYSVIEW_H 69 #define SEGGER_SYSVIEW_H 92 #define SEGGER_SYSVIEW_VERSION 21000 94 #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. 95 #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. 97 #define SEGGER_SYSVIEW_LOG (0u) 98 #define SEGGER_SYSVIEW_WARNING (1u) 99 #define SEGGER_SYSVIEW_ERROR (2u) 100 #define SEGGER_SYSVIEW_FLAG_APPEND (1u << 6) 102 #define SEGGER_SYSVIEW_PREPARE_PACKET(p) (p) + 4 106 #define SYSVIEW_EVTID_NOP 0 // Dummy packet. 107 #define SYSVIEW_EVTID_OVERFLOW 1 108 #define SYSVIEW_EVTID_ISR_ENTER 2 109 #define SYSVIEW_EVTID_ISR_EXIT 3 110 #define SYSVIEW_EVTID_TASK_START_EXEC 4 111 #define SYSVIEW_EVTID_TASK_STOP_EXEC 5 112 #define SYSVIEW_EVTID_TASK_START_READY 6 113 #define SYSVIEW_EVTID_TASK_STOP_READY 7 114 #define SYSVIEW_EVTID_TASK_CREATE 8 115 #define SYSVIEW_EVTID_TASK_INFO 9 116 #define SYSVIEW_EVTID_TRACE_START 10 117 #define SYSVIEW_EVTID_TRACE_STOP 11 118 #define SYSVIEW_EVTID_SYSTIME_CYCLES 12 119 #define SYSVIEW_EVTID_SYSTIME_US 13 120 #define SYSVIEW_EVTID_SYSDESC 14 121 #define SYSVIEW_EVTID_USER_START 15 122 #define SYSVIEW_EVTID_USER_STOP 16 123 #define SYSVIEW_EVTID_IDLE 17 124 #define SYSVIEW_EVTID_ISR_TO_SCHEDULER 18 125 #define SYSVIEW_EVTID_TIMER_ENTER 19 126 #define SYSVIEW_EVTID_TIMER_EXIT 20 127 #define SYSVIEW_EVTID_STACK_INFO 21 128 #define SYSVIEW_EVTID_MODULEDESC 22 130 #define SYSVIEW_EVTID_INIT 24 131 #define SYSVIEW_EVTID_NAME_RESOURCE 25 132 #define SYSVIEW_EVTID_PRINT_FORMATTED 26 133 #define SYSVIEW_EVTID_NUMMODULES 27 134 #define SYSVIEW_EVTID_END_CALL 28 135 #define SYSVIEW_EVTID_TASK_TERMINATE 29 137 #define SYSVIEW_EVTID_EX 31 141 #define SYSVIEW_EVTMASK_NOP (1 << SYSVIEW_EVTID_NOP) 142 #define SYSVIEW_EVTMASK_OVERFLOW (1 << SYSVIEW_EVTID_OVERFLOW) 143 #define SYSVIEW_EVTMASK_ISR_ENTER (1 << SYSVIEW_EVTID_ISR_ENTER) 144 #define SYSVIEW_EVTMASK_ISR_EXIT (1 << SYSVIEW_EVTID_ISR_EXIT) 145 #define SYSVIEW_EVTMASK_TASK_START_EXEC (1 << SYSVIEW_EVTID_TASK_START_EXEC) 146 #define SYSVIEW_EVTMASK_TASK_STOP_EXEC (1 << SYSVIEW_EVTID_TASK_STOP_EXEC) 147 #define SYSVIEW_EVTMASK_TASK_START_READY (1 << SYSVIEW_EVTID_TASK_START_READY) 148 #define SYSVIEW_EVTMASK_TASK_STOP_READY (1 << SYSVIEW_EVTID_TASK_STOP_READY) 149 #define SYSVIEW_EVTMASK_TASK_CREATE (1 << SYSVIEW_EVTID_TASK_CREATE) 150 #define SYSVIEW_EVTMASK_TASK_INFO (1 << SYSVIEW_EVTID_TASK_INFO) 151 #define SYSVIEW_EVTMASK_TRACE_START (1 << SYSVIEW_EVTID_TRACE_START) 152 #define SYSVIEW_EVTMASK_TRACE_STOP (1 << SYSVIEW_EVTID_TRACE_STOP) 153 #define SYSVIEW_EVTMASK_SYSTIME_CYCLES (1 << SYSVIEW_EVTID_SYSTIME_CYCLES) 154 #define SYSVIEW_EVTMASK_SYSTIME_US (1 << SYSVIEW_EVTID_SYSTIME_US) 155 #define SYSVIEW_EVTMASK_SYSDESC (1 << SYSVIEW_EVTID_SYSDESC) 156 #define SYSVIEW_EVTMASK_USER_START (1 << SYSVIEW_EVTID_USER_START) 157 #define SYSVIEW_EVTMASK_USER_STOP (1 << SYSVIEW_EVTID_USER_STOP) 158 #define SYSVIEW_EVTMASK_IDLE (1 << SYSVIEW_EVTID_IDLE) 159 #define SYSVIEW_EVTMASK_ISR_TO_SCHEDULER (1 << SYSVIEW_EVTID_ISR_TO_SCHEDULER) 160 #define SYSVIEW_EVTMASK_TIMER_ENTER (1 << SYSVIEW_EVTID_TIMER_ENTER) 161 #define SYSVIEW_EVTMASK_TIMER_EXIT (1 << SYSVIEW_EVTID_TIMER_EXIT) 162 #define SYSVIEW_EVTMASK_STACK_INFO (1 << SYSVIEW_EVTID_STACK_INFO) 163 #define SYSVIEW_EVTMASK_MODULEDESC (1 << SYSVIEW_EVTID_MODULEDESC) 165 #define SYSVIEW_EVTMASK_INIT (1 << SYSVIEW_EVTID_INIT) 166 #define SYSVIEW_EVTMASK_NAME_RESOURCE (1 << SYSVIEW_EVTID_NAME_RESOURCE) 167 #define SYSVIEW_EVTMASK_PRINT_FORMATTED (1 << SYSVIEW_EVTID_PRINT_FORMATTED) 168 #define SYSVIEW_EVTMASK_NUMMODULES (1 << SYSVIEW_EVTID_NUMMODULES) 169 #define SYSVIEW_EVTMASK_END_CALL (1 << SYSVIEW_EVTID_END_CALL) 170 #define SYSVIEW_EVTMASK_TASK_TERMINATE (1 << SYSVIEW_EVTID_TASK_TERMINATE) 172 #define SYSVIEW_EVTMASK_EX (1 << SYSVIEW_EVTID_EX) 174 #define SYSVIEW_EVTMASK_ALL_INTERRUPTS ( SYSVIEW_EVTMASK_ISR_ENTER \ 175 | SYSVIEW_EVTMASK_ISR_EXIT \ 176 | SYSVIEW_EVTMASK_ISR_TO_SCHEDULER) 177 #define SYSVIEW_EVTMASK_ALL_TASKS ( SYSVIEW_EVTMASK_TASK_START_EXEC \ 178 | SYSVIEW_EVTMASK_TASK_STOP_EXEC \ 179 | SYSVIEW_EVTMASK_TASK_START_READY \ 180 | SYSVIEW_EVTMASK_TASK_STOP_READY \ 181 | SYSVIEW_EVTMASK_TASK_CREATE \ 182 | SYSVIEW_EVTMASK_TASK_INFO \ 183 | SYSVIEW_EVTMASK_STACK_INFO \ 184 | SYSVIEW_EVTMASK_TASK_TERMINATE) 208 void (*pfSendModuleDesc)(void);
209 SEGGER_SYSVIEW_MODULE* pNext;
212 typedef void (SEGGER_SYSVIEW_SEND_SYS_DESC_FUNC)(void);
222 U64 (*pfGetTime) (void);
223 void (*pfSendTaskList) (void);
230 void SEGGER_SYSVIEW_Init (U32 SysFreq, U32 CPUFreq,
const SEGGER_SYSVIEW_OS_API *pOSAPI, SEGGER_SYSVIEW_SEND_SYS_DESC_FUNC pfSendSysDesc);
231 void SEGGER_SYSVIEW_SetRAMBase (U32 RAMBaseAddress);
232 void SEGGER_SYSVIEW_Start (
void);
233 void SEGGER_SYSVIEW_Stop (
void);
234 void SEGGER_SYSVIEW_GetSysDesc (
void);
235 void SEGGER_SYSVIEW_SendTaskList (
void);
237 void SEGGER_SYSVIEW_SendSysDesc (
const char* sSysDesc);
238 int SEGGER_SYSVIEW_isConnected (
void);
239 void SEGGER_SYSVIEW_setMicroJVMTask (U32);
240 void SEGGER_SYSVIEW_setMicroJVMTaskPriority (U32);
241 void SEGGER_SYSVIEW_setCurrentMicroEJTask (U32);
247 void SEGGER_SYSVIEW_RecordVoid (
unsigned int EventId);
248 void SEGGER_SYSVIEW_RecordU32 (
unsigned int EventId, U32 Para0);
249 void SEGGER_SYSVIEW_RecordU32x2 (
unsigned int EventId, U32 Para0, U32 Para1);
250 void SEGGER_SYSVIEW_RecordU32x3 (
unsigned int EventId, U32 Para0, U32 Para1, U32 Para2);
251 void SEGGER_SYSVIEW_RecordU32x4 (
unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3);
252 void SEGGER_SYSVIEW_RecordU32x5 (
unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4);
253 void SEGGER_SYSVIEW_RecordU32x6 (
unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4, U32 Para5);
254 void SEGGER_SYSVIEW_RecordU32x7 (
unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4, U32 Para5, U32 Para6);
255 void SEGGER_SYSVIEW_RecordU32x8 (
unsigned int EventId, U32 Para0, U32 Para1, U32 Para2, U32 Para3, U32 Para4, U32 Para5, U32 Para6, U32 Para7);
256 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);
257 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);
258 void SEGGER_SYSVIEW_RecordString (
unsigned int EventId,
const char* pString);
259 void SEGGER_SYSVIEW_RecordSystime (
void);
260 void SEGGER_SYSVIEW_RecordEnterISR (
void);
261 void SEGGER_SYSVIEW_RecordExitISR (
void);
262 void SEGGER_SYSVIEW_RecordExitISRToScheduler (
void);
263 void SEGGER_SYSVIEW_RecordEnterTimer (U32 TimerId);
264 void SEGGER_SYSVIEW_RecordExitTimer (
void);
265 void SEGGER_SYSVIEW_RecordEndCall (
unsigned int EventID);
266 void SEGGER_SYSVIEW_RecordEndCallU32 (
unsigned int EventID, U32 Para0);
268 void SEGGER_SYSVIEW_OnIdle (
void);
269 void SEGGER_SYSVIEW_OnTaskCreate (U32 TaskId);
270 void SEGGER_SYSVIEW_OnTaskTerminate (U32 TaskId);
271 void SEGGER_SYSVIEW_OnTaskStartExec (U32 TaskId);
272 void SEGGER_SYSVIEW_OnTaskStopExec (
void);
273 void SEGGER_SYSVIEW_OnTaskStartReady (U32 TaskId);
274 void SEGGER_SYSVIEW_OnTaskStopReady (U32 TaskId,
unsigned int Cause);
275 void SEGGER_SYSVIEW_OnUserStart (
unsigned int UserId);
276 void SEGGER_SYSVIEW_OnUserStop (
unsigned int UserId);
278 void SEGGER_SYSVIEW_NameResource (U32 ResourceId,
const char* sName);
280 int SEGGER_SYSVIEW_SendPacket (U8* pPacket, U8* pPayloadEnd,
unsigned int EventId);
286 U8* SEGGER_SYSVIEW_EncodeU32 (U8* pPayload, U32 Value);
287 U8* SEGGER_SYSVIEW_EncodeData (U8* pPayload,
const char* pSrc,
unsigned int Len);
288 U8* SEGGER_SYSVIEW_EncodeString (U8* pPayload,
const char* s,
unsigned int MaxLen);
289 U8* SEGGER_SYSVIEW_EncodeId (U8* pPayload, U32 Id);
290 U32 SEGGER_SYSVIEW_ShrinkId (U32 Id);
297 void SEGGER_SYSVIEW_RegisterModule (SEGGER_SYSVIEW_MODULE* pModule);
298 void SEGGER_SYSVIEW_RecordModuleDescription (
const SEGGER_SYSVIEW_MODULE* pModule,
const char* sDescription);
299 void SEGGER_SYSVIEW_SendModule (U8 ModuleId);
300 void SEGGER_SYSVIEW_SendModuleDescription (
void);
301 void SEGGER_SYSVIEW_SendNumModules (
void);
307 #ifndef SEGGER_SYSVIEW_EXCLUDE_PRINTF // Define in project to avoid warnings about variable parameter list 308 void SEGGER_SYSVIEW_PrintfHostEx (
const char* s, U32 Options, ...);
309 void SEGGER_SYSVIEW_PrintfTargetEx (
const char* s, U32 Options, ...);
310 void SEGGER_SYSVIEW_PrintfHost (
const char* s, ...);
311 void SEGGER_SYSVIEW_PrintfTarget (
const char* s, ...);
312 void SEGGER_SYSVIEW_WarnfHost (
const char* s, ...);
313 void SEGGER_SYSVIEW_WarnfTarget (
const char* s, ...);
314 void SEGGER_SYSVIEW_ErrorfHost (
const char* s, ...);
315 void SEGGER_SYSVIEW_ErrorfTarget (
const char* s, ...);
318 void SEGGER_SYSVIEW_Print (
const char* s);
319 void SEGGER_SYSVIEW_Warn (
const char* s);
320 void SEGGER_SYSVIEW_Error (
const char* s);
326 void SEGGER_SYSVIEW_EnableEvents (U32 EnableMask);
327 void SEGGER_SYSVIEW_DisableEvents (U32 DisableMask);
333 void SEGGER_SYSVIEW_Conf (
void);
334 U32 SEGGER_SYSVIEW_X_GetTimestamp (
void);
335 U32 SEGGER_SYSVIEW_X_GetInterruptId (
void);