SEGGER SystemView via UART in IDF v5.0
Posted: Wed Jun 22, 2022 8:16 am
I used SystemView in IDF v4.4, managing to pull a trace via JTAG using openocd as described in the documentation: (https://docs.espressif.com/projects/esp ... nd-options). openocd and gdb were flaky and capturing traces was troublesome. I was intrigued to see that the UART transport has been added to app_trace in IDF v5.0. This is my experience trying to use it:
Setup:
Development Kit: None
Module or chip used (2):
- ESP32-C3
-- TX/RX pins tried: (14,13), (13,14), (8,9), (9,8)
- ESP32-WROOM-32
-- TX/Rx pins tried: (12,13)
IDF version (run git describe --tags to find it): v5.0-dev-3424-gbb23d783c0
Build System: idf.py
Compiler version (run xtensa-esp32-elf-gcc --version to find it):
riscv32-esp-elf-gcc (crosstool-NG esp-2022r1-RC1) 11.2.0
Operating System: Linux
SEGGER SystemView Version: V3.32
Program: examples/get-started/hello_world
Selecting Target->Start Recording in SEGGER SystemView sends some data on the UART1 (seen with oscilloscope) but the ESP32 doesn't respond. I've confirmed that UART1 is physically connected correctly by redirecting console logs to it (after first disabling Application Level Tracing).
I've tried a few different baud rates and pin combinations. Has anyone used Application Level Tracing over UART successfully?
Relevant sdkconfig:
Setup:
Development Kit: None
Module or chip used (2):
- ESP32-C3
-- TX/RX pins tried: (14,13), (13,14), (8,9), (9,8)
- ESP32-WROOM-32
-- TX/Rx pins tried: (12,13)
IDF version (run git describe --tags to find it): v5.0-dev-3424-gbb23d783c0
Build System: idf.py
Compiler version (run xtensa-esp32-elf-gcc --version to find it):
riscv32-esp-elf-gcc (crosstool-NG esp-2022r1-RC1) 11.2.0
Operating System: Linux
SEGGER SystemView Version: V3.32
Program: examples/get-started/hello_world
Selecting Target->Start Recording in SEGGER SystemView sends some data on the UART1 (seen with oscilloscope) but the ESP32 doesn't respond. I've confirmed that UART1 is physically connected correctly by redirecting console logs to it (after first disabling Application Level Tracing).
I've tried a few different baud rates and pin combinations. Has anyone used Application Level Tracing over UART successfully?
Relevant sdkconfig:
Code: sdkconfig Select all
#
# Application Level Tracing
#
# CONFIG_APPTRACE_DEST_JTAG is not set
CONFIG_APPTRACE_DEST_NONE=y
CONFIG_APPTRACE_DEST_UART=y
CONFIG_APPTRACE_DEST_UART_NOUSB=y
CONFIG_APPTRACE_DEST_UART1=y
# CONFIG_APPTRACE_DEST_UART2 is not set
# CONFIG_APPTRACE_DEST_UART_NONE is not set
CONFIG_APPTRACE_UART_TX_GPIO=12
CONFIG_APPTRACE_UART_RX_GPIO=13
CONFIG_APPTRACE_UART_BAUDRATE=460800
CONFIG_APPTRACE_UART_RX_BUFF_SIZE=128
CONFIG_APPTRACE_UART_TX_BUFF_SIZE=4096
CONFIG_APPTRACE_UART_TX_MSG_SIZE=128
CONFIG_APPTRACE_UART_TASK_PRIO=1
CONFIG_APPTRACE_ENABLE=y
CONFIG_APPTRACE_ONPANIC_HOST_FLUSH_TMO=-1
CONFIG_APPTRACE_POSTMORTEM_FLUSH_THRESH=0
#
# FreeRTOS SystemView Tracing
#
CONFIG_APPTRACE_SV_ENABLE=y
CONFIG_APPTRACE_SV_DEST_UART=y
CONFIG_APPTRACE_SV_DEST_CPU_0=y
# CONFIG_APPTRACE_SV_DEST_CPU_1 is not set
CONFIG_APPTRACE_SV_TS_SOURCE_GPTIMER=y
# CONFIG_APPTRACE_SV_TS_SOURCE_ESP_TIMER is not set
CONFIG_APPTRACE_SV_MAX_TASKS=16
CONFIG_APPTRACE_SV_BUF_WAIT_TMO=500
CONFIG_APPTRACE_SV_EVT_OVERFLOW_ENABLE=y
CONFIG_APPTRACE_SV_EVT_ISR_ENTER_ENABLE=y
CONFIG_APPTRACE_SV_EVT_ISR_EXIT_ENABLE=y
CONFIG_APPTRACE_SV_EVT_ISR_TO_SCHED_ENABLE=y
CONFIG_APPTRACE_SV_EVT_TASK_START_EXEC_ENABLE=y
CONFIG_APPTRACE_SV_EVT_TASK_STOP_EXEC_ENABLE=y
CONFIG_APPTRACE_SV_EVT_TASK_START_READY_ENABLE=y
CONFIG_APPTRACE_SV_EVT_TASK_STOP_READY_ENABLE=y
CONFIG_APPTRACE_SV_EVT_TASK_CREATE_ENABLE=y
CONFIG_APPTRACE_SV_EVT_TASK_TERMINATE_ENABLE=y
CONFIG_APPTRACE_SV_EVT_IDLE_ENABLE=y
CONFIG_APPTRACE_SV_EVT_TIMER_ENTER_ENABLE=y
CONFIG_APPTRACE_SV_EVT_TIMER_EXIT_ENABLE=y
# end of FreeRTOS SystemView Tracing
# end of Application Level Tracing