ESP 跟踪

[English]

概述

ESP-IDF 提供了一套跟踪系统,用于程序行为分析和调试。以较小开销从 ESP32 收集运行时数据,并将数据发送到主机。

该系统以 esp_trace 组件为中心。它提供公共跟踪 API,管理活动跟踪会话,并将跟踪编码器与跟踪传输连接起来。SEGGER SystemView、Gcov 和 apptrace 传输等跟踪功能都接入这一模型。

esp_trace 组件支持常用的跟踪格式和传输方式,并设计为可扩展。新的跟踪格式和传输可以在不修改 ESP-IDF 的情况下添加。有关设计的更多信息,请参阅 跟踪架构

选择适合你的路径

目标

参考文档

分析 FreeRTOS 任务/中断行为

SEGGER SystemView

发送/接收任意应用程序数据,或记录日志到主机

应用层跟踪传输

收集源代码覆盖率

Gcov

自动跟踪每次函数进入和退出

函数跟踪

集成第三方跟踪记录器

自定义跟踪库

选择传输

跟踪格式与传输可独立选择。请根据可用硬件选择主机链路:

  • apptrace(JTAG):吞吐量最高,并支持由主机发起的控制(start、stop 或 dump)。需要 JTAG 适配器以及主机上运行的 OpenOCD。适用于 SystemView 以及按需的 Gcov 转储。

  • apptrace(UART):使用空闲的 UART 而非调试探针,吞吐量低于 JTAG。请选择未被控制台占用的 UART。

主要特性

  • 自动初始化:跟踪在启动时自动配置

  • 多核支持:适用于单核和双核芯片

  • 可扩展:添加自定义跟踪格式或传输;参见 跟踪架构

快速入门:SystemView 跟踪

启用 SEGGER SystemView 跟踪以进行 FreeRTOS 系统分析:

  1. 在项目的 idf_component.yml 中添加 espressif/esp_sysview 依赖。

  2. 启用 CONFIG_ESP_TRACE_LIB_EXTERNAL 以选择外部跟踪库。

  3. 启用 CONFIG_ESP_TRACE_TRANSPORT_APPTRACE 以选择 apptrace 传输。

  4. 启用 CONFIG_APPTRACE_DEST_JTAG 以将数据目标设为 JTAG。

  5. 构建并烧录应用程序:

    idf.py build flash
    

有关 SystemView 的详细用法、OpenOCD 设置和主机端可视化,请参阅 基于 SEGGER SystemView 的系统行为分析

详细指南

相关文档

示例


此文档对您有帮助吗?