mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-03 12:44:33 +02:00
feat(sysview): update to version 3.56
This commit is contained in:
@@ -10,7 +10,7 @@
|
|||||||
* The Embedded Experts *
|
* The Embedded Experts *
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
* *
|
* *
|
||||||
* (c) 1995 - 2021 SEGGER Microcontroller GmbH *
|
* (c) 1995 - 2024 SEGGER Microcontroller GmbH *
|
||||||
* *
|
* *
|
||||||
* www.segger.com Support: support@segger.com *
|
* www.segger.com Support: support@segger.com *
|
||||||
* *
|
* *
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
* *
|
* *
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
* *
|
* *
|
||||||
* SystemView version: 3.42 *
|
* SystemView version: 3.56 *
|
||||||
* *
|
* *
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
@@ -8,7 +8,7 @@
|
|||||||
* The Embedded Experts *
|
* The Embedded Experts *
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
* *
|
* *
|
||||||
* (c) 1995 - 2021 SEGGER Microcontroller GmbH *
|
* (c) 1995 - 2024 SEGGER Microcontroller GmbH *
|
||||||
* *
|
* *
|
||||||
* www.segger.com Support: support@segger.com *
|
* www.segger.com Support: support@segger.com *
|
||||||
* *
|
* *
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
* *
|
* *
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
* *
|
* *
|
||||||
* SystemView version: 3.42 *
|
* SystemView version: 3.56 *
|
||||||
* *
|
* *
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
---------------------------END-OF-HEADER------------------------------
|
---------------------------END-OF-HEADER------------------------------
|
||||||
@@ -100,6 +100,10 @@ Revision: $Rev: 25842 $
|
|||||||
#define _CORE_HAS_RTT_ASM_SUPPORT 1
|
#define _CORE_HAS_RTT_ASM_SUPPORT 1
|
||||||
#define _CORE_NEEDS_DMB 1
|
#define _CORE_NEEDS_DMB 1
|
||||||
#define RTT__DMB() __asm volatile ("dmb\n" : : :);
|
#define RTT__DMB() __asm volatile ("dmb\n" : : :);
|
||||||
|
#elif (defined(__ARM_ARCH_8_1M_MAIN__)) // Cortex-M85
|
||||||
|
#define _CORE_HAS_RTT_ASM_SUPPORT 1
|
||||||
|
#define _CORE_NEEDS_DMB 1
|
||||||
|
#define RTT__DMB() __asm volatile ("dmb\n" : : :);
|
||||||
#else
|
#else
|
||||||
#define _CORE_HAS_RTT_ASM_SUPPORT 0
|
#define _CORE_HAS_RTT_ASM_SUPPORT 0
|
||||||
#endif
|
#endif
|
||||||
@@ -130,6 +134,10 @@ Revision: $Rev: 25842 $
|
|||||||
#define _CORE_HAS_RTT_ASM_SUPPORT 1
|
#define _CORE_HAS_RTT_ASM_SUPPORT 1
|
||||||
#define _CORE_NEEDS_DMB 1
|
#define _CORE_NEEDS_DMB 1
|
||||||
#define RTT__DMB() __asm volatile ("dmb\n" : : :);
|
#define RTT__DMB() __asm volatile ("dmb\n" : : :);
|
||||||
|
#elif (defined __ARM_ARCH_8_1M_MAIN__) // Cortex-M85
|
||||||
|
#define _CORE_HAS_RTT_ASM_SUPPORT 1
|
||||||
|
#define _CORE_NEEDS_DMB 1
|
||||||
|
#define RTT__DMB() __asm volatile ("dmb\n" : : :);
|
||||||
#elif ((defined __ARM_ARCH_7A__) || (defined __ARM_ARCH_7R__)) // Cortex-A/R 32-bit ARMv7-A/R
|
#elif ((defined __ARM_ARCH_7A__) || (defined __ARM_ARCH_7R__)) // Cortex-A/R 32-bit ARMv7-A/R
|
||||||
#define _CORE_NEEDS_DMB 1
|
#define _CORE_NEEDS_DMB 1
|
||||||
#define RTT__DMB() __asm volatile ("dmb\n" : : :);
|
#define RTT__DMB() __asm volatile ("dmb\n" : : :);
|
||||||
@@ -156,6 +164,10 @@ Revision: $Rev: 25842 $
|
|||||||
#define _CORE_HAS_RTT_ASM_SUPPORT 1
|
#define _CORE_HAS_RTT_ASM_SUPPORT 1
|
||||||
#define _CORE_NEEDS_DMB 1
|
#define _CORE_NEEDS_DMB 1
|
||||||
#define RTT__DMB() __asm volatile ("dmb\n" : : :);
|
#define RTT__DMB() __asm volatile ("dmb\n" : : :);
|
||||||
|
#elif (defined __ARM_ARCH_8_1M_MAIN__) // Cortex-M85
|
||||||
|
#define _CORE_HAS_RTT_ASM_SUPPORT 1
|
||||||
|
#define _CORE_NEEDS_DMB 1
|
||||||
|
#define RTT__DMB() __asm volatile ("dmb\n" : : :);
|
||||||
#elif ((defined __ARM_ARCH_7A__) || (defined __ARM_ARCH_7R__)) // Cortex-A/R 32-bit ARMv7-A/R
|
#elif ((defined __ARM_ARCH_7A__) || (defined __ARM_ARCH_7R__)) // Cortex-A/R 32-bit ARMv7-A/R
|
||||||
#define _CORE_NEEDS_DMB 1
|
#define _CORE_NEEDS_DMB 1
|
||||||
#define RTT__DMB() __asm volatile ("dmb\n" : : :);
|
#define RTT__DMB() __asm volatile ("dmb\n" : : :);
|
||||||
@@ -271,6 +283,7 @@ Revision: $Rev: 25842 $
|
|||||||
#ifndef SEGGER_RTT_ASM // defined when SEGGER_RTT.h is included from assembly file
|
#ifndef SEGGER_RTT_ASM // defined when SEGGER_RTT.h is included from assembly file
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
*
|
*
|
||||||
@@ -412,7 +425,7 @@ unsigned SEGGER_RTT_ReadUpBufferNoLock (unsigned BufferIndex, void* pDa
|
|||||||
unsigned SEGGER_RTT_WriteDownBuffer (unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
|
unsigned SEGGER_RTT_WriteDownBuffer (unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
|
||||||
unsigned SEGGER_RTT_WriteDownBufferNoLock (unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
|
unsigned SEGGER_RTT_WriteDownBufferNoLock (unsigned BufferIndex, const void* pBuffer, unsigned NumBytes);
|
||||||
|
|
||||||
#define SEGGER_RTT_HASDATA_UP(n) (((SEGGER_RTT_BUFFER_UP*)((char*)&_SEGGER_RTT.aUp[n] + SEGGER_RTT_UNCACHED_OFF))->WrOff - ((SEGGER_RTT_BUFFER_UP*)((char*)&_SEGGER_RTT.aUp[n] + SEGGER_RTT_UNCACHED_OFF))->RdOff) // Access uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
|
#define SEGGER_RTT_HASDATA_UP(n) (((SEGGER_RTT_BUFFER_UP*)((uintptr_t)&_SEGGER_RTT.aUp[n] + SEGGER_RTT_UNCACHED_OFF))->WrOff - ((SEGGER_RTT_BUFFER_UP*)((uintptr_t)&_SEGGER_RTT.aUp[n] + SEGGER_RTT_UNCACHED_OFF))->RdOff) // Access uncached to make sure we see changes made by the J-Link side and all of our changes go into HW directly
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
*
|
*
|
||||||
|
@@ -3,14 +3,14 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-1-Clause
|
* SPDX-License-Identifier: BSD-1-Clause
|
||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2023 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2023-2025 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
* SEGGER Microcontroller GmbH *
|
* SEGGER Microcontroller GmbH *
|
||||||
* The Embedded Experts *
|
* The Embedded Experts *
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
* *
|
* *
|
||||||
* (c) 1995 - 2021 SEGGER Microcontroller GmbH *
|
* (c) 1995 - 2024 SEGGER Microcontroller GmbH *
|
||||||
* *
|
* *
|
||||||
* www.segger.com Support: support@segger.com *
|
* www.segger.com Support: support@segger.com *
|
||||||
* *
|
* *
|
||||||
@@ -49,14 +49,14 @@
|
|||||||
* *
|
* *
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
* *
|
* *
|
||||||
* SystemView version: 3.42 *
|
* SystemView version: 3.56 *
|
||||||
* *
|
* *
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
-------------------------- END-OF-HEADER -----------------------------
|
-------------------------- END-OF-HEADER -----------------------------
|
||||||
|
|
||||||
File : SEGGER_SYSVIEW.c
|
File : SEGGER_SYSVIEW.c
|
||||||
Purpose : System visualization API implementation.
|
Purpose : System visualization API implementation.
|
||||||
Revision: $Rev: 28341 $
|
Revision: $Rev: 29105 $
|
||||||
|
|
||||||
Additional information:
|
Additional information:
|
||||||
Packet format:
|
Packet format:
|
||||||
@@ -66,10 +66,10 @@ Additional information:
|
|||||||
|
|
||||||
Packets with IDs 24..31 are standard packets with extendible
|
Packets with IDs 24..31 are standard packets with extendible
|
||||||
structure and contain a length field.
|
structure and contain a length field.
|
||||||
<ID><Lenght><Data><TimeStampDelta>
|
<ID><Length><Data><TimeStampDelta>
|
||||||
|
|
||||||
Packet ID 31 is used for SystemView extended events.
|
Packet ID 31 is used for SystemView extended events.
|
||||||
<ID><Lenght><ID_EX><Data><TimeStampDelta>
|
<ID><Length><ID_EX><Data><TimeStampDelta>
|
||||||
|
|
||||||
Packets with IDs >= 32 always contain a length field.
|
Packets with IDs >= 32 always contain a length field.
|
||||||
<ID><Length><Data><TimeStampDelta>
|
<ID><Length><Data><TimeStampDelta>
|
||||||
@@ -150,6 +150,7 @@ Additional information:
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
#include <assert.h>
|
||||||
#include "SEGGER_SYSVIEW_Int.h"
|
#include "SEGGER_SYSVIEW_Int.h"
|
||||||
#include "SEGGER_RTT.h"
|
#include "SEGGER_RTT.h"
|
||||||
|
|
||||||
@@ -188,7 +189,7 @@ Additional information:
|
|||||||
// Timestamps may be less than full 32-bits, in which case we need to zero
|
// Timestamps may be less than full 32-bits, in which case we need to zero
|
||||||
// the unused bits to properly handle overflows.
|
// the unused bits to properly handle overflows.
|
||||||
// Note that this is a quite common scenario, as a 32-bit time such as
|
// Note that this is a quite common scenario, as a 32-bit time such as
|
||||||
// SysTick might be scaled down to reduce bandwith
|
// SysTick might be scaled down to reduce bandwidth
|
||||||
// or a 16-bit hardware time might be used.
|
// or a 16-bit hardware time might be used.
|
||||||
#if SEGGER_SYSVIEW_TIMESTAMP_BITS < 32 // Eliminate unused bits in case hardware timestamps are less than 32 bits
|
#if SEGGER_SYSVIEW_TIMESTAMP_BITS < 32 // Eliminate unused bits in case hardware timestamps are less than 32 bits
|
||||||
#define MAKE_DELTA_32BIT(Delta) Delta <<= 32 - SEGGER_SYSVIEW_TIMESTAMP_BITS; \
|
#define MAKE_DELTA_32BIT(Delta) Delta <<= 32 - SEGGER_SYSVIEW_TIMESTAMP_BITS; \
|
||||||
@@ -388,8 +389,6 @@ static U8 _NumModules;
|
|||||||
pDest = pSysviewPointer; \
|
pDest = pSysviewPointer; \
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if (SEGGER_SYSVIEW_USE_STATIC_BUFFER == 1)
|
#if (SEGGER_SYSVIEW_USE_STATIC_BUFFER == 1)
|
||||||
static U8 _aPacket[SEGGER_SYSVIEW_MAX_PACKET_SIZE];
|
static U8 _aPacket[SEGGER_SYSVIEW_MAX_PACKET_SIZE];
|
||||||
|
|
||||||
@@ -432,6 +431,9 @@ static U8 _aPacket[SEGGER_SYSVIEW_MAX_PACKET_SIZE];
|
|||||||
static U8* _EncodeData(U8* pPayload, const char* pSrc, unsigned int NumBytes) {
|
static U8* _EncodeData(U8* pPayload, const char* pSrc, unsigned int NumBytes) {
|
||||||
unsigned int n;
|
unsigned int n;
|
||||||
const U8* p;
|
const U8* p;
|
||||||
|
|
||||||
|
// Espressif doesn't support larger packages yet. Encode data length must be less than 255.
|
||||||
|
assert(NumBytes < 255);
|
||||||
//
|
//
|
||||||
n = 0;
|
n = 0;
|
||||||
p = (const U8*)pSrc;
|
p = (const U8*)pSrc;
|
||||||
@@ -442,8 +444,8 @@ static U8* _EncodeData(U8* pPayload, const char* pSrc, unsigned int NumBytes) {
|
|||||||
*pPayload++ = (U8)NumBytes;
|
*pPayload++ = (U8)NumBytes;
|
||||||
} else {
|
} else {
|
||||||
*pPayload++ = 255;
|
*pPayload++ = 255;
|
||||||
*pPayload++ = (NumBytes & 255);
|
|
||||||
*pPayload++ = ((NumBytes >> 8) & 255);
|
*pPayload++ = ((NumBytes >> 8) & 255);
|
||||||
|
*pPayload++ = (NumBytes & 255);
|
||||||
}
|
}
|
||||||
while (n < NumBytes) {
|
while (n < NumBytes) {
|
||||||
*pPayload++ = *p++;
|
*pPayload++ = *p++;
|
||||||
@@ -452,6 +454,38 @@ static U8* _EncodeData(U8* pPayload, const char* pSrc, unsigned int NumBytes) {
|
|||||||
return pPayload;
|
return pPayload;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* _EncodeFloat()
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Encode a float value in variable-length format.
|
||||||
|
*
|
||||||
|
* Parameters
|
||||||
|
* pPayload - Pointer to where value will be encoded.
|
||||||
|
* Value - Value to be encoded.
|
||||||
|
*
|
||||||
|
* Return value
|
||||||
|
* Pointer to the byte following the value, i.e. the first free
|
||||||
|
* byte in the payload and the next position to store payload
|
||||||
|
* content.
|
||||||
|
*/
|
||||||
|
static U8* _EncodeFloat(U8* pPayload, float Value) {
|
||||||
|
float Val = Value;
|
||||||
|
U8* pSysviewPointer;
|
||||||
|
U32* SysViewData;
|
||||||
|
pSysviewPointer = pPayload;
|
||||||
|
SysViewData = (U32*)&Val;
|
||||||
|
while((*SysViewData) > 0x7F) {
|
||||||
|
*pSysviewPointer++ = (U8)((*SysViewData) | 0x80);
|
||||||
|
(*SysViewData) >>= 7;
|
||||||
|
};
|
||||||
|
*pSysviewPointer++ = (U8)(*SysViewData);
|
||||||
|
pPayload = pSysviewPointer;
|
||||||
|
|
||||||
|
return pPayload;
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
*
|
*
|
||||||
* _EncodeStr()
|
* _EncodeStr()
|
||||||
@@ -475,38 +509,42 @@ static U8* _EncodeData(U8* pPayload, const char* pSrc, unsigned int NumBytes) {
|
|||||||
* No more than 1 + Limit bytes will be encoded to the payload.
|
* No more than 1 + Limit bytes will be encoded to the payload.
|
||||||
*/
|
*/
|
||||||
static U8 *_EncodeStr(U8 *pPayload, const char *pText, unsigned int Limit) {
|
static U8 *_EncodeStr(U8 *pPayload, const char *pText, unsigned int Limit) {
|
||||||
unsigned int n;
|
U8* pLen;
|
||||||
unsigned int Len;
|
const char* sStart;
|
||||||
//
|
|
||||||
// Compute string len
|
if (pText == NULL) {
|
||||||
//
|
*pPayload++ = (U8)0;
|
||||||
Len = 0;
|
|
||||||
if (pText != NULL) {
|
|
||||||
while(*(pText + Len) != 0) {
|
|
||||||
Len++;
|
|
||||||
}
|
|
||||||
if (Len > Limit) {
|
|
||||||
Len = Limit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//
|
|
||||||
// Write Len
|
|
||||||
//
|
|
||||||
if (Len < 255) {
|
|
||||||
*pPayload++ = (U8)Len;
|
|
||||||
} else {
|
} else {
|
||||||
*pPayload++ = 255;
|
sStart = pText; // Remember start of string.
|
||||||
*pPayload++ = (Len & 255);
|
//
|
||||||
*pPayload++ = ((Len >> 8) & 255);
|
// Save space to store count byte(s).
|
||||||
|
//
|
||||||
|
pLen = pPayload++;
|
||||||
|
#if (SEGGER_SYSVIEW_MAX_STRING_LEN >= 255) // Length always encodes in 3 bytes
|
||||||
|
pPayload += 2;
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// Limit string to maximum length and copy into payload buffer.
|
||||||
|
//
|
||||||
|
if (Limit > SEGGER_SYSVIEW_MAX_STRING_LEN) {
|
||||||
|
Limit = SEGGER_SYSVIEW_MAX_STRING_LEN;
|
||||||
|
}
|
||||||
|
while ((Limit-- > 0) && (*pText != '\0')) {
|
||||||
|
*pPayload++ = *pText++;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Save string length to buffer.
|
||||||
|
//
|
||||||
|
#if (SEGGER_SYSVIEW_MAX_STRING_LEN >= 255) // Length always encodes in 3 bytes
|
||||||
|
Limit = (unsigned int)(pText - sStart);
|
||||||
|
*pLen++ = (U8)255;
|
||||||
|
*pLen++ = (U8)((Limit >> 8) & 255);
|
||||||
|
*pLen++ = (U8)(Limit & 255);
|
||||||
|
#else // Length always encodes in 1 byte
|
||||||
|
*pLen = (U8)(pText - sStart);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
// copy string
|
|
||||||
//
|
|
||||||
n = 0;
|
|
||||||
while (n < Len) {
|
|
||||||
*pPayload++ = *pText++;
|
|
||||||
n++;
|
|
||||||
}
|
|
||||||
return pPayload;
|
return pPayload;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -693,7 +731,6 @@ static void _SendSyncInfo(void) {
|
|||||||
for (n = 0; n < _NumModules; n++) {
|
for (n = 0; n < _NumModules; n++) {
|
||||||
SEGGER_SYSVIEW_SendModule(n);
|
SEGGER_SYSVIEW_SendModule(n);
|
||||||
}
|
}
|
||||||
SEGGER_SYSVIEW_SendModuleDescription();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // (SEGGER_SYSVIEW_POST_MORTEM_MODE == 1)
|
#endif // (SEGGER_SYSVIEW_POST_MORTEM_MODE == 1)
|
||||||
@@ -1218,6 +1255,7 @@ static void _VPrintTarget(const char* sFormat, U32 Options, va_list* pParamList)
|
|||||||
unsigned int FormatFlags;
|
unsigned int FormatFlags;
|
||||||
unsigned int FieldWidth;
|
unsigned int FieldWidth;
|
||||||
U8* pPayloadStart;
|
U8* pPayloadStart;
|
||||||
|
const char* s;
|
||||||
#if SEGGER_SYSVIEW_USE_STATIC_BUFFER == 0
|
#if SEGGER_SYSVIEW_USE_STATIC_BUFFER == 0
|
||||||
RECORD_START(SEGGER_SYSVIEW_INFO_SIZE + SEGGER_SYSVIEW_MAX_STRING_LEN + 1 + 2 * SEGGER_SYSVIEW_QUANTA_U32);
|
RECORD_START(SEGGER_SYSVIEW_INFO_SIZE + SEGGER_SYSVIEW_MAX_STRING_LEN + 1 + 2 * SEGGER_SYSVIEW_QUANTA_U32);
|
||||||
SEGGER_SYSVIEW_LOCK();
|
SEGGER_SYSVIEW_LOCK();
|
||||||
@@ -1322,6 +1360,20 @@ static void _VPrintTarget(const char* sFormat, U32 Options, va_list* pParamList)
|
|||||||
v = va_arg(*pParamList, int);
|
v = va_arg(*pParamList, int);
|
||||||
_PrintUnsigned(&BufferDesc, (unsigned int)v, 16u, NumDigits, FieldWidth, FormatFlags);
|
_PrintUnsigned(&BufferDesc, (unsigned int)v, 16u, NumDigits, FieldWidth, FormatFlags);
|
||||||
break;
|
break;
|
||||||
|
case 's':
|
||||||
|
s = va_arg(*pParamList, const char*);
|
||||||
|
if (s == NULL) {
|
||||||
|
s = "(null)";
|
||||||
|
}
|
||||||
|
do {
|
||||||
|
c = *s;
|
||||||
|
s++;
|
||||||
|
if (c == '\0') {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
_StoreChar(&BufferDesc, c);
|
||||||
|
} while (BufferDesc.Cnt < SEGGER_SYSVIEW_MAX_STRING_LEN);
|
||||||
|
break;
|
||||||
case 'p':
|
case 'p':
|
||||||
v = va_arg(*pParamList, int);
|
v = va_arg(*pParamList, int);
|
||||||
_PrintUnsigned(&BufferDesc, (unsigned int)v, 16u, 8u, 8u, 0u);
|
_PrintUnsigned(&BufferDesc, (unsigned int)v, 16u, 8u, 8u, 0u);
|
||||||
@@ -1954,11 +2006,61 @@ void SEGGER_SYSVIEW_SendTaskInfo(const SEGGER_SYSVIEW_TASKINFO *pInfo) {
|
|||||||
ENCODE_U32(pPayload, SHRINK_ID(pInfo->TaskID));
|
ENCODE_U32(pPayload, SHRINK_ID(pInfo->TaskID));
|
||||||
ENCODE_U32(pPayload, pInfo->StackBase);
|
ENCODE_U32(pPayload, pInfo->StackBase);
|
||||||
ENCODE_U32(pPayload, pInfo->StackSize);
|
ENCODE_U32(pPayload, pInfo->StackSize);
|
||||||
ENCODE_U32(pPayload, 0); // Stack End, future use
|
ENCODE_U32(pPayload, pInfo->StackUsage);
|
||||||
_SendPacket(pPayloadStart, pPayload, SYSVIEW_EVTID_STACK_INFO);
|
_SendPacket(pPayloadStart, pPayload, SYSVIEW_EVTID_STACK_INFO);
|
||||||
RECORD_END();
|
RECORD_END();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* SEGGER_SYSVIEW_SendStackInfo()
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Send a Stack Info Packet, containing TaskId for identification,
|
||||||
|
* stack base, stack size and stack usage.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Parameters
|
||||||
|
* pInfo - Pointer to stack information to send.
|
||||||
|
*/
|
||||||
|
void SEGGER_SYSVIEW_SendStackInfo(const SEGGER_SYSVIEW_STACKINFO *pInfo) {
|
||||||
|
U8* pPayload;
|
||||||
|
U8* pPayloadStart;
|
||||||
|
RECORD_START(SEGGER_SYSVIEW_INFO_SIZE + 4 * SEGGER_SYSVIEW_QUANTA_U32);
|
||||||
|
//
|
||||||
|
pPayload = pPayloadStart;
|
||||||
|
ENCODE_U32(pPayload, SHRINK_ID(pInfo->TaskID));
|
||||||
|
ENCODE_U32(pPayload, pInfo->StackBase);
|
||||||
|
ENCODE_U32(pPayload, pInfo->StackSize);
|
||||||
|
ENCODE_U32(pPayload, pInfo->StackUsage);
|
||||||
|
|
||||||
|
RECORD_END();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* SEGGER_SYSVIEW_SampleData()
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Send a Data Sample Packet, containing the data Id and the value.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Parameters
|
||||||
|
* pInfo - Pointer to data sample struct to send.
|
||||||
|
*/
|
||||||
|
void SEGGER_SYSVIEW_SampleData(const SEGGER_SYSVIEW_DATA_SAMPLE *pInfo) {
|
||||||
|
U8* pPayload;
|
||||||
|
U8* pPayloadStart;
|
||||||
|
RECORD_START(SEGGER_SYSVIEW_INFO_SIZE + 2 * SEGGER_SYSVIEW_QUANTA_U32);
|
||||||
|
//
|
||||||
|
pPayload = pPayloadStart;
|
||||||
|
ENCODE_U32(pPayload, pInfo->ID);
|
||||||
|
pPayload = _EncodeFloat(pPayload, *(pInfo->pFloat_Value));
|
||||||
|
_SendPacket(pPayloadStart, pPayload, SYSVIEW_EVTID_DATA_SAMPLE);
|
||||||
|
|
||||||
|
RECORD_END();
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
*
|
*
|
||||||
* SEGGER_SYSVIEW_SendTaskList()
|
* SEGGER_SYSVIEW_SendTaskList()
|
||||||
@@ -2448,6 +2550,63 @@ void SEGGER_SYSVIEW_NameResource(U32 ResourceId, const char* sName) {
|
|||||||
RECORD_END();
|
RECORD_END();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* SEGGER_SYSVIEW_RegisterData()
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Register data to sample the values via SystemView.
|
||||||
|
*
|
||||||
|
* Register functions are usually set in the system description
|
||||||
|
* callback, to ensure it is only sent when the SystemView Application
|
||||||
|
* is connected.
|
||||||
|
*
|
||||||
|
* Parameters
|
||||||
|
* pInfo - Struct containing all possible properties that can be sent via this registration event.
|
||||||
|
*/
|
||||||
|
void SEGGER_SYSVIEW_RegisterData(SEGGER_SYSVIEW_DATA_REGISTER* pInfo) {
|
||||||
|
U8* pPayload;
|
||||||
|
U8* pPayloadStart;
|
||||||
|
RECORD_START(SEGGER_SYSVIEW_INFO_SIZE + 8 * SEGGER_SYSVIEW_QUANTA_U32 + 1 + SEGGER_SYSVIEW_MAX_STRING_LEN);
|
||||||
|
//
|
||||||
|
pPayload = pPayloadStart;
|
||||||
|
ENCODE_U32(pPayload, SYSVIEW_EVTID_EX_REGISTER_DATA);
|
||||||
|
ENCODE_U32(pPayload, pInfo->ID);
|
||||||
|
pPayload = _EncodeStr(pPayload, pInfo->sName, SEGGER_SYSVIEW_MAX_STRING_LEN);
|
||||||
|
|
||||||
|
if (pInfo->sName != 0) {
|
||||||
|
ENCODE_U32(pPayload, pInfo->DataType);
|
||||||
|
ENCODE_U32(pPayload, pInfo->Offset);
|
||||||
|
ENCODE_U32(pPayload, pInfo->RangeMin);
|
||||||
|
ENCODE_U32(pPayload, pInfo->RangeMax);
|
||||||
|
pPayload = _EncodeFloat(pPayload, pInfo->ScalingFactor);
|
||||||
|
pPayload = _EncodeStr(pPayload, pInfo->sUnit, SEGGER_SYSVIEW_MAX_STRING_LEN);
|
||||||
|
} else if (pInfo->ScalingFactor != 0) {
|
||||||
|
ENCODE_U32(pPayload, pInfo->DataType);
|
||||||
|
ENCODE_U32(pPayload, pInfo->Offset);
|
||||||
|
ENCODE_U32(pPayload, pInfo->RangeMin);
|
||||||
|
ENCODE_U32(pPayload, pInfo->RangeMax);
|
||||||
|
pPayload = _EncodeFloat(pPayload, pInfo->ScalingFactor);
|
||||||
|
} else if (pInfo->RangeMax != 0) {
|
||||||
|
ENCODE_U32(pPayload, pInfo->DataType);
|
||||||
|
ENCODE_U32(pPayload, pInfo->Offset);
|
||||||
|
ENCODE_U32(pPayload, pInfo->RangeMin);
|
||||||
|
ENCODE_U32(pPayload, pInfo->RangeMax);
|
||||||
|
} else if (pInfo->RangeMin != 0) {
|
||||||
|
ENCODE_U32(pPayload, pInfo->DataType);
|
||||||
|
ENCODE_U32(pPayload, pInfo->Offset);
|
||||||
|
ENCODE_U32(pPayload, pInfo->RangeMin);
|
||||||
|
} else if (pInfo->Offset != 0) {
|
||||||
|
ENCODE_U32(pPayload, pInfo->DataType);
|
||||||
|
ENCODE_U32(pPayload, pInfo->Offset);
|
||||||
|
} else if (pInfo->DataType != 0) {
|
||||||
|
ENCODE_U32(pPayload, pInfo->DataType);
|
||||||
|
}
|
||||||
|
|
||||||
|
_SendPacket(pPayloadStart, pPayload, SYSVIEW_EVTID_EX);
|
||||||
|
RECORD_END();
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
*
|
*
|
||||||
* SEGGER_SYSVIEW_HeapDefine()
|
* SEGGER_SYSVIEW_HeapDefine()
|
||||||
@@ -2820,9 +2979,6 @@ void SEGGER_SYSVIEW_RegisterModule(SEGGER_SYSVIEW_MODULE* pModule) {
|
|||||||
_NumModules++;
|
_NumModules++;
|
||||||
}
|
}
|
||||||
SEGGER_SYSVIEW_SendModule(0);
|
SEGGER_SYSVIEW_SendModule(0);
|
||||||
if (pModule->pfSendModuleDesc) {
|
|
||||||
pModule->pfSendModuleDesc();
|
|
||||||
}
|
|
||||||
SEGGER_SYSVIEW_UNLOCK();
|
SEGGER_SYSVIEW_UNLOCK();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2906,6 +3062,9 @@ void SEGGER_SYSVIEW_SendModule(U8 ModuleId) {
|
|||||||
_SendPacket(pPayloadStart, pPayload, SYSVIEW_EVTID_MODULEDESC);
|
_SendPacket(pPayloadStart, pPayload, SYSVIEW_EVTID_MODULEDESC);
|
||||||
RECORD_END();
|
RECORD_END();
|
||||||
}
|
}
|
||||||
|
if (pModule && pModule->pfSendModuleDesc) {
|
||||||
|
pModule->pfSendModuleDesc();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2986,6 +3145,39 @@ void SEGGER_SYSVIEW_PrintfHostEx(const char* s, U32 Options, ...) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* SEGGER_SYSVIEW_VPrintfHostEx()
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Print a string which is formatted on the host by the SystemView Application
|
||||||
|
* with Additional information.
|
||||||
|
*
|
||||||
|
* Parameters
|
||||||
|
* s - String to be formatted.
|
||||||
|
* Options - Options for the string. i.e. Log level.
|
||||||
|
* pParamList - Pointer to the list of arguments for the format string
|
||||||
|
*
|
||||||
|
* Additional information
|
||||||
|
* All format arguments are treated as 32-bit scalar values.
|
||||||
|
*/
|
||||||
|
void SEGGER_SYSVIEW_VPrintfHostEx(const char* s, U32 Options, va_list *pParamList) {
|
||||||
|
#if SEGGER_SYSVIEW_PRINTF_IMPLICIT_FORMAT
|
||||||
|
int r;
|
||||||
|
va_list ParamListCopy;
|
||||||
|
va_copy(ParamListCopy, *pParamList);
|
||||||
|
|
||||||
|
r = _VPrintHost(s, Options, pParamList);
|
||||||
|
|
||||||
|
if (r == -1) {
|
||||||
|
_VPrintTarget(s, Options, &ParamListCopy);
|
||||||
|
}
|
||||||
|
va_end(ParamListCopy);
|
||||||
|
#else
|
||||||
|
_VPrintHost(s, Options, pParamList);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
*
|
*
|
||||||
* SEGGER_SYSVIEW_PrintfHost()
|
* SEGGER_SYSVIEW_PrintfHost()
|
||||||
@@ -3020,6 +3212,37 @@ void SEGGER_SYSVIEW_PrintfHost(const char* s, ...) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* SEGGER_SYSVIEW_VPrintfHost()
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Print a string which is formatted on the host by the SystemView Application.
|
||||||
|
*
|
||||||
|
* Parameters
|
||||||
|
* s - String to be formatted.
|
||||||
|
* pParamList - Pointer to the list of arguments for the format string
|
||||||
|
*
|
||||||
|
* Additional information
|
||||||
|
* All format arguments are treated as 32-bit scalar values.
|
||||||
|
*/
|
||||||
|
void SEGGER_SYSVIEW_VPrintfHost(const char* s, va_list *pParamList) {
|
||||||
|
#if SEGGER_SYSVIEW_PRINTF_IMPLICIT_FORMAT
|
||||||
|
int r;
|
||||||
|
va_list ParamListCopy;
|
||||||
|
va_copy(ParamListCopy, *pParamList);
|
||||||
|
|
||||||
|
r = _VPrintHost(s, SEGGER_SYSVIEW_LOG, pParamList);
|
||||||
|
|
||||||
|
if (r == -1) {
|
||||||
|
_VPrintTarget(s, SEGGER_SYSVIEW_LOG, &ParamListCopy);
|
||||||
|
}
|
||||||
|
va_end(ParamListCopy);
|
||||||
|
#else
|
||||||
|
_VPrintHost(s, SEGGER_SYSVIEW_LOG, pParamList);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
*
|
*
|
||||||
* SEGGER_SYSVIEW_WarnfHost()
|
* SEGGER_SYSVIEW_WarnfHost()
|
||||||
@@ -3055,6 +3278,38 @@ void SEGGER_SYSVIEW_WarnfHost(const char* s, ...) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* SEGGER_SYSVIEW_VWarnfHost()
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Print a warning string which is formatted on the host by
|
||||||
|
* the SystemView Application.
|
||||||
|
*
|
||||||
|
* Parameters
|
||||||
|
* s - String to be formatted.
|
||||||
|
* pParamList - Pointer to the list of arguments for the format string
|
||||||
|
*
|
||||||
|
* Additional information
|
||||||
|
* All format arguments are treated as 32-bit scalar values.
|
||||||
|
*/
|
||||||
|
void SEGGER_SYSVIEW_VWarnfHost(const char* s, va_list *pParamList) {
|
||||||
|
#if SEGGER_SYSVIEW_PRINTF_IMPLICIT_FORMAT
|
||||||
|
int r;
|
||||||
|
va_list ParamListCopy;
|
||||||
|
va_copy(ParamListCopy, *pParamList);
|
||||||
|
|
||||||
|
r = _VPrintHost(s, SEGGER_SYSVIEW_WARNING, pParamList);
|
||||||
|
|
||||||
|
if (r == -1) {
|
||||||
|
_VPrintTarget(s, SEGGER_SYSVIEW_WARNING, &ParamListCopy);
|
||||||
|
}
|
||||||
|
va_end(ParamListCopy);
|
||||||
|
#else
|
||||||
|
_VPrintHost(s, SEGGER_SYSVIEW_WARNING, pParamList);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
*
|
*
|
||||||
* SEGGER_SYSVIEW_ErrorfHost()
|
* SEGGER_SYSVIEW_ErrorfHost()
|
||||||
@@ -3090,6 +3345,38 @@ void SEGGER_SYSVIEW_ErrorfHost(const char* s, ...) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* SEGGER_SYSVIEW_VErrorfHost()
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Print a warning string which is formatted on the host by
|
||||||
|
* the SystemView Application.
|
||||||
|
*
|
||||||
|
* Parameters
|
||||||
|
* s - String to be formatted.
|
||||||
|
* pParamList - Pointer to the list of arguments for the format string
|
||||||
|
*
|
||||||
|
* Additional information
|
||||||
|
* All format arguments are treated as 32-bit scalar values.
|
||||||
|
*/
|
||||||
|
void SEGGER_SYSVIEW_VErrorfHost(const char* s, va_list *pParamList) {
|
||||||
|
#if SEGGER_SYSVIEW_PRINTF_IMPLICIT_FORMAT
|
||||||
|
int r;
|
||||||
|
va_list ParamListCopy;
|
||||||
|
va_copy(ParamListCopy, *pParamList);
|
||||||
|
|
||||||
|
r = _VPrintHost(s, SEGGER_SYSVIEW_ERROR, pParamList);
|
||||||
|
|
||||||
|
if (r == -1) {
|
||||||
|
_VPrintTarget(s, SEGGER_SYSVIEW_ERROR, &ParamListCopy);
|
||||||
|
}
|
||||||
|
va_end(ParamListCopy);
|
||||||
|
#else
|
||||||
|
_VPrintHost(s, SEGGER_SYSVIEW_ERROR, pParamList);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
*
|
*
|
||||||
* SEGGER_SYSVIEW_PrintfTargetEx()
|
* SEGGER_SYSVIEW_PrintfTargetEx()
|
||||||
@@ -3110,6 +3397,23 @@ void SEGGER_SYSVIEW_PrintfTargetEx(const char* s, U32 Options, ...) {
|
|||||||
va_end(ParamList);
|
va_end(ParamList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* SEGGER_SYSVIEW_VPrintfTargetEx()
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Print a string which is formatted on the target before sent to
|
||||||
|
* the host with Additional information.
|
||||||
|
*
|
||||||
|
* Parameters
|
||||||
|
* s - String to be formatted.
|
||||||
|
* Options - Options for the string. i.e. Log level.
|
||||||
|
* pParamList - Pointer to the list of arguments for the format string
|
||||||
|
*/
|
||||||
|
void SEGGER_SYSVIEW_VPrintfTargetEx(const char* s, U32 Options, va_list *pParamList) {
|
||||||
|
_VPrintTarget(s, Options, pParamList);
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
*
|
*
|
||||||
* SEGGER_SYSVIEW_PrintfTarget()
|
* SEGGER_SYSVIEW_PrintfTarget()
|
||||||
@@ -3129,6 +3433,22 @@ void SEGGER_SYSVIEW_PrintfTarget(const char* s, ...) {
|
|||||||
va_end(ParamList);
|
va_end(ParamList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* SEGGER_SYSVIEW_VPrintfTarget()
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Print a string which is formatted on the target before sent to
|
||||||
|
* the host.
|
||||||
|
*
|
||||||
|
* Parameters
|
||||||
|
* s - String to be formatted.
|
||||||
|
* pParamList - Pointer to the list of arguments for the format string
|
||||||
|
*/
|
||||||
|
void SEGGER_SYSVIEW_VPrintfTarget(const char* s, va_list* pParamList) {
|
||||||
|
_VPrintTarget(s, SEGGER_SYSVIEW_LOG, pParamList);
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
*
|
*
|
||||||
* SEGGER_SYSVIEW_WarnfTarget()
|
* SEGGER_SYSVIEW_WarnfTarget()
|
||||||
@@ -3148,6 +3468,22 @@ void SEGGER_SYSVIEW_WarnfTarget(const char* s, ...) {
|
|||||||
va_end(ParamList);
|
va_end(ParamList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* SEGGER_SYSVIEW_VWarnfTarget()
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Print a warning string which is formatted on the target before
|
||||||
|
* sent to the host.
|
||||||
|
*
|
||||||
|
* Parameters
|
||||||
|
* s - String to be formatted.
|
||||||
|
* pParamList - Pointer to the list of arguments for the format string
|
||||||
|
*/
|
||||||
|
void SEGGER_SYSVIEW_VWarnfTarget(const char* s, va_list* pParamList) {
|
||||||
|
_VPrintTarget(s, SEGGER_SYSVIEW_WARNING, pParamList);
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
*
|
*
|
||||||
* SEGGER_SYSVIEW_ErrorfTarget()
|
* SEGGER_SYSVIEW_ErrorfTarget()
|
||||||
@@ -3166,6 +3502,22 @@ void SEGGER_SYSVIEW_ErrorfTarget(const char* s, ...) {
|
|||||||
_VPrintTarget(s, SEGGER_SYSVIEW_ERROR, &ParamList);
|
_VPrintTarget(s, SEGGER_SYSVIEW_ERROR, &ParamList);
|
||||||
va_end(ParamList);
|
va_end(ParamList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* SEGGER_SYSVIEW_VErrorfTarget()
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Print an error string which is formatted on the target before
|
||||||
|
* sent to the host.
|
||||||
|
*
|
||||||
|
* Parameters
|
||||||
|
* s - String to be formatted.
|
||||||
|
* pParamList - Pointer to the list of arguments for the format string
|
||||||
|
*/
|
||||||
|
void SEGGER_SYSVIEW_VErrorfTarget(const char* s, va_list* pParamList) {
|
||||||
|
_VPrintTarget(s, SEGGER_SYSVIEW_ERROR, pParamList);
|
||||||
|
}
|
||||||
#endif // SEGGER_SYSVIEW_EXCLUDE_PRINTF
|
#endif // SEGGER_SYSVIEW_EXCLUDE_PRINTF
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
|
@@ -3,14 +3,14 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-1-Clause
|
* SPDX-License-Identifier: BSD-1-Clause
|
||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2023 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2023-2025 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
* SEGGER Microcontroller GmbH *
|
* SEGGER Microcontroller GmbH *
|
||||||
* The Embedded Experts *
|
* The Embedded Experts *
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
* *
|
* *
|
||||||
* (c) 1995 - 2021 SEGGER Microcontroller GmbH *
|
* (c) 1995 - 2024 SEGGER Microcontroller GmbH *
|
||||||
* *
|
* *
|
||||||
* www.segger.com Support: support@segger.com *
|
* www.segger.com Support: support@segger.com *
|
||||||
* *
|
* *
|
||||||
@@ -49,13 +49,13 @@
|
|||||||
* *
|
* *
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
* *
|
* *
|
||||||
* SystemView version: 3.42 *
|
* SystemView version: 3.56 *
|
||||||
* *
|
* *
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
-------------------------- END-OF-HEADER -----------------------------
|
-------------------------- END-OF-HEADER -----------------------------
|
||||||
File : SEGGER_SYSVIEW.h
|
File : SEGGER_SYSVIEW.h
|
||||||
Purpose : System visualization API.
|
Purpose : System visualization API.
|
||||||
Revision: $Rev: 28237 $
|
Revision: $Rev: 28768 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef SEGGER_SYSVIEW_H
|
#ifndef SEGGER_SYSVIEW_H
|
||||||
@@ -123,7 +123,7 @@ extern "C" {
|
|||||||
#define SYSVIEW_EVTID_TIMER_EXIT 20
|
#define SYSVIEW_EVTID_TIMER_EXIT 20
|
||||||
#define SYSVIEW_EVTID_STACK_INFO 21
|
#define SYSVIEW_EVTID_STACK_INFO 21
|
||||||
#define SYSVIEW_EVTID_MODULEDESC 22
|
#define SYSVIEW_EVTID_MODULEDESC 22
|
||||||
|
#define SYSVIEW_EVTID_DATA_SAMPLE 23
|
||||||
#define SYSVIEW_EVTID_INIT 24
|
#define SYSVIEW_EVTID_INIT 24
|
||||||
#define SYSVIEW_EVTID_NAME_RESOURCE 25
|
#define SYSVIEW_EVTID_NAME_RESOURCE 25
|
||||||
#define SYSVIEW_EVTID_PRINT_FORMATTED 26
|
#define SYSVIEW_EVTID_PRINT_FORMATTED 26
|
||||||
@@ -135,12 +135,13 @@ extern "C" {
|
|||||||
//
|
//
|
||||||
// SystemView extended events. Sent with ID 31.
|
// SystemView extended events. Sent with ID 31.
|
||||||
//
|
//
|
||||||
#define SYSVIEW_EVTID_EX_MARK 0
|
#define SYSVIEW_EVTID_EX_MARK 0
|
||||||
#define SYSVIEW_EVTID_EX_NAME_MARKER 1
|
#define SYSVIEW_EVTID_EX_NAME_MARKER 1
|
||||||
#define SYSVIEW_EVTID_EX_HEAP_DEFINE 2
|
#define SYSVIEW_EVTID_EX_HEAP_DEFINE 2
|
||||||
#define SYSVIEW_EVTID_EX_HEAP_ALLOC 3
|
#define SYSVIEW_EVTID_EX_HEAP_ALLOC 3
|
||||||
#define SYSVIEW_EVTID_EX_HEAP_ALLOC_EX 4
|
#define SYSVIEW_EVTID_EX_HEAP_ALLOC_EX 4
|
||||||
#define SYSVIEW_EVTID_EX_HEAP_FREE 5
|
#define SYSVIEW_EVTID_EX_HEAP_FREE 5
|
||||||
|
#define SYSVIEW_EVTID_EX_REGISTER_DATA 6
|
||||||
//
|
//
|
||||||
// Event masks to disable/enable events
|
// Event masks to disable/enable events
|
||||||
//
|
//
|
||||||
@@ -167,7 +168,7 @@ extern "C" {
|
|||||||
#define SYSVIEW_EVTMASK_TIMER_EXIT (1 << SYSVIEW_EVTID_TIMER_EXIT)
|
#define SYSVIEW_EVTMASK_TIMER_EXIT (1 << SYSVIEW_EVTID_TIMER_EXIT)
|
||||||
#define SYSVIEW_EVTMASK_STACK_INFO (1 << SYSVIEW_EVTID_STACK_INFO)
|
#define SYSVIEW_EVTMASK_STACK_INFO (1 << SYSVIEW_EVTID_STACK_INFO)
|
||||||
#define SYSVIEW_EVTMASK_MODULEDESC (1 << SYSVIEW_EVTID_MODULEDESC)
|
#define SYSVIEW_EVTMASK_MODULEDESC (1 << SYSVIEW_EVTID_MODULEDESC)
|
||||||
|
#define SYSVIEW_EVTMASK_DATA_SAMPLE (1 << SYSVIEW_EVTID_DATA_SAMPLE)
|
||||||
#define SYSVIEW_EVTMASK_INIT (1 << SYSVIEW_EVTID_INIT)
|
#define SYSVIEW_EVTMASK_INIT (1 << SYSVIEW_EVTID_INIT)
|
||||||
#define SYSVIEW_EVTMASK_NAME_RESOURCE (1 << SYSVIEW_EVTID_NAME_RESOURCE)
|
#define SYSVIEW_EVTMASK_NAME_RESOURCE (1 << SYSVIEW_EVTID_NAME_RESOURCE)
|
||||||
#define SYSVIEW_EVTMASK_PRINT_FORMATTED (1 << SYSVIEW_EVTID_PRINT_FORMATTED)
|
#define SYSVIEW_EVTMASK_PRINT_FORMATTED (1 << SYSVIEW_EVTID_PRINT_FORMATTED)
|
||||||
@@ -202,8 +203,42 @@ typedef struct {
|
|||||||
U32 Prio;
|
U32 Prio;
|
||||||
U32 StackBase;
|
U32 StackBase;
|
||||||
U32 StackSize;
|
U32 StackSize;
|
||||||
|
U32 StackUsage;
|
||||||
} SEGGER_SYSVIEW_TASKINFO;
|
} SEGGER_SYSVIEW_TASKINFO;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
U32 TaskID;
|
||||||
|
U32 StackBase;
|
||||||
|
U32 StackSize;
|
||||||
|
U32 StackUsage;
|
||||||
|
} SEGGER_SYSVIEW_STACKINFO;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
U32 ID;
|
||||||
|
union {
|
||||||
|
U32* pU32_Value;
|
||||||
|
I32* pI32_Value;
|
||||||
|
float* pFloat_Value;
|
||||||
|
};
|
||||||
|
} SEGGER_SYSVIEW_DATA_SAMPLE;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
SEGGER_SYSVIEW_TYPE_U32 = 0,
|
||||||
|
SEGGER_SYSVIEW_TYPE_I32 = 1,
|
||||||
|
SEGGER_SYSVIEW_TYPE_FLOAT = 2
|
||||||
|
} SEGGER_SYSVIEW_DATA_TYPE;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
U32 ID;
|
||||||
|
SEGGER_SYSVIEW_DATA_TYPE DataType;
|
||||||
|
I32 Offset;
|
||||||
|
I32 RangeMin;
|
||||||
|
I32 RangeMax;
|
||||||
|
float ScalingFactor;
|
||||||
|
const char* sName;
|
||||||
|
const char* sUnit;
|
||||||
|
} SEGGER_SYSVIEW_DATA_REGISTER;
|
||||||
|
|
||||||
typedef struct SEGGER_SYSVIEW_MODULE_STRUCT SEGGER_SYSVIEW_MODULE;
|
typedef struct SEGGER_SYSVIEW_MODULE_STRUCT SEGGER_SYSVIEW_MODULE;
|
||||||
|
|
||||||
struct SEGGER_SYSVIEW_MODULE_STRUCT {
|
struct SEGGER_SYSVIEW_MODULE_STRUCT {
|
||||||
@@ -247,8 +282,8 @@ EXTERN unsigned int SEGGER_SYSVIEW_InterruptId;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
U64 (*pfGetTime) (void);
|
U64 (*pfGetTime) (void);
|
||||||
void (*pfSendTaskList) (void);
|
void (*pfSendTaskList) (void);
|
||||||
} SEGGER_SYSVIEW_OS_API;
|
} SEGGER_SYSVIEW_OS_API;
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
@@ -262,9 +297,13 @@ void SEGGER_SYSVIEW_Stop (void);
|
|||||||
void SEGGER_SYSVIEW_GetSysDesc (void);
|
void SEGGER_SYSVIEW_GetSysDesc (void);
|
||||||
void SEGGER_SYSVIEW_SendTaskList (void);
|
void SEGGER_SYSVIEW_SendTaskList (void);
|
||||||
void SEGGER_SYSVIEW_SendTaskInfo (const SEGGER_SYSVIEW_TASKINFO* pInfo);
|
void SEGGER_SYSVIEW_SendTaskInfo (const SEGGER_SYSVIEW_TASKINFO* pInfo);
|
||||||
|
void SEGGER_SYSVIEW_SendStackInfo (const SEGGER_SYSVIEW_STACKINFO* pInfo);
|
||||||
void SEGGER_SYSVIEW_SendSysDesc (const char* sSysDesc);
|
void SEGGER_SYSVIEW_SendSysDesc (const char* sSysDesc);
|
||||||
int SEGGER_SYSVIEW_IsStarted (void);
|
int SEGGER_SYSVIEW_IsStarted (void);
|
||||||
int SEGGER_SYSVIEW_GetChannelID (void);
|
int SEGGER_SYSVIEW_GetChannelID (void);
|
||||||
|
|
||||||
|
void SEGGER_SYSVIEW_SampleData (const SEGGER_SYSVIEW_DATA_SAMPLE *pInfo);
|
||||||
|
|
||||||
// Checks whether tracing has been started
|
// Checks whether tracing has been started
|
||||||
U8 SEGGER_SYSVIEW_Started(void);
|
U8 SEGGER_SYSVIEW_Started(void);
|
||||||
|
|
||||||
@@ -311,6 +350,7 @@ void SEGGER_SYSVIEW_HeapAllocEx (void* pHeap, void* pUserData,
|
|||||||
void SEGGER_SYSVIEW_HeapFree (void* pHeap, void* pUserData);
|
void SEGGER_SYSVIEW_HeapFree (void* pHeap, void* pUserData);
|
||||||
|
|
||||||
void SEGGER_SYSVIEW_NameResource (U32 ResourceId, const char* sName);
|
void SEGGER_SYSVIEW_NameResource (U32 ResourceId, const char* sName);
|
||||||
|
void SEGGER_SYSVIEW_RegisterData ( SEGGER_SYSVIEW_DATA_REGISTER* pInfo);
|
||||||
|
|
||||||
int SEGGER_SYSVIEW_SendPacket (U8* pPacket, U8* pPayloadEnd, unsigned int EventId);
|
int SEGGER_SYSVIEW_SendPacket (U8* pPacket, U8* pPayloadEnd, unsigned int EventId);
|
||||||
|
|
||||||
@@ -341,13 +381,21 @@ void SEGGER_SYSVIEW_SendNumModules (void);
|
|||||||
*/
|
*/
|
||||||
#ifndef SEGGER_SYSVIEW_EXCLUDE_PRINTF // Define in project to avoid warnings about variable parameter list
|
#ifndef SEGGER_SYSVIEW_EXCLUDE_PRINTF // Define in project to avoid warnings about variable parameter list
|
||||||
void SEGGER_SYSVIEW_PrintfHostEx (const char* s, U32 Options, ...);
|
void SEGGER_SYSVIEW_PrintfHostEx (const char* s, U32 Options, ...);
|
||||||
|
void SEGGER_SYSVIEW_VPrintfHostEx (const char* s, U32 Options, va_list* pParamList);
|
||||||
void SEGGER_SYSVIEW_PrintfTargetEx (const char* s, U32 Options, ...);
|
void SEGGER_SYSVIEW_PrintfTargetEx (const char* s, U32 Options, ...);
|
||||||
|
void SEGGER_SYSVIEW_VPrintfTargetEx (const char* s, U32 Options, va_list* pParamList);
|
||||||
void SEGGER_SYSVIEW_PrintfHost (const char* s, ...);
|
void SEGGER_SYSVIEW_PrintfHost (const char* s, ...);
|
||||||
|
void SEGGER_SYSVIEW_VPrintfHost (const char* s, va_list* pParamList);
|
||||||
void SEGGER_SYSVIEW_PrintfTarget (const char* s, ...);
|
void SEGGER_SYSVIEW_PrintfTarget (const char* s, ...);
|
||||||
|
void SEGGER_SYSVIEW_VPrintfTarget (const char* s, va_list* pParamList);
|
||||||
void SEGGER_SYSVIEW_WarnfHost (const char* s, ...);
|
void SEGGER_SYSVIEW_WarnfHost (const char* s, ...);
|
||||||
|
void SEGGER_SYSVIEW_VWarnfHost (const char* s, va_list* pParamList);
|
||||||
void SEGGER_SYSVIEW_WarnfTarget (const char* s, ...);
|
void SEGGER_SYSVIEW_WarnfTarget (const char* s, ...);
|
||||||
|
void SEGGER_SYSVIEW_VWarnfTarget (const char* s, va_list* pParamList);
|
||||||
void SEGGER_SYSVIEW_ErrorfHost (const char* s, ...);
|
void SEGGER_SYSVIEW_ErrorfHost (const char* s, ...);
|
||||||
|
void SEGGER_SYSVIEW_VErrorfHost (const char* s, va_list* pParamList);
|
||||||
void SEGGER_SYSVIEW_ErrorfTarget (const char* s, ...);
|
void SEGGER_SYSVIEW_ErrorfTarget (const char* s, ...);
|
||||||
|
void SEGGER_SYSVIEW_VErrorfTarget (const char* s, va_list* pParamList);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void SEGGER_SYSVIEW_Print (const char* s);
|
void SEGGER_SYSVIEW_Print (const char* s);
|
||||||
|
@@ -3,14 +3,14 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-1-Clause
|
* SPDX-License-Identifier: BSD-1-Clause
|
||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2023 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2023-2025 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
* SEGGER Microcontroller GmbH *
|
* SEGGER Microcontroller GmbH *
|
||||||
* The Embedded Experts *
|
* The Embedded Experts *
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
* *
|
* *
|
||||||
* (c) 1995 - 2021 SEGGER Microcontroller GmbH *
|
* (c) 1995 - 2024 SEGGER Microcontroller GmbH *
|
||||||
* *
|
* *
|
||||||
* www.segger.com Support: support@segger.com *
|
* www.segger.com Support: support@segger.com *
|
||||||
* *
|
* *
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
* *
|
* *
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
* *
|
* *
|
||||||
* SystemView version: 3.42 *
|
* SystemView version: 3.56 *
|
||||||
* *
|
* *
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
-------------------------- END-OF-HEADER -----------------------------
|
-------------------------- END-OF-HEADER -----------------------------
|
||||||
@@ -72,6 +72,8 @@ Revision: $Rev: 26230 $
|
|||||||
#include "SEGGER_SYSVIEW_Conf.h"
|
#include "SEGGER_SYSVIEW_Conf.h"
|
||||||
#include "SEGGER_RTT_Conf.h"
|
#include "SEGGER_RTT_Conf.h"
|
||||||
|
|
||||||
|
#include "esp_assert.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
@@ -370,12 +372,14 @@ extern "C" {
|
|||||||
#define SEGGER_SYSVIEW_MAX_STRING_LEN 128
|
#define SEGGER_SYSVIEW_MAX_STRING_LEN 128
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
ESP_STATIC_ASSERT(SEGGER_SYSVIEW_MAX_STRING_LEN < 255, "SEGGER Sysview string length must be less than 255.");
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
*
|
*
|
||||||
* Define: SEGGER_SYSVIEW_SUPPORT_LONG_ID
|
* Define: SEGGER_SYSVIEW_SUPPORT_LONG_ID
|
||||||
*
|
*
|
||||||
* Description
|
* Description
|
||||||
* It set, support enconding Evend Ids longer than 14 bit.
|
* It set, support encoding Evend Ids longer than 14 bit.
|
||||||
* Default
|
* Default
|
||||||
* 1
|
* 1
|
||||||
*/
|
*/
|
||||||
@@ -388,7 +392,7 @@ extern "C" {
|
|||||||
* Define: SEGGER_SYSVIEW_SUPPORT_LONG_DATA
|
* Define: SEGGER_SYSVIEW_SUPPORT_LONG_DATA
|
||||||
*
|
*
|
||||||
* Description
|
* Description
|
||||||
* It set, support enconding event data longer than 14 bit.
|
* It set, support encoding event data longer than 14 bit.
|
||||||
* Default
|
* Default
|
||||||
* 0
|
* 0
|
||||||
*/
|
*/
|
||||||
@@ -517,7 +521,7 @@ extern "C" {
|
|||||||
* Define: SEGGER_SYSVIEW_SYNC_PERIOD_SHIFT
|
* Define: SEGGER_SYSVIEW_SYNC_PERIOD_SHIFT
|
||||||
*
|
*
|
||||||
* Description
|
* Description
|
||||||
* Configure how frequently syncronization is sent in post-mortem
|
* Configure how frequently synchronization is sent in post-mortem
|
||||||
* mode.
|
* mode.
|
||||||
* Default
|
* Default
|
||||||
* 8: (1 << 8) = Every 256 Events.
|
* 8: (1 << 8) = Every 256 Events.
|
||||||
|
@@ -8,7 +8,7 @@
|
|||||||
* The Embedded Experts *
|
* The Embedded Experts *
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
* *
|
* *
|
||||||
* (c) 1995 - 2021 SEGGER Microcontroller GmbH *
|
* (c) 1995 - 2024 SEGGER Microcontroller GmbH *
|
||||||
* *
|
* *
|
||||||
* www.segger.com Support: support@segger.com *
|
* www.segger.com Support: support@segger.com *
|
||||||
* *
|
* *
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
* *
|
* *
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
* *
|
* *
|
||||||
* SystemView version: 3.42 *
|
* SystemView version: 3.56 *
|
||||||
* *
|
* *
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
-------------------------- END-OF-HEADER -----------------------------
|
-------------------------- END-OF-HEADER -----------------------------
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
# SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
|
# SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
import copy
|
import copy
|
||||||
import json
|
import json
|
||||||
@@ -30,6 +30,7 @@ SYSVIEW_EVTID_TIMER_ENTER = 19
|
|||||||
SYSVIEW_EVTID_TIMER_EXIT = 20
|
SYSVIEW_EVTID_TIMER_EXIT = 20
|
||||||
SYSVIEW_EVTID_STACK_INFO = 21
|
SYSVIEW_EVTID_STACK_INFO = 21
|
||||||
SYSVIEW_EVTID_MODULEDESC = 22
|
SYSVIEW_EVTID_MODULEDESC = 22
|
||||||
|
SYSVIEW_EVTID_DATA_SAMPLE = 23
|
||||||
SYSVIEW_EVTID_INIT = 24
|
SYSVIEW_EVTID_INIT = 24
|
||||||
SYSVIEW_EVENT_ID_PREDEF_LEN_MAX = SYSVIEW_EVTID_INIT
|
SYSVIEW_EVENT_ID_PREDEF_LEN_MAX = SYSVIEW_EVTID_INIT
|
||||||
SYSVIEW_EVTID_NAME_RESOURCE = 25
|
SYSVIEW_EVTID_NAME_RESOURCE = 25
|
||||||
@@ -66,7 +67,8 @@ _sysview_events_map = {
|
|||||||
'SYS_TIMER_ENTER': SYSVIEW_EVTID_TIMER_ENTER,
|
'SYS_TIMER_ENTER': SYSVIEW_EVTID_TIMER_ENTER,
|
||||||
'SYS_TIMER_EXIT': SYSVIEW_EVTID_TIMER_EXIT,
|
'SYS_TIMER_EXIT': SYSVIEW_EVTID_TIMER_EXIT,
|
||||||
'SYS_STACK_INFO': SYSVIEW_EVTID_STACK_INFO,
|
'SYS_STACK_INFO': SYSVIEW_EVTID_STACK_INFO,
|
||||||
'SYS_MODULEDESC': SYSVIEW_EVTID_INIT,
|
'SYS_MODULEDESC': SYSVIEW_EVTID_MODULEDESC,
|
||||||
|
'SYS_DATA_SAMPLE': SYSVIEW_EVTID_DATA_SAMPLE,
|
||||||
'SYS_INIT': SYSVIEW_EVTID_INIT,
|
'SYS_INIT': SYSVIEW_EVTID_INIT,
|
||||||
'SYS_NAME_RESOURCE': SYSVIEW_EVTID_NAME_RESOURCE,
|
'SYS_NAME_RESOURCE': SYSVIEW_EVTID_NAME_RESOURCE,
|
||||||
'SYS_PRINT_FORMATTED': SYSVIEW_EVTID_PRINT_FORMATTED,
|
'SYS_PRINT_FORMATTED': SYSVIEW_EVTID_PRINT_FORMATTED,
|
||||||
@@ -263,7 +265,7 @@ def _decode_str(reader):
|
|||||||
sz, = struct.unpack('<B', reader.read(1))
|
sz, = struct.unpack('<B', reader.read(1))
|
||||||
if sz == 0xFF:
|
if sz == 0xFF:
|
||||||
buf = struct.unpack('<2B', reader.read(2))
|
buf = struct.unpack('<2B', reader.read(2))
|
||||||
sz = (buf[1] << 8) | buf[0]
|
sz = (buf[0] << 8) | buf[1]
|
||||||
val, = struct.unpack('<%ds' % sz, reader.read(sz))
|
val, = struct.unpack('<%ds' % sz, reader.read(sz))
|
||||||
val = val.decode('utf-8')
|
val = val.decode('utf-8')
|
||||||
if sz < 0xFF:
|
if sz < 0xFF:
|
||||||
@@ -510,6 +512,7 @@ class SysViewPredefinedEvent(SysViewEvent):
|
|||||||
SysViewEventParamSimple('cpu_freq', _decode_u32),
|
SysViewEventParamSimple('cpu_freq', _decode_u32),
|
||||||
SysViewEventParamSimple('ram_base', _decode_u32),
|
SysViewEventParamSimple('ram_base', _decode_u32),
|
||||||
SysViewEventParamSimple('id_shift', _decode_u32)]),
|
SysViewEventParamSimple('id_shift', _decode_u32)]),
|
||||||
|
SYSVIEW_EVTID_DATA_SAMPLE: ('svDataSample', []),
|
||||||
SYSVIEW_EVTID_NAME_RESOURCE: ('svNameResource', [SysViewEventParamSimple('res_id', _decode_u32),
|
SYSVIEW_EVTID_NAME_RESOURCE: ('svNameResource', [SysViewEventParamSimple('res_id', _decode_u32),
|
||||||
SysViewEventParamSimple('name', _decode_str)]),
|
SysViewEventParamSimple('name', _decode_str)]),
|
||||||
SYSVIEW_EVTID_PRINT_FORMATTED: ('svPrint', [SysViewEventParamSimple('msg', _decode_str),
|
SYSVIEW_EVTID_PRINT_FORMATTED: ('svPrint', [SysViewEventParamSimple('msg', _decode_str),
|
||||||
@@ -900,7 +903,7 @@ class SysViewTraceDataProcessor(apptrace.TraceDataProcessor):
|
|||||||
# empty list means IDLE context or self.start_ctx
|
# empty list means IDLE context or self.start_ctx
|
||||||
self.ctx_stack[t.core_id] = []
|
self.ctx_stack[t.core_id] = []
|
||||||
# context is undefined, we do not know have we started the tracing in task/IDLE or IRQ context
|
# context is undefined, we do not know have we started the tracing in task/IDLE or IRQ context
|
||||||
# in general there are three scenarious when we can start tracing: when core is in task, IDLE task or IRQ context
|
# in general there are three scenarios when we can start tracing: when core is in task, IDLE task or IRQ context
|
||||||
self.prev_ctx[t.core_id] = None
|
self.prev_ctx[t.core_id] = None
|
||||||
|
|
||||||
def _get_curr_context(self, core_id):
|
def _get_curr_context(self, core_id):
|
||||||
|
@@ -26141,12 +26141,13 @@
|
|||||||
"xTimerPendFunctionCallFromISR": 163
|
"xTimerPendFunctionCallFromISR": 163
|
||||||
},
|
},
|
||||||
"system": {
|
"system": {
|
||||||
|
"SYS_DATA_SAMPLE": 23,
|
||||||
"SYS_IDLE": 17,
|
"SYS_IDLE": 17,
|
||||||
"SYS_INIT": 24,
|
"SYS_INIT": 24,
|
||||||
"SYS_ISR_ENTER": 2,
|
"SYS_ISR_ENTER": 2,
|
||||||
"SYS_ISR_EXIT": 3,
|
"SYS_ISR_EXIT": 3,
|
||||||
"SYS_ISR_TO_SCHEDULER": 18,
|
"SYS_ISR_TO_SCHEDULER": 18,
|
||||||
"SYS_MODULEDESC": 24,
|
"SYS_MODULEDESC": 22,
|
||||||
"SYS_NAME_RESOURCE": 25,
|
"SYS_NAME_RESOURCE": 25,
|
||||||
"SYS_NOP": 0,
|
"SYS_NOP": 0,
|
||||||
"SYS_NUMMODULES": 27,
|
"SYS_NUMMODULES": 27,
|
||||||
|
@@ -24505,12 +24505,13 @@
|
|||||||
"xTimerPendFunctionCallFromISR": 163
|
"xTimerPendFunctionCallFromISR": 163
|
||||||
},
|
},
|
||||||
"system": {
|
"system": {
|
||||||
|
"SYS_DATA_SAMPLE": 23,
|
||||||
"SYS_IDLE": 17,
|
"SYS_IDLE": 17,
|
||||||
"SYS_INIT": 24,
|
"SYS_INIT": 24,
|
||||||
"SYS_ISR_ENTER": 2,
|
"SYS_ISR_ENTER": 2,
|
||||||
"SYS_ISR_EXIT": 3,
|
"SYS_ISR_EXIT": 3,
|
||||||
"SYS_ISR_TO_SCHEDULER": 18,
|
"SYS_ISR_TO_SCHEDULER": 18,
|
||||||
"SYS_MODULEDESC": 24,
|
"SYS_MODULEDESC": 22,
|
||||||
"SYS_NAME_RESOURCE": 25,
|
"SYS_NAME_RESOURCE": 25,
|
||||||
"SYS_NOP": 0,
|
"SYS_NOP": 0,
|
||||||
"SYS_NUMMODULES": 27,
|
"SYS_NUMMODULES": 27,
|
||||||
|
Reference in New Issue
Block a user