feat(esp_trace): add example to demonstrate external lib integration

This commit is contained in:
Erhan Kurubas
2026-05-15 14:55:02 +02:00
parent fbf57aeba1
commit 2d2d200ebd
18 changed files with 885 additions and 4 deletions

View File

@@ -557,9 +557,27 @@ Good instructions on how to install, configure, and visualize data in Impulse fr
If you have problems with visualization (no data is shown or strange behaviors of zoom action are observed), you can try to delete current signal hierarchy and double-click on the necessary file or port. Eclipse will ask you to create a new signal hierarchy.
Application Examples
""""""""""""""""""""
- :example:`system/sysview_tracing` demonstrates how to trace FreeRTOS task and system events using SEGGER SystemView.
- :example:`system/sysview_tracing_heap_log` demonstrates heap allocation tracing alongside SystemView events.
.. _app_trace-gcov-source-code-coverage:
Gcov (Source Code Coverage)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
In ESP-IDF projects, code coverage analysis using gcov can be done with the help of `espressif/esp_gcov <https://components.espressif.com/components/espressif/esp_gcov>`_ managed component.
.. _app_trace-integrating-a-custom-trace-library:
Integrating a Custom Trace Library
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The ``esp_trace`` component exposes a stable extension point (``CONFIG_ESP_TRACE_LIB_EXTERNAL``) for plugging in a third-party trace recorder without patching ESP-IDF. An external component provides an encoder adapter (registered via ``ESP_TRACE_REGISTER_ENCODER()``) and a slim ``esp_trace_freertos_impl.h`` that injects the desired FreeRTOS trace hooks. The encoder vtable also offers optional ``start`` / ``stop`` / ``flush`` and ``take_lock`` / ``give_lock`` entries dispatched from the public :cpp:func:`esp_trace_start`, :cpp:func:`esp_trace_stop`, :cpp:func:`esp_trace_flush` API.
Application Examples
""""""""""""""""""""
- :example:`system/esp_trace` is a minimal copy-paste template that wires up an external encoder, demonstrates the FreeRTOS trace-hook include-chain contract, and covers cross-core serialization through the encoder lock.

View File

@@ -557,9 +557,27 @@ Start 子命令语法:
如果你在可视化方面遇到了问题未显示数据或者缩放操作异常可以尝试删除当前的信号层次结构再双击必要的文件或端口。Eclipse 会请求创建新的信号层次结构。
应用示例
""""""""
- :example:`system/sysview_tracing` 演示了如何使用 SEGGER SystemView 跟踪 FreeRTOS 任务和系统事件。
- :example:`system/sysview_tracing_heap_log` 演示了如何在 SystemView 事件的同时跟踪堆内存分配。
.. _app_trace-gcov-source-code-coverage:
Gcov源代码覆盖率
^^^^^^^^^^^^^^^^^^^^^^^^^^^
在 ESP-IDF 项目中,可以借助 `espressif/esp_gcov <https://components.espressif.com/components/espressif/esp_gcov>`_ 托管组件使用 gcov 进行代码覆盖率分析。
.. _app_trace-integrating-a-custom-trace-library:
集成自定义跟踪库
^^^^^^^^^^^^^^^^
``esp_trace`` 组件提供了稳定的扩展点 (``CONFIG_ESP_TRACE_LIB_EXTERNAL``),允许在不修改 ESP-IDF 的情况下接入第三方跟踪记录器。外部组件需提供一个编码器适配器(通过 ``ESP_TRACE_REGISTER_ENCODER()`` 注册)以及一个轻量的 ``esp_trace_freertos_impl.h``,用于注入所需的 FreeRTOS 跟踪钩子。编码器虚表还提供可选的 ``start`` / ``stop`` / ``flush````take_lock`` / ``give_lock`` 入口,由公共 API :cpp:func:`esp_trace_start`:cpp:func:`esp_trace_stop`:cpp:func:`esp_trace_flush` 调度。
应用示例
""""""""
- :example:`system/esp_trace` 是一个最简的复制粘贴模板,演示如何接入外部编码器、说明 FreeRTOS 跟踪钩子头文件的包含链约束,以及通过编码器锁实现多核序列化。