ARM M3中的VTOR使用

Jac*_*e.Y 1 embedded arm cortex-m3

我想知道在基于ARM M3的MCU上,使用VTOR寄存器重定位向量表有什么好处?我理解的原因是:

  1. 需要在运行时更改向量表,并且默认地址(0x0是只读)
  2. 从SRAM读取(假设它重新定位到SRAM区域的开头)可能比闪存区域更快?

这是否意味着如果在编译期间定义并知道所有中断处理程序,则根本不需要使用VTOR?

Rea*_*Rik 6

原因很多.不过我认为可能有三个主要原因.

  1. 您正在使用引导加载程序,它将基于0x00000000.当引导程序完成其内容时,它会跳转到应用程序.应用程序可能希望拥有自己的向量表,以便引导加载程序可以在启动应用程序之前设置地址.

  2. 您需要一个基于RAM的向量表,以便您可以在运行时安装不同的处理程序.

  3. 在运行之前,应用程序可能会从某些外部ROM加载到RAM中.