Hi,
I am recoring using Post-Mortem Mode, i can receive the cyclisch information according to function _SendSyncInfo(). But the SEGGER SystemView app shows me only first block of recorded information.
Can someone please explain me why i can read only the first block and not the second or more than one?
or is it necessary to use the SEGGER_SYSVIEW_SYNC_PERIOD_SHIFT bigger enough that the Task list and Module descriptor comes only once?
i am using
#define BUFFER_SIZE_UP (1024)
#define SEGGER_SYSVIEW_RTT_BUFFER_SIZE 8192
#define SEGGER_SYSVIEW_SYNC_PERIOD_SHIFT 8
then i have multiple times task list and system descriptor. But i can read the events on SystemView app after Task list and Module descriptor information till the begining of second time of Task list and Module descriptor information.
Display All
Display All
Best Regards,
Usman
I am recoring using Post-Mortem Mode, i can receive the cyclisch information according to function _SendSyncInfo(). But the SEGGER SystemView app shows me only first block of recorded information.
Can someone please explain me why i can read only the first block and not the second or more than one?
or is it necessary to use the SEGGER_SYSVIEW_SYNC_PERIOD_SHIFT bigger enough that the Task list and Module descriptor comes only once?
i am using
#define BUFFER_SIZE_UP (1024)
#define SEGGER_SYSVIEW_RTT_BUFFER_SIZE 8192
#define SEGGER_SYSVIEW_SYNC_PERIOD_SHIFT 8
then i have multiple times task list and system descriptor. But i can read the events on SystemView app after Task list and Module descriptor information till the begining of second time of Task list and Module descriptor information.
Source Code: SEGGER_SYSVIEW.c
- #if (SEGGER_SYSVIEW_POST_MORTEM_MODE == 1)
- //
- // Add sync and system information periodically if we are in post mortem mode
- //
- if (_SYSVIEW_Globals.RecursionCnt == 0) { // Avoid uncontrolled nesting. This way, this routine can call itself once, but no more often than that.
- _SYSVIEW_Globals.RecursionCnt = 1;
- if (_SYSVIEW_Globals.PacketCount++ & (1 << SEGGER_SYSVIEW_SYNC_PERIOD_SHIFT)) {
- _SendSyncInfo();
- _SYSVIEW_Globals.PacketCount = 0;
- }
- _SYSVIEW_Globals.RecursionCnt = 0;
- }
Source Code: SEGGER_SYSVIEW.c
- <#if (SEGGER_SYSVIEW_POST_MORTEM_MODE == 1)
- static void _SendSyncInfo(void) {
- //
- // Add sync packet ( 10 * 0x00)
- // Send system description
- // Send system time
- // Send task list
- // Send module description
- // Send module information
- //
- SEGGER_RTT_WriteWithOverwriteNoLock(CHANNEL_ID_UP, _abSync, 10);
- SEGGER_SYSVIEW_RecordVoid(SYSVIEW_EVTID_TRACE_START);
- {
- U8* pPayload;
- U8* pPayloadStart;
- RECORD_START(SEGGER_SYSVIEW_INFO_SIZE + 4 * SEGGER_SYSVIEW_QUANTA_U32)
- //
- pPayload = pPayloadStart;
- ENCODE_U32(pPayload, _SYSVIEW_Globals.SysFreq);
- ENCODE_U32(pPayload, _SYSVIEW_Globals.CPUFreq);
- ENCODE_U32(pPayload, _SYSVIEW_Globals.RAMBaseAddress);
- ENCODE_U32(pPayload, SEGGER_SYSVIEW_ID_SHIFT);
- _SendPacket(pPayloadStart, pPayload, SYSVIEW_EVTID_INIT);
- RECORD_END();
- }
- if (_SYSVIEW_Globals.pfSendSysDesc) {
- _SYSVIEW_Globals.pfSendSysDesc();
- }
- SEGGER_SYSVIEW_RecordSystime();
- SEGGER_SYSVIEW_SendTaskList();
- if (_NumModules > 0) {
- SEGGER_SYSVIEW_SendNumModules();
- for (int n = 0; n < _NumModules; n++) {
- SEGGER_SYSVIEW_SendModule(n);
- }
- SEGGER_SYSVIEW_SendModuleDescription();
- }
- }
- #endif // (SEGGER_SYSVIEW_POST_MORTEM_MODE == 1)
Usman