ARM技术论坛
直播中

Liberal

7年用户 11经验值
擅长:嵌入式技术 控制/MCU 嵌入式技术 控制/MCU
私信 关注
[问答]

ARM CortexM3/M4 中断向量表重映射是否可以不进行重映射?

个人理解的是 对于M3来说规定了复位后起始地址必须是0x00000000, 而因为0x0800 0000对应的是实际FLASH的起始地址,所以boot0,boot1为0时0x00000000重映射到了0x08000000,对于内核来说复位后执行的地址还是0x00000000,但是由于重映射的关系,0x00000000与0x08000000这两个逻辑地址都对应的是实际FLASH的起始地址,所以0x00000000与0x08000000内容是一样的。
疑问是:如果上述理解没问题,那么对于中断向量表来说,为什么还需要重映射呢?发生中断的时候直接在0x00000000这个地址上不也可以找到向量表中中断的入口地址吗?为什么还需要重映射到0x080000000,而对于从SRAM启动而言 0x20000000与0x00000000地址上内容一样,是不是同样的道理?

或者说是不是 比如程序是在0x0800 0100地址开始的烧录,这个时候复位到0的时候,由于STM32所作的重映射是0x00000000到0x080000000,硬件已经决定的,所以这个时候0地址上虽然映射到flash,但是flash上存放内容是从0x0800 0100开始的,所以找到不向量表的入口地址,此时就才需要用到向量表重映射(SCB->VTOR)?

更多回帖

发帖
×
20
完善资料,
赚取积分