详细讲解,很多地方都有,我简单总结下:
1.重映射针对的是什么对象?
主要针对的是中断向量表。系统上电或复位后,处理器将从地址0x0处取第一条指令,因此,上电的时候,地址0x0处必须是非易失性的ROM或FLASH。
2.为什么要重映射?
因为系统复位第一件事就是找到中断向量表,然后通过向量表的跳转指令去找初始化代码,进行初始化。中断向量和初始化代码都在ROM中,但是ROM不能改写,读取速度也慢,所以需要把中断向量表和初始化代码映射到RAM,这样中断向量表的某个中断源的函数地址就可以被赋值了,而且可以流畅运行。做法就是把RAM重新映射到地址0x0处。
所以有下面的代码
但不是所有芯片都会用重映射的方法的,详情看http://blog.csdn.net/yuanzhangmei1/article/details/8395028
3.如下图,重映射前,0x0是在ROM中,映射后ROM改为0x4000000,而0x0映射在RAM中。vector就是中断向量表,把它放在32位的RAM中,可以加快读取速率,加快中断处理的响应速度。
以上图片转自《ARM体系结构与编程》第12章