gpt4 book ai didi

embedded - 使用 openOCD 在 Cortex-M (STM32F4) 上提取 ETB 轨迹

转载 作者:行者123 更新时间:2023-12-03 21:56:49 33 4
gpt4 key购买 nike

STM32F4 发现 (Cortex-M4) 具有 ETB,一个存储指令跟踪的缓冲区。如何使用 OpenOCD 和片上 st-link 调试器从 ETB 中提取跟踪?

我对 SWO/SWD 有点困惑。我应该使用什么?另外,我是否需要任何额外的硬件来提取痕迹?

谢谢

最佳答案

恐怕我从来没有听说过
STM32F4
包括 嵌入式跟踪缓冲区 (ETB) 在已实现的子集中
ARM core
及其
CoreSight features .
我认为这是因为 ETB 是一个可选功能,而 ST 已决定 不要在其 STM32F4 Controller 中配置/实现此 ETB 选项 以及它们嵌入的 ARM 内核。

我查阅了 STM32F4xx 系列上层代表的编程/引用手册和数据表,我没有找到任何关于 ETB 的信息,这似乎证实了这个假设。

现在,如果想要从自己的 MCU 流出跟踪数据,ETB 并不是唯一的选择:

  • STM32F4 Controller 都有一个 指令跟踪宏单元 (ITM) ,它可以提供软件定义的 char 输出流或数据值的快照或程序计数器,它们可以在断点处或仅定期收集,在 的帮助下数据观察点/跟踪 (DWT) 单元。
    您可以使用 ITM
  • 使用字符输出 ( printf() )
  • 检测应用程序
  • 分析您的应用程序
  • 通过跟踪程序断点或数据观察点来检查软件的某些属性/状态流

  • ITM 可通过 使用SWO pin,使用任何适配器硬件,如任何版本的 ST-Link、j-Link、uLink-* 等。
    它是一个适当的跟踪接口(interface),因为它无需在断点处停止 CPU 即可工作,因此检查不会破坏系统的实时属性。
  • 许多 STM32F4 Controller (AFAIK,具有 >= 100 个引脚的 Controller )包括 嵌入式跟踪宏单元 (ETM) ,它能够跟踪每个 CPU 周期的程序计数器 (PC) 和数据,因此您可以使用它来跟踪 Controller 的整个控制流(和数据流),也无需在任何断点处停止它。

    要跟踪的大量数据(确保您有空闲的 USB3 端口...)只能通过 GPIOE 组周围的同步端口接口(interface)以有用的方式传递(备用函数 TRACECLK+TRACED0/1/2/3 => 总共 5 个引脚),连接到 跟踪端口接口(interface)单元 (TPIU) 在 ETM 旁边。

    为了使用这项技术,您需要更昂贵的调试适配器变体,例如 j-Trace、uLink-Pro 或 Lauterbach。我知道的最便宜的支持 ETM 的适配器(虽然还没有使用过)是 PDQlogic 的 QTrace,起价约为 379 英镑。其他的售价约为 1-4 k£/k€/k$。


  • 你的问题听起来告诉我你可能刚刚开始编程STM32。因此,我建议您购买内置 ST-Link 的开发板。这是获得(首先运行 SWD 调试,然后)运行 SWO 跟踪的最便宜的解决方案。 Atollic 博客有一个很好的介绍如何快速做到这一点。

    关于embedded - 使用 openOCD 在 Cortex-M (STM32F4) 上提取 ETB 轨迹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61530525/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com