微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 《Cortex-M0权威指南》之体系结构---程序映像和启动流程

《Cortex-M0权威指南》之体系结构---程序映像和启动流程

时间:01-12 来源:互联网 点击:

我们先来看看程序映像。

  

通常,Cortex-M0处理器的程序映像时从地址0x00000000处开始的。

程序映像开始处时向量表,其中包含了异常的其实地址(向量),每个中断向量的地址都等于“异常号*4”,比如,外部IRQ0的异常类型为16,因此其向量地址为16*4=0x40。这些向量的最低位都被置为1,以表示使用thumb指令。向量表的大小由实际使用的中断个数决定。

向量表中包含了MSP的初始值,它存储在向量表的头四个字节。

复位时,处理器首先读取向量表的前两个字(8个字节),第一个字为MSP的初始值,第二个字为复位向量,它表示程序执行的起始地址。

例如,如果启动代码位于地址0x000000C0,需要在复位向量处写入这个地址,并且将地址的最低位置为1,以表明当前为thumb代码,因此,地址0x00000004处的值为0x000000C1。在取得复位向量值后,处理器开始从这个地址处执行程序代码。

  

复位流程也会初始化MSP,假设内存位于0x20000000~0x20007FFF,可以将0x20008000写在地址0x00000000处,这样就实现了把主栈指针置于内存的顶部。

如果要使用PSP,在配置CONTROL寄存器切换栈指针前,必须首先通过软件代码将其初始化,因为复位流程只初始化MSP,不初始化PSP。

  

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top