Cortex―M3的異常處理機制研究
2.2 異常的返回
Cortex-M3異常返回的操作如圖3所示。當從異常中返回時,處理器可能會處于以下情況之一:
◆尾鏈到一個已掛起的異常,該異常比棧中所有異常的優(yōu)先級都高;
◆如果沒有掛起的異常,或是棧中最高優(yōu)先級的異常比掛起的最高優(yōu)先級異常具有更高的優(yōu)先級,則返回到最近一個已壓棧的ISR;
◆如果沒有異常已經(jīng)掛起或位于棧中,則返回到Tread模式。
為了應對異常返回階段可能遇到的新的更高優(yōu)先級異常,Cortex―M3支持完全基于硬件的尾鏈機制,簡化了激活的和未決的異常之問的移動,能夠在兩個異常之間沒有多余的狀態(tài)保存和恢復指令的情況下實現(xiàn)back―to―back處理。尾鏈發(fā)生的2個條件:異常返回時產(chǎn)生了新的異常;掛起的異常的優(yōu)先級比所有被壓棧的異常的優(yōu)先級都高。
尾鏈發(fā)生后,Cortex―M3處理過程如圖3中尾鏈分支所示。這時,Cortex―M3處理器終止正在進行的出棧操作并跳過新異常進入時的壓棧操作,同時通過Ibus立即取出掛起異常的向量。在退出前一個ISR返回操作6個周期后,開始執(zhí)行尾鏈的ISR。
3 Cortex―M3和ARM7中斷控制器比較
在過去的十年中,基于ARMv4的ARM7系列微控制器廣泛應用在各個領域。在ARM7系列中,并沒有對中斷進行獨立的服務,而是通過犧牲處理器一定的性能來換取有效的中斷響應和中斷處理機制。Cortex―M3高度耦合的NVIC可以實現(xiàn)硬件中斷處理,同時支持遲到和尾鏈機制,加快了異常響應的速度,充分發(fā)揮了處理器的性能。圖4為Corex―M3和ARM7在中斷控制器結(jié)構(gòu)方面的差異。
評論