mirror of
https://github.com/espressif/esp-idf
synced 2025-03-09 09:09:10 -04:00
fix(sysview): add prefix to the module desc to avoid stuck in Segger SystemView app
Closes https://github.com/espressif/esp-idf/issues/10483
This commit is contained in:
parent
344ac60cf1
commit
aefe7913c5
@ -21,7 +21,7 @@ const static char *TAG = "sysview_heap_trace";
|
||||
#endif
|
||||
|
||||
static SEGGER_SYSVIEW_MODULE s_esp_sysview_heap_module = {
|
||||
.sModule = "ESP32 SystemView Heap Tracing Module",
|
||||
.sModule = "M=ESP32 SystemView Heap Tracing Module",
|
||||
.NumEvents = 2,
|
||||
};
|
||||
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit da900069fb087c5f4e2da54a39490e3c4a59d159
|
||||
Subproject commit 0255fee0e6417595cb6e5a8affbc3562098647ce
|
@ -1 +1 @@
|
||||
Subproject commit ad30777643ca4c97fbce790f01aebd474ae4946f
|
||||
Subproject commit b6082e49c47f42cf43db7dad7eac395365912b5a
|
@ -1 +1 @@
|
||||
Subproject commit f5f852b53c90c2a23bfbd6b9c4897c25f0ae6155
|
||||
Subproject commit 1f551c5367daa87a29e0c4f724d6cf809a1841ad
|
@ -1 +1 @@
|
||||
Subproject commit 9d69ec4c3a5784a769f20ba2c5014ec04d58ba1b
|
||||
Subproject commit e94341d8f69625a0c01ce19acc47b05039f849bb
|
@ -1 +1 @@
|
||||
Subproject commit ba64d198a845df70b481e2c55004521ca643dea6
|
||||
Subproject commit d2e28f872472ffc6a704faae65ddee1f24e2dfba
|
@ -1 +1 @@
|
||||
Subproject commit a587d929899304264d81a469dc843316d0db5e64
|
||||
Subproject commit bced058f737eaabea1aa193f3c365ee78ff555f3
|
@ -1 +1 @@
|
||||
Subproject commit bf560290f6020737eafaa8b5cbd2177c3956c03f
|
||||
Subproject commit 7d2bf62b7e6afaf38153041a9d53c21aeeca9a25
|
@ -1263,7 +1263,7 @@ class SysViewHeapTraceDataParser(SysViewTraceDataExtEventParser):
|
||||
"""
|
||||
if self.root_proc == self:
|
||||
SysViewTraceDataParser.on_new_event(self, event)
|
||||
if event.id == SYSVIEW_EVTID_MODULEDESC and event.params['desc'].value == 'ESP32 SystemView Heap Tracing Module':
|
||||
if event.id == SYSVIEW_EVTID_MODULEDESC and event.params['desc'].value == 'M=ESP32 SystemView Heap Tracing Module':
|
||||
self.events_off = event.params['evt_off'].value
|
||||
|
||||
|
||||
|
66
tools/esp_app_trace/test/sysview/README.md
Normal file
66
tools/esp_app_trace/test/sysview/README.md
Normal file
@ -0,0 +1,66 @@
|
||||
# Steps to Generate Test Input Files
|
||||
|
||||
1. `sysview_tracing_heap_log.elf`
|
||||
|
||||
Build example `sysview_tracing_heap_log` project.
|
||||
|
||||
```
|
||||
cd $IDF_PATH/examples/system/sysview_tracing_heap_log
|
||||
idf.py set target esp32
|
||||
idf.py build
|
||||
cp build/sysview_tracing_heap_log.elf $IDF_PATH/tools/esp_app_trace/test/sysview/
|
||||
cd $IDF_PATH/tools/esp_app_trace/test/sysview/
|
||||
chmod -x sysview_tracing_heap_log.elf
|
||||
```
|
||||
|
||||
2. `heap_log0.svdat` and `heap_log1.svdat`
|
||||
|
||||
Flash the example and run OpenOCD and GDB using the following command in a separate console
|
||||
|
||||
```
|
||||
cd $IDF_PATH/examples/system/sysview_tracing_heap_log
|
||||
idf.py openocd
|
||||
```
|
||||
|
||||
```
|
||||
cd $IDF_PATH/examples/system/sysview_tracing_heap_log
|
||||
xtensa-esp32-elf-gdb -x gdbinit build/sysview_tracing_heap_log.elf
|
||||
```
|
||||
When program stops at `heap_trace_stop` quit GDB and OpenOCD
|
||||
|
||||
Copy generated svdat files
|
||||
```
|
||||
cp heap_log0.svdat $IDF_PATH/tools/esp_app_trace/test/sysview/
|
||||
cp heap_log1.svdat $IDF_PATH/tools/esp_app_trace/test/sysview/
|
||||
```
|
||||
|
||||
3. `heap_log_mcore.svdat`
|
||||
|
||||
Flash the example and run OpenOCD and GDB using the following command in a separate console
|
||||
|
||||
```
|
||||
cd $IDF_PATH/examples/system/sysview_tracing_heap_log
|
||||
idf.py openocd
|
||||
```
|
||||
|
||||
```
|
||||
cd $IDF_PATH/examples/system/sysview_tracing_heap_log
|
||||
xtensa-esp32-elf-gdb -x gdbinit-mcore build/sysview_tracing_heap_log.elf
|
||||
```
|
||||
When program stops at `heap_trace_stop` quit GDB and OpenOCD
|
||||
|
||||
Copy generated svdat file
|
||||
```
|
||||
cp heap_log_mcore.svdat $IDF_PATH/tools/esp_app_trace/test/sysview/
|
||||
```
|
||||
|
||||
4. `expected_output` and `expected_output_json` files
|
||||
|
||||
You can use the commands from the `test.sh` to generate expected result files
|
||||
|
||||
```
|
||||
$IDF_PATH/tools/esp_app_trace/sysviewtrace_proc.py -d -p -b sysview_tracing_heap_log.elf heap_log0.svdat heap_log1.svdat &> expected_output
|
||||
$IDF_PATH/tools/esp_app_trace/sysviewtrace_proc.py -j -b sysview_tracing_heap_log.elf heap_log0.svdat heap_log1.svdat &> expected_output.json
|
||||
$IDF_PATH/tools/esp_app_trace/sysviewtrace_proc.py -d -p -b sysview_tracing_heap_log.elf heap_log_mcore.svdat &> expected_output_mcore
|
||||
$IDF_PATH/tools/esp_app_trace/sysviewtrace_proc.py -j -b sysview_tracing_heap_log.elf heap_log_mcore.svdat &> expected_output_mcore.json
|
||||
```
|
@ -1,88 +0,0 @@
|
||||
/* Blink Example
|
||||
|
||||
This example code is in the Public Domain (or CC0 licensed, at your option.)
|
||||
|
||||
Unless required by applicable law or agreed to in writing, this
|
||||
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||
CONDITIONS OF ANY KIND, either express or implied.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
#include "driver/gpio.h"
|
||||
#include "sdkconfig.h"
|
||||
#include "esp_heap_trace.h"
|
||||
|
||||
/* Can use project configuration menu (idf.py menuconfig) to choose the GPIO
|
||||
to blink or you can edit the following line and set a number here.
|
||||
*/
|
||||
#define BLINK_GPIO CONFIG_BLINK_GPIO
|
||||
|
||||
void blink_task2(void *pvParameter)
|
||||
{
|
||||
TaskHandle_t task = (TaskHandle_t)pvParameter;
|
||||
|
||||
while(1) {
|
||||
if (xTaskNotifyWait(0, 0, NULL, portMAX_DELAY) != pdPASS) {
|
||||
printf("Failed to wait for main task!\n");
|
||||
return;
|
||||
}
|
||||
void *a = malloc(65);
|
||||
printf("Alloced 65 bytes @ %p\n", a);
|
||||
void *b = malloc(97);
|
||||
printf("Alloced 97 bytes @ %p\n", b);
|
||||
free(a);
|
||||
printf("Freed @ %p\n", a);
|
||||
b = malloc(11);
|
||||
printf("Alloced 11 bytes @ %p\n", b);
|
||||
b = malloc(24);
|
||||
printf("Alloced 24 bytes @ %p\n", b);
|
||||
free(b);
|
||||
printf("Freed @ %p\n", b);
|
||||
if (xTaskNotify(task, 0, eNoAction) != pdPASS) {
|
||||
printf("Failed to notify main task!\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void blink_task(void *pvParameter)
|
||||
{
|
||||
TaskHandle_t task = 0;
|
||||
|
||||
if(heap_trace_init_tohost() != ESP_OK) {
|
||||
printf("Failed to init heap trace!\n");
|
||||
return;
|
||||
}
|
||||
xTaskCreatePinnedToCore(&blink_task2, "blink_task2", 2048, xTaskGetCurrentTaskHandle(), 5, &task, 1);
|
||||
|
||||
while(1) {
|
||||
heap_trace_start(HEAP_TRACE_ALL);
|
||||
if (xTaskNotify(task, 0, eNoAction) != pdPASS) {
|
||||
printf("Failed to notify slave task!\n");
|
||||
return;
|
||||
}
|
||||
void *a = malloc(64);
|
||||
printf("Alloced 64 bytes @ %p\n", a);
|
||||
void *b = malloc(96);
|
||||
printf("Alloced 96 bytes @ %p\n", b);
|
||||
free(a);
|
||||
printf("Freed @ %p\n", a);
|
||||
b = malloc(10);
|
||||
printf("Alloced 10 bytes @ %p\n", b);
|
||||
b = malloc(23);
|
||||
printf("Alloced 23 bytes @ %p\n", b);
|
||||
free(b);
|
||||
printf("Freed @ %p\n", b);
|
||||
if (xTaskNotifyWait(0, 0, NULL, portMAX_DELAY) != pdPASS) {
|
||||
printf("Failed to wait for slave task!\n");
|
||||
return;
|
||||
}
|
||||
heap_trace_stop();
|
||||
}
|
||||
}
|
||||
|
||||
void app_main(void)
|
||||
{
|
||||
xTaskCreatePinnedToCore(&blink_task, "blink_task", 2048, NULL, 5, NULL, 0);
|
||||
}
|
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -6,14 +6,14 @@ flushregs
|
||||
b heap_trace_start
|
||||
commands
|
||||
clear heap_trace_start
|
||||
mon esp32 sysview start file://cpu0.svdat file://cpu1.svdat
|
||||
mon esp sysview start file://heap_log0.svdat file://heap_log1.svdat
|
||||
c
|
||||
end
|
||||
|
||||
b heap_trace_stop
|
||||
commands
|
||||
clear heap_trace_stop
|
||||
mon esp32 sysview stop
|
||||
mon esp sysview stop
|
||||
end
|
||||
|
||||
c
|
||||
|
19
tools/esp_app_trace/test/sysview/gdbinit-mcore
Normal file
19
tools/esp_app_trace/test/sysview/gdbinit-mcore
Normal file
@ -0,0 +1,19 @@
|
||||
target remote :3333
|
||||
|
||||
mon reset halt
|
||||
maintenance flush register-cache
|
||||
|
||||
b heap_trace_start
|
||||
commands
|
||||
clear heap_trace_start
|
||||
mon esp sysview_mcore start file://heap_log_mcore.svdat
|
||||
c
|
||||
end
|
||||
|
||||
b heap_trace_stop
|
||||
commands
|
||||
clear heap_trace_stop
|
||||
mon esp sysview_mcore stop
|
||||
end
|
||||
|
||||
c
|
BIN
tools/esp_app_trace/test/sysview/heap_log0.svdat
Normal file
BIN
tools/esp_app_trace/test/sysview/heap_log0.svdat
Normal file
Binary file not shown.
BIN
tools/esp_app_trace/test/sysview/heap_log1.svdat
Normal file
BIN
tools/esp_app_trace/test/sysview/heap_log1.svdat
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -2,14 +2,14 @@
|
||||
|
||||
{ python -m coverage debug sys \
|
||||
&& python -m coverage erase &> output \
|
||||
&& python -m coverage run -a $IDF_PATH/tools/esp_app_trace/sysviewtrace_proc.py -d -p -b test.elf cpu0.svdat cpu1.svdat &>> output \
|
||||
&& python -m coverage run -a $IDF_PATH/tools/esp_app_trace/sysviewtrace_proc.py -d -p -b sysview_tracing_heap_log.elf heap_log0.svdat heap_log1.svdat &>> output \
|
||||
&& diff output expected_output \
|
||||
&& python -m coverage report \
|
||||
; } || { echo 'The test for sysviewtrace_proc has failed. Please examine the artifacts.' ; exit 1; }
|
||||
|
||||
{ python -m coverage debug sys \
|
||||
&& python -m coverage erase &> output.json \
|
||||
&& python -m coverage run -a $IDF_PATH/tools/esp_app_trace/sysviewtrace_proc.py -j -b test.elf cpu0.svdat cpu1.svdat &>> output.json \
|
||||
&& python -m coverage run -a $IDF_PATH/tools/esp_app_trace/sysviewtrace_proc.py -j -b sysview_tracing_heap_log.elf heap_log0.svdat heap_log1.svdat &>> output.json \
|
||||
&& diff output.json expected_output.json \
|
||||
&& python -m coverage report \
|
||||
; } || { echo 'The test for sysviewtrace_proc JSON functionality has failed. Please examine the artifacts.' ; exit 1; }
|
||||
|
Loading…
x
Reference in New Issue
Block a user