如何自动从STM32CubeIDE读取TraceX?

为了使TraceX自动获取信息,我们可以创建一个批处理文件,并在STM32CubeIDE的调试会话中运行它


球门:使用X-CUBE-AZRTOS-H7为STM32CubeIDE添加TraceX支持,并使其自动获取缓冲区
尽管该示例使用NUCLEO-H223ZG,但您可以对其他基于STM32H7的板使用相同的步骤。主要区别通常是引脚输出和时钟配置。
这篇文章将向您展示如何在已经使用ThreadX的简单项目中添加TraceX支持使用X-CUBE-AZRTOS-H7软件包。
TraceX允许对固件执行过程中发生的线程序列进行事后分析,有关如何在没有自动部件的情况下添加它的更多信息,请参阅本文:
 
  • 先决条件:

    • 使用Microsoft的应用商店安装TraceX
    • 安装STM32CubeIDE和软件包X-CUBE-AZRTOS-H7
    • 安装STM32Cube编程器
    • 在STM32CubeIDE中有一个工作的ThreadX项目,该项目使用软件包X-CUBE-AZRTOS-H7或类似软件
      1. 你可以参考这篇关于如何从头开始创建的文章
    • 有一个具有TraceX功能的工作项目
 
  • 如何使其发挥作用:

 
  1. 在启用TraceX和ThreadX的情况下打开STM32CubeIDE项目,然后转到调试配置:

此时,选择应用程序并单击“调试器”选项卡:

向下滚动并选中Shared STLINK(共享STLINK)选项:

此选项允许您将ST-LINK与用于调试的STM32CubeIDE一起使用,同时与可以读取跟踪缓冲区内容的STM32CubeProgrammer一起使用。
 
  1. 现在,我们需要将用于跟踪的缓冲区放在一个固定的内存区域中,这样我们就可以知道地址,并且以后可以很容易地为STM32CubeProgram找到和映射地址

为了做到这一点,我们需要编辑链接器脚本来添加它。如果您使用的是本文中的相同设置,则此步骤已经实现。

确保用于跟踪的缓冲区放置在这个新创建的部分中,这可以通过使用__attribute来完成__
 
  1. 创建一个*.bat文件,在本例中,它将被称为“trace_read.bat”。请确保将其放置在与STM32CubeIDE项目的*.IOC文件/根文件夹相同的位置

trace_read.bat的内容假定STM32CubeProgramer安装路径为默认路径c:\Program Files\STMicroelectronics\STM32Cube\STM32CuboProgramer\,如果不是这样,请确保正确编辑。
trace_read.bat的内容是:
“c:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgramer\bin\STM32_Programer_CLI.exe”-c端口=SWD模式=HOTPLUG共享-u 0x24000000 64000。\调试\tracex.bin

复制\调试\tracex.bin.\Debug\tracex.trx

解释所使用的命令:
该命令的第一部分只是将当前目录设置为STM32CubeProgrammer的安装文件夹
第二部分命令调用STM32CubeProgramer CLI,并使用SWD接口在不重置MCU的情况下进行连接,因此设置为HOTPLUG,并且由于ST-LINK与STM32CubIDE共享,因此还添加了以下信息:
-
c端口=SWD模式=共享热插拔

这将读取从地址0x24000000开始的64000个字节,并将其存储到文件中。\调试\tracex.bin
-
u 0x24000000 64000。\调试\tracex.bin
  1. 进入调试模式并运行应用程序,一段时间后,跟踪缓冲区将随着应用程序的进展而填充,因此您可以在调试时运行trace_read.bat来创建tracex.trx(tracex文件)
    1. 双击trace_read.bat可以调用它
    2. 您可以通过首先发出cmd.exe来调用它
    1. 您可以从STM32CubeIDE中打开本地控制台

在左下角,找到并单击以创建新的命令行管理控制台:

选择本地连接:

在终端上,将目录更改为项目文件夹中的目录,然后从中调用trace_read.bat:
 
  1. 打开TraceX并加载TraceX.trx并享受


 
  • 有用的链接以下为:

 
  • STM32管:https://www.st.com/en/development-tools/stm32cubeide.html
  • STM32Cube编程器:https://www.st.com/en/development-tools/stm32cubeprog.html
  • 核子-H723ZG:https://www.st.com/en/evaluation-tools/nucleo-h723zg.html
  • ThreadX用户指南https://docs.microsoft.com/en-us/azure/rtos/threadx/about-this-guide
  • ThreadX api描述https://docs.microsoft.com/en-us/azure/rtos/threadx/chapter4
  • Github:https://github.com/STMicroelectronics/x-cube-azrtos-h7
  • TraceX用户指南:https://docs.microsoft.com/en-us/azure/rtos/tracex/
  • TraceX文章:https://community.st.com/s/article/how-can-i-add-tracex-support-in-stm32cubeide
 
  • 结论:

在应用程序中添加TraceX包括:
    • 在STM32CubeMX/STM32CubeIDE中添加ThreadX组件
    • 添加TraceX支持并在STM32CubeMX/STM32CubeIDE中应用次要配置
    • 从STM32CubeMX/STM32CubeIDE生成代码
      1. 这将使用所有需要的文件更新项目结构
    • 创建将在固件执行期间存储跟踪的缓冲区的大小
    • 使用STM32CubeProgrammer自动导出该数据,以便在TraceX上进行分析
    • 玩得高兴