我想从设备的SRAM区域运行我的程序。
我似乎很清楚,我必须执行以下步骤:
SCB->VTOR
(位于0xE000ED08
)以指向SRAM区域的开头,因为这是我的向量表所在的位置:0x20000000
不幸的是,每当我在OpenOCD中发出reset init
命令时,SCB->VTOR
的值都会被清除。因此,堆栈指针初始化值和重置处理程序地址是从0x00000000
而不是0x20000000
获取的。
如何让我的STM32F4从0x20000000
获取向量表?
答案 0 :(得分:2)
只需手动加载来自SP
(= VTOR)的0x20000000
(MSP)和来自PC
(= VTOR + 4)的0x20000004
。
reset init
命令通常会重置整个芯片而不是核心 - 而VTOR
即使在那时也会被初始化为零。