中断向量表的重映设

  ARM架构的程序都是从0x00地址开始启动的。

  程序中大部分包含BootLoader和APP两部分程序。

  上电时,程序首先在BootLoader中运行,此时的中断向量表在flash的起始地址,即:0x0800 0000,当程序需要从BootLoader跳转的App中执行的时候,需要把中断向量表重映设到APP的起始部分,例如:0x0800 1000.此时从该地址+4取到reset_handler的回调程序,开始执行App程序。

  有一点需要注意,在debug的时候,程序也不是直接从0x0800 1000 开始执行,而是从0x0800 0000开始执行的,执行BootLoader的程序时跳转到App的reset_handler中。

  SCB->VTOR = (uint32_t)fw_addr;

你可能感兴趣的:(中断向量表的重映设)