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

STM32: Booting and fetching vector table from SRAM

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

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

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

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

获取的

问题

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

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

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