STM32F4发现ETM(Embedded Trace Macrocell)和Instrumentation Trace Macrocell(ITM)

Posted

技术标签:

【中文标题】STM32F4发现ETM(Embedded Trace Macrocell)和Instrumentation Trace Macrocell(ITM)【英文标题】:STM32F4 discovery ETM(Embedded Trace Macrocell) and Instrumentation Trace Macrocell(ITM) 【发布时间】:2019-09-07 22:28:12 【问题描述】:

我的应用程序在 stm32f4 发现板上运行。我想提取执行跟踪(特别是分支控制流)以及时间戳数据跟踪。我有以下问题:

    stm32f4 发现板没有调试连接器。我仍然可以使用 J-Link 或 J-trace 来提取跟踪信息吗?是否有任何其他调试工具可以推荐用于 stm32f4 发现板? 我想将跟踪数据输入 FPGA 进行监控。从调试器获得的跟踪数据(例如:J-trace)是否可以馈送到 FPGA 板?

感谢您提供的任何帮助。

【问题讨论】:

我希望为 ETMITM 添加标签,但它们不存在 AFAIS。有人可能会争辩说这些缩写过于具体。但是,它们是许多类型的 ARM Cortex CPU 通用的特定组件。请注意,stm32stm32f4stm32f4discovery... 【参考方案1】:

    您没有指定探索板的确切类型,但与一些(更昂贵的)评估板相比,大多数(全部?)探索板使用少于 100 个引脚的较小控制器封装,它们不提供同步 TPIU(跟踪数据)输出可用的端口。遗憾的是,这些端口通常无法在其他地方重新映射,ETM 数据只能通过 TPIU 输出。有关详细信息,请参阅数据表中的引脚规范 - TPIU 引脚通常位于 PE 组中的某个位置。

    相比之下,ITM 也通过 SWO 引脚输出,该引脚存在于每个 STM32F4 封装中(它与 JTAG_TDO 复用,因此您必须使用 SWD 协议,而不是 JTAG) .遗憾的是,您没有通过 ITM 获得完整的执行跟踪(分支/控制流)。

    我没有使用 J-Trace 的个人经验,但根据在线文档,它非常好(我成功地将 Lauterbach uTrace 用于 ITM 和 ETM。)。问题不是 J-Trace 适配器而是控制器包。

    我不知道。但是,由于您为任何可用的支持 ETM 的调试/跟踪适配器支付的典型价格,制造商的支持应该会在您购买其中一个时愉快地帮助您解决此类问题。

【讨论】:

这是一个错误的答案,因为跟踪数据可以在其他引脚上可用 - 不仅是 PE。 好的,我更新了答案,在这一点上更准确。到目前为止,我看到的中档 STM32 都将 TPIU 修复映射到 GPIOE。 有什么例子吗?请具体 只是我最近接触到的示例的随机列表,所有这些在 PE 组都有它们的 TPIU 引脚:STM32F100、STM32F101、STM32F103、STM32F302/STM32F303、STM32F427、STM32F437、STM32F446、STM32L431、 STM32L476、STM32L552 跟踪在 SWO 引脚上仍然可用。您在 TPIU 寄存器中选择了它

以上是关于STM32F4发现ETM(Embedded Trace Macrocell)和Instrumentation Trace Macrocell(ITM)的主要内容,如果未能解决你的问题,请参考以下文章

[STM32F4裸机]STM32F4HAL库开发

STM32F4时钟配置分析

如何设置快速 STM32 F4 FSMC 来控制 STM32F4Discovery 板上的显示?

STM32F4 使用 JFlash 加密后无法再擦除了

STM32F4 使用 JFlash 加密后无法再擦除了

STM32F4系统时钟配置及描述