新聞中心

        EEPW首頁 > ARM中斷處理流程

        ARM中斷處理流程

        ——
        作者: 時間:2007-04-19 來源: 收藏

        1.寄存器R16用作CPSR(Current Program Status Register,當前程序狀態寄存器)CPSR可在任何運行模式下被訪問,它包括條件標志位、中斷禁止位、當前處理器模式標志位,以及其他一些相關的控制和狀態位。

        每一種運行模式下又都有一個專用的物理狀態寄存器,稱為SPSR(Saved Program Status Register,備份的程序狀態寄存器),當異常發生時,SPSR用于保存CPSR的當前值,從異常退出時則可由SPSR來恢復CPSR。

        由于用戶模式和系統模式不屬于異常模式,他們沒有SPSR,當在這兩種模式下訪問SPSR,結果是未知的

           當中斷產生的時候,把CPSR保存在SPSR是自動完成的。

         

        對異常的響應

        當一個異常出現以后,微處理器會執行以下幾步操作: (這些是中斷發生時,自動處理的

        1、將下一條指令的地址存入相應連接寄存器LR,以便程序在處理異常返回時能從正確的位置重新開始執行。若異常是從狀態進入,LR寄存器中保存的是下一條指令的地址(當前PC+4或PC+8,與異常的類型有關);若異常是從Thumb狀態進入,則在LR寄存器中保存當前PC的偏移量,這樣,異常處理程序就不需要確定異常是從何種狀態進入的。例如:在軟件中斷異常SWI,指令MOV PC,R14_svc總是返回到下一條指令,不管SWI是在狀態執行,還是在Thumb狀態執行。

        2、將CPSR復制到相應的SPSR中。

        3、根據異常類型,強制設置CPSR的運行模式位。

        4、強制PC從相關的異常向量地址取下一條指令執行,從而跳轉到相應的異常處理程序處。

        還可以設置中斷禁止位,以禁止中斷發生。

        如果異常發生時,處理器處于Thumb狀態,則當異常向量地址加載入PC時,處理器自動切換到ARM狀態

         

        從異常返回

        異常處理完畢之后,ARM微處理器會執行以下幾步操作從異常返回:

        1、將連接寄存器LR的值減去相應的偏移量后送到PC中。

        2、將SPSR復制回CPSR中。

        3、若在進入異常處理時設置了中斷禁止位,要在此清除。

        可以認為應用程序總是從復位異常處理程序開始執行的,因此復位異常處理程序不需要返回。




        關鍵詞: ARM 中斷處理

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 故城县| 南平市| 栾川县| 栖霞市| 吉林市| 南汇区| 通榆县| 沂水县| 潮州市| 卢氏县| 南昌市| 吉安市| 卢湾区| 城口县| 铜陵市| 建水县| 鄱阳县| 页游| 平利县| 苍南县| 峨眉山市| 梁山县| 桑日县| 沁源县| 湖口县| 荥经县| 台中县| 南昌县| 宜昌市| 宜城市| 蓬安县| 常德市| 班戈县| 武威市| 秦安县| 贵阳市| 平度市| 大同县| 高雄县| 沂源县| 赞皇县|