《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。軟件

 

相關文章
相關標籤/搜索