如何自动从STM32CubeIDE读取TraceX?
如何自动从STM32CubeIDE读取TraceX?为了使TraceX自动获取信息,我们可以创建一个批处理文件,并在STM32CubeIDE的调试会话中运行它。目标:使用X-CUBE-AZRTOS-H7将TraceX支持添加到STM32CubeIDE,并使。。。
如何自动从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或类似软件
- 你可以参考这篇关于如何从头开始创建的文章
- 有一个具有TraceX功能的工作项目
-
如何使其发挥作用:
- 在启用TraceX和ThreadX的情况下打开STM32CubeIDE项目,然后转到调试配置:
此时,选择应用程序并单击“调试器”选项卡:
向下滚动并选中Shared STLINK(共享STLINK)选项:
此选项允许您将ST-LINK与用于调试的STM32CubeIDE一起使用,同时与可以读取跟踪缓冲区内容的STM32CubeProgrammer一起使用。
- 现在,我们需要将用于跟踪的缓冲区放在一个固定的内存区域中,这样我们就可以知道地址,并且以后可以很容易地为STM32CubeProgram找到和映射地址
为了做到这一点,我们需要编辑链接器脚本来添加它。如果您使用的是本文中的相同设置,则此步骤已经实现。
确保用于跟踪的缓冲区放置在这个新创建的部分中,这可以通过使用__attribute来完成__
- 创建一个*.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
- 进入调试模式并运行应用程序,一段时间后,跟踪缓冲区将随着应用程序的进展而填充,因此您可以在调试时运行trace_read.bat来创建tracex.trx(tracex文件)
- 双击trace_read.bat可以调用它
- 您可以通过首先发出cmd.exe来调用它
-
- 您可以从STM32CubeIDE中打开本地控制台
在左下角,找到并单击以创建新的命令行管理控制台:
选择本地连接:
在终端上,将目录更改为项目文件夹中的目录,然后从中调用trace_read.bat:
- 打开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生成代码
- 这将使用所有需要的文件更新项目结构
- 创建将在固件执行期间存储跟踪的缓冲区的大小
- 使用STM32CubeProgrammer自动导出该数据,以便在TraceX上进行分析
- 玩得高兴