如何在不重置STM32 MCU的情况下查看正在运行的STM32 MCU的RAM内容?

问题描述 投票:0回答:2

我使用 IAR EW for ARM 和 STM32 MCU 开发了一个项目。对于一个问题,我需要检查正在运行的设备的 RAM 内容。如何在不重置设备的情况下做到这一点?因为重置后 RAM 将被重新初始化,并且我将丢失数据。

debugging embedded stm32 ram iar
2个回答
0
投票

如果您在 STM32CubeIDE 或 Visual Studio 等 IDE 中进行开发,它们有一些工具可以让您暂停程序执行并检查 RAM(可能需要对 Visual Studio 进行一些配置,不熟悉为 STM32 设置它)。或者,您可以使用 STM32CubeProgrammer 连接到 MCU,暂停程序执行并从那里检查内容。

如果您喜欢,您可以使用 GDB 从命令行进行所有调试。 STM32CubeIDE 调试工具几乎是预先配置为与 STM32 MCU 一起使用的 GDB 的 GUI 界面。

所有这些都需要一个硬件调试器(通常看起来像 USB 加密狗),将其连接到 MCU(ST-Link、J-Link 或其他)的 SWD/JTAG 引脚。 Nucleo板和其他STM32开发板通常在物理上集成有ST-Link调试器,因此您不需要获得单独的调试器(该调试器也可以与其他MCU一起使用)。


0
投票

片上 SRAM 将不会被重新初始化,除非您让运行时启动代码运行(在复位和

main()
之间执行)。

因此,您所需要做的就是在复位向量处设置断点并保持电源,然后您可以连接调试器并让它复位。它会在任何内容写入 SRAM 之前停止,只要保持电源,SRAM 的内容就会通过重置得以保留。

或者,您的调试器几乎可以肯定可以配置为在不声明重置的情况下进行连接(自从我使用 EWB 以来很长一段时间,所以我无法确切地告诉您如何操作 - 这就是用户手册的用途),这不仅可以保留SRAM,还有外设寄存器状态、NVIC 和核心寄存器在许多调试情况下可能都是必不可少的。

最终,最好的解决方案是从一开始就连接调试器来运行,这样您就可以简单地停止处理器来检查其状态,或者在大多数情况下,在处理器继续运行时查看内存“Luce”。

© www.soinside.com 2019 - 2024. All rights reserved.