讀 “cortexM3” 權威指南 小記(二) --中斷具體行為及儲存系統

來源:互聯網
上載者:User

標籤:style   blog   http   使用   strong   資料   代碼   工作   

1,中斷異常的響應

當CM3 開始響應一個中斷時,會在它看不見的體內奔湧起三股暗流: 
    入棧:  把8 個寄存器的值壓入棧 ::響應異常的第一個行動,就是自動儲存現場的必要部分:依次把xPSR,  PC,  LR,  R12 以及R3‐ R0由硬體自動壓入適當的堆棧中:如果當響應異常時,當前的代碼正在使用PSP,則壓入PSP,即使用線程堆棧;否則壓入MSP,使用主堆棧。一旦進入了服務常式,就將一直使用主堆棧
    取向量:從向量表中找出對應的服務程式入口地址 ::當資料匯流排(系統匯流排)正在為入棧操作而忙得團團轉時,指令匯流排(I‐ Code匯流排)可不是涼快地坐著看熱鬧——它正在為響應中斷緊張有序地執行另一項重要的任務:從向量表中找出正確的異常向量,然後在服務程式的入口處預取指。入棧與取指這兩個工作能同時進行。
    選擇堆棧指標MSP/PSP,更新堆棧指標SP ,更新串連寄存器 LR ,更新程式計數器PC 

2.異常返回

當異常服務常式執行完畢後,需要很正式地做一個“異常返回”動作序列,從而恢複先前的系統狀態,才能使被中斷的程式得以繼續執行。從形式上看,有3 種途徑可以觸發異常
返回序列,如表所示;不管使用哪一種,都需要用到先前儲的LR 的值。

儲存空間的位帶操作

支援了位帶中,有兩個區中實現了位帶。其中一個是SRAM 區的最低1MB 範圍,第二個則是片內外設區的最低1MB 範圍。這兩個區中的地址除了可以像普通的 RAM 一樣使用外,它們還都有自己的“位帶別名區”,位帶別名區把每個位元膨脹成一個32位的字。當你通過位帶別名區訪問這些字時,就可以達到訪問原始位元的目的。

支援位帶操作的兩個記憶體區的範圍是: 
  0x2000_0000‐0x200F_FFFF(SRAM 區中的
  0x4000_0000‐0x400F_FFFF(片上外設區中的最低1MB )

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.