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

转载请注明来源:cuixiaolei的技术博客


  咱们先来看看程序映像。ui

  

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

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

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

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

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

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

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

 

相关文章
相关标签/搜索