• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > Cortex―M3的異常處理機制研究

    Cortex―M3的異常處理機制研究

    作者: 時間:2009-02-26 來源:網絡 收藏
    引 言
    是ARM公司第一款基于ARMv7一M的內核,在指令執(zhí)行、控制、時鐘管理、跟蹤調試和存儲保護等方面相對于ARM7有很大的區(qū)別。尤其在方面有很大的改進,其響應只需要12個時鐘周期。NVIC(Nested Vectored Inteirupt Contmller,嵌套向量中斷控制器)是器的一個緊耦合部件,可以配置1~240個帶有256個優(yōu)先級、8級搶占優(yōu)先權的物理中斷,為器提供出色的異常處理能力。同時,搶占(pre-emption)、尾鏈(tail―chaining)、遲到(1ate―arriving)技術的使用,大大縮短了異常事件的響應時間。
    異?;蛘咧袛嗍翘幚砥黜憫到y(tǒng)中突發(fā)事件的一種。當異常發(fā)生時,通過硬件自動將編程計數器(PC)、編程狀態(tài)寄存器(XPSR)、鏈接寄存器(LR)和R0~R3、R12等寄存器壓進堆棧。在Dbus(數據總線)保存處理器狀態(tài)的同時,處理器通過Ibus(指令總線)從一個可以重新定位的向量表中識別出異常向量,并獲取ISR函數的地址,也就是保護現場與取異常向量是并行處理的。一旦壓棧和取指令完成,中斷服務程序或故障處理程序就開始執(zhí)行。執(zhí)行完ISR,硬件進行出棧操作,中斷前的程序恢復正常執(zhí)行。圖1為Cortex―M3處理器的異常處理流程。

    本文引用地址:http://www.czjhyjcfj.com/article/152635.htm

    1 Cortex―M3異常類型
    同ARM7相比,Cortex―M3在異常的分類和優(yōu)先級上有很大的差異,如表1所列。

    Cortex―M3將異常分為復位、不可屏蔽中斷、硬故障、存儲管理、總線故障和應用故障、SVcall、調試監(jiān)視異常、PendSV、SysTick以及外部中斷等。Cortex―M3采用向量表來確定異常的入口地址。與大多數其他ARM內核不同,Cortex―M3向量表中包含異常處理程序和ISR的地址,而不是指令。復位處理程序的初始堆棧指針和地址必須分別位于0xO和Ox4。這些值在隨后的復位中被加載到適當的CPU寄存器中。向量表偏移控制寄存器將向量表定位在CODE(Flash)或SRAM中。復位時,默認情況下為CODE模式,但可以重新定位。異常被接受后,處理器通過Ibus查表獲取地址,執(zhí)行異常處理程序。
    在Cortex―M3的優(yōu)先級分配中,較低的優(yōu)先級值具有較高的優(yōu)先級。NVIC將異常的優(yōu)先級分成兩部分:搶占優(yōu)先級(pre―emption priority)部分和子優(yōu)先級(sub―priority)部分,可以通過中斷申請/復位控制寄存器來確定兩個部分所占的比例。搶占優(yōu)先級和子優(yōu)先級共同作用確定了異常的優(yōu)先級。搶占優(yōu)先級用于決定是否發(fā)生搶占,一個異常只有在搶占優(yōu)先級高于另一個異常的搶占優(yōu)先級時才能發(fā)生搶占。當多個掛起異常具有相同的搶占優(yōu)先級時,子優(yōu)先級起作用。通過NVIC設置的優(yōu)先級權限高于硬件默認優(yōu)先級。當有多個異常具有相同的優(yōu)先級時,則比較異常號的大小,異常號小的被優(yōu)先激活。

    2 Cortex―M3異常處理
    2.1 異常的進入

    當一個異常出現以后,Cortex一M3處理器由硬件通過Dbus保存處理器狀態(tài),同時通過Ibus讀取向量表中的SP,更新PC和LR,執(zhí)行中斷服務子程序。
    為了應對堆棧操作階段到來后的更高優(yōu)先級異常,Cortex―M3支持遲到和搶占,以便對各種可能事件做出確定性的響應。
    搶占是一種對更高優(yōu)先級異常的響應機制。Cortex―M3異常搶占的處理過程如圖2所示。當新的更高優(yōu)先級異常到來時,處理器打斷當前的流程,執(zhí)行更高優(yōu)先級的異常操作,這樣就發(fā)生了異常嵌套。遲到是處理器用來加速搶占的一種機制。如果一個具有更高優(yōu)先級的異常在上一個異常執(zhí)行壓棧期間到達,則處理器保存狀態(tài)的操作繼續(xù)執(zhí)行,因為被保存的狀態(tài)對于兩個異常都是一樣的。但是,NVIC馬上獲取的是更高優(yōu)先級的異常向量地址。這樣在處理器狀態(tài)保存完成后,開始執(zhí)行高優(yōu)先級異常的ISR。


    上一頁 1 2 3 下一頁

    評論


    相關推薦

    技術專區(qū)

    關閉
    主站蜘蛛池模板: 虹口区| 贡嘎县| 丰原市| 白山市| 富平县| 金寨县| 行唐县| 柳河县| 旌德县| 鹿邑县| 鄂温| 石家庄市| 桂林市| 榕江县| 鄂州市| 静安区| 兴业县| 色达县| 台南县| 平江县| 隆安县| 礼泉县| 黄大仙区| 本溪| 辽宁省| 霍邱县| 文成县| 衡山县| 梅河口市| 白城市| 渭南市| 平远县| 正阳县| 尚志市| 江口县| 定襄县| 连云港市| 聂拉木县| 通州市| 昆明市| 民和|