iT邦幫忙

2021 iThome 鐵人賽

DAY 12
0
Arm Platforms

30天從0開始探索嵌入式世界系列 第 12

Day12.進入 ARM 世界: ARM Cortex-M Exception Behavior

Nested Interrupts

Cortex-M3 和 NVIC 在硬體架構上支援(Nested Interrupt)巢狀中斷。

  • 當處理器正在處理一個Exception時,所有其他具有相同或更低priority 的 Exception 都會被 blocked。
  • 自動的stacking and unstacking,讓我們在巢狀中斷不會丟失原本registers的內容,但是我們還是要注意當巢狀中斷不斷加深可能會導致系統崩壞
  • 相同 Exception 是不能被 Reentrant 的,這可能會導致中斷延遲。

因此我們並不需要額外寫組合語言來支援,我們只需設定好每個 Exception 的 priority。

Tail chaining

低優先權的pending excptions,無需重複例外的前置作業,以串接的方式等候服務。

Late Arrival

高優先權的excptions ,只要能在前者轉換成active前抵達,就不需要以強佔的方是登場,此機制可以加速、並減少堆疊的使用。至於被插隊的低全中斷,NVIC將以Tail-chainging視之。

Exception Exit

當 exception handler 結束時,需要 Exception Exit (中斷返回)來恢復系統狀態,透過link register ($lr) 設置為 EXE_RETURN之值,該值告訴 ARM 轉回被 Exception 前的狀態。

這張圖很清楚的說明exception return做了甚麼事。

參考資料

Definitive Guide To the ARM Cortex-M3
手機裡的 ARM 處理器: 隱藏的精靈 Cortex-M


上一篇
Day11.進入 ARM 世界: ARM Cortex-M Exception Registers
下一篇
Day13.進入 ARM 世界: ARM Instruction Sets
系列文
30天從0開始探索嵌入式世界15

尚未有邦友留言

立即登入留言