STM32:从SRAM引导和获取向量表

标签 stm32 openocd

我想从设备的 SRAM 区域运行我的程序。

我似乎很清楚,我必须执行以下步骤:

  1. 修改向量表偏移寄存器SCB->VTOR(位于0xE000ED08)以指向SRAM区域的开头,因为那是我的向量表所在的位置位于:0x20000000
  2. 重置设备,以便它再次获取堆栈指针初始化值和重置处理程序地址。

不幸的是,每当我在 OpenOCD 中发出 reset init 命令时,SCB->VTOR 的值就会被清除。因此,堆栈指针初始化值和重置处理程序地址是从 0x00000000 而不是 0x20000000 获取的。


问题

如何让我的 STM32F4 从 0x20000000 获取向量表?

最佳答案

只需从 0x20000000 (=VTOR) 加载 SP (MSP) 并从 0x20000004 加载 PC ( =VTOR+4) 手动。

reset init 命令通常会重置整个芯片,而不仅仅是内核 - 即使如此,VTOR 也会初始化为零。

关于STM32:从SRAM引导和获取向量表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28178775/

相关文章:

c - eclipse /GDB : How to set an automatic breakpoint after hardware reset?

rust - 一个二进制文件在断点处停止,另一个没有 - 没有定义断点

stm32 - 如何在STM32F4中使用备份SRAM作为EEPROM

c - 在 stm32 微 Controller 上导入 zlib 给出错误 Type undefined reference to `gzclose'

无法在stm32的嵌入式c中使用sleep()

stm32l476 ADC 没有准备好

stm32 - "No ST-LINK detected"错误消息,当尝试与 ST-LINK 实用程序连接时

c - 使用 HAL 时如何删除 STM32F405RG 中的内部闪存页面(不是扇区!)?

debugging - 使用 openocd 闪存和调试 STM32F7 发现

stm32f4 - Openocd如何将选项字节写入STM32F4