Cortex-M3 雙堆棧指針(MSP&PSP)

【雙堆棧指針(MSP&PSP)】

  • Cortex-M3內核中有兩個堆棧指針(MSP & PSP),但任何時刻只能使用到其中一個。
  • 復位後處於線程模式特權級,默認使用MSP。
  • 通過SP訪問到的是正在使用的那個指針,可以通過MSR/MRS指令訪問指定的堆棧指針。
  • 通過設置CONTROL寄存器的bit[1]選擇使用哪個堆棧指針。CONTROL[1]=0選擇主堆棧指針;CONTROL[1]=1選擇進程堆棧指針。
  • Handler模式下,只允許使用主堆棧指針MSP。

【雙堆棧指針在OS中的應用】
典型的OS環境中,MSP和PSP的用法如下:

  • MSP用於OS內核和異常處理。
  • PSP用於應用任務。

 

 

 

 

 

 

 

 

 

【雙堆棧指針的初始化】

  • 系統復位時從0x00000000處讀出MSP的初始值。
  • 在OS初始化時,對PSP進行初始化。


【PSP指針在不同任務間切換】

  • 用任務A的SP執行入棧操作,並保存任務A的SP。
  • 設置PSP指向任務B的棧空間,用任務B的SP執行出棧,隨後開始執行任務B。

 

 

 


 

  參考摘錄:

《Cortex-M內核系列和STM32-講座2教程.pdf》

《ARM Cortex-M3權威指南.pdf》

發佈了192 篇原創文章 · 獲贊 151 · 訪問量 97萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章