新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Cortex-M3內核的異常處理機制及其新技術研究

        Cortex-M3內核的異常處理機制及其新技術研究

        作者: 時間:2013-05-09 來源:網絡 收藏

        2.2 的返回

        CortexM3返回的操作[2]如圖3所示。當從中返回時,器可能會處于以下情況之一[4]:

        ◆ 尾鏈到一個已掛起的異常,該異常比棧中所有異常的優先級都高;

        ◆ 如果沒有掛起的異常,或是棧中最高優先級的異常比掛起的最高優先級異常具有更高的優先級,則返回到最近一個已壓棧的ISR;

        ◆ 如果沒有異常已經掛起或位于棧中,則返回到Tread模式。

        為了應對異常返回階段可能遇到的新的更高優先級異常,CortexM3支持完全基于硬件的尾鏈,簡化了激活的和未決的異常之間的移動,能夠在兩個異常之間沒有多余的狀態保存和恢復指令的情況下實現backMtoMback。尾鏈發生的2個條件[2]:異常返回時產生了新的異常;掛起的異常的優先級比所有被壓棧的異常的優先級都高。

        尾鏈發生后,CortexM3過程如圖3中尾鏈分支所示。這時,CortexM3處理器終止正在進行的出棧操作并跳過新異常進入時的壓棧操作,同時通過Ibus立即取出掛起異常的向量。在退出前一個ISR返回操作6個周期后,開始執行尾鏈的ISR.

        圖3 異常的返回

        3 CortexM3和ARM7中斷控制器比較

        在過去的十年中,基于ARMv4的ARM7系列微控制器廣泛應用在各個領域。在ARM7系列中,并沒有對中斷進行獨立的服務,而是通過犧牲處理器一定的性能來換取有效的中斷響應和中斷處理。CortexM3高度耦合的NVIC可以實現硬件中斷處理,同時支持遲到和尾鏈,加快了異常響應的速度,充分發揮了處理器的性能。

        圖4 為CorexM3和ARM7在中斷控制器結構方面的差異。

        比較可知,NVIC是直接作為CortexM3處理器的一部分,集成在處理器核內部;而VIC只是游離在ARM7的外圍,這樣就必然占用資源,影響了處理速度。CortexM3和ARM7中斷控制器在功能和實現方式上的差異如表2所列。

        圖4 CortexM3和ARM7中斷控制器結構的差異

        表2 CortexM3和ARM7中斷控制器功能和實現方式的差異

        3.1 處理器響應單個異常

        CortexM3和ARM7異常處理過程如圖5所示。

        圖5 CortexM3和ARM7異常處理過程

        ARM7處理器的異常開銷:

        CortexM3處理器的異常開銷:

        其中,TARM7為ARM7處理異常的時間開銷;TARM7_PUSH和TARM7_POP為ARM7進行壓棧和出棧的操作時間;TCoretxM3為CortexM3處理異常的時間開銷;TM3_PUSH和TM3_POP為CortexM3進行壓棧和出棧的操作時間。

        可見,由于采用處理器狀態硬件保存,CortexM3處理器少用了18周期,節省了42.8%的異常開銷。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 怀柔区| 洞口县| 渝中区| 特克斯县| 伊金霍洛旗| 兴安县| 论坛| 永兴县| 伽师县| 辛集市| 老河口市| 六枝特区| 安溪县| 商河县| 彭水| 怀来县| 大化| 宜兰市| 泽库县| 嘉峪关市| 班玛县| 澎湖县| 彝良县| 绥阳县| 辰溪县| 祁门县| 晋州市| 县级市| 友谊县| 东城区| 海丰县| 通州区| 富宁县| 满城县| 潜江市| 天柱县| 肃宁县| 公主岭市| 玉林市| 彭山县| 平安县|