日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁 > 嵌入式系統 > 設計應用 > ARM微處理器的編程模型之:異常中斷處理

          ARM微處理器的編程模型之:異常中斷處理

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

          本文引用地址:http://yuyingmama.com.cn/article/257085.htm

          復位程序將進行一些初始化工作,內容與具體系統相關。下面是復位程序的主要功能。

          · 設置異常中斷向量表。

          · 初始化數據棧和寄存器。

          · 初始化存儲系統,如系統中的MMU等。

          · 初始化關鍵的I/O設備。

          · 使能中斷。

          · 處理器切換到合適的模式。

          · 初始化C變量,跳轉到應用程序執(zhí)行。

          2.未定義指令異常

          處理器執(zhí)行協處理器指令時,它必須等待一個外部協處理器應答后,才能真正執(zhí)行這條指令。若協處理器沒有相應,則發(fā)生未定義指令異常。

          未定義指令異常可用于在沒有物理協處理器的系統上,對協處理器進行軟件仿真,或通過軟件仿真實現指令集擴展。例如,在一個不包含浮點運算的系統中,CPU遇到浮點運算指令時,將發(fā)生未定義指令異常中斷,在該未定義指令異常中斷的處理程序中可以通過其他指令序列仿真浮點運算指令。

          仿真功能可以通過下面步驟實現。

          ① 將仿真程序入口地址鏈接到向量表中未定義指令異常中斷入口處(0x00000004或0xffff0004),并保存原來的中斷處理程序。

          ② 讀取該未定義指令的bits[27∶24],判斷其是否是一條協處理器指令。如果bits[27∶24]值為0b1110或0b110x,該指令是一條協處理器指令;否則,由軟件仿真實現協處理器功能,可以同過bits[11∶8]來判斷要仿真的協處理器功能(類似于SWI異常實現機制)。

          ③ 如果不仿真該未定義指令,程序跳轉到原來的未定義指令異常中斷的中斷處理程序執(zhí)行。

          當未定義異常發(fā)生時,系統執(zhí)行下列的偽操作。

          r14_und = address of next instruction after the undefined instruction

          SPSR_und = CPSR

          CPSR[4∶0] = 0b11011 /*進入未定義指令模式*/

          CPSR[5] = 0 /*處理器進入狀態(tài)*/

          /*CPSR[6]保持不變*/

          CPSR[7] = 1 /*禁止外設中斷*/

          If high vectors configured then

          PC = 0xffff0004

          Else

          PC = 0x00000004

          3.軟中斷SWI

          軟中斷異常發(fā)生時,處理器進入特權模式,執(zhí)行一些特權模式下的操作系統功能。軟中斷異常發(fā)生時,處理器執(zhí)行下列偽操作。

          r14_svc = address of next instruction after the SWI instruction

          SPSR_und = CPSR

          CPSR[4∶0] = 0b10011 /*進入特權模式*/

          CPSR[5] = 0 /*處理器進入狀態(tài)*/

          /*CPSR[6]保持不變*/

          CPSR[7] = 1 /*禁止外設中斷*/

          If high vectors configured then

          PC = 0xffff0008

          Else

          PC = 0x00000008

          4.預取指令異常

          預取指令異常使由系統存儲器報告的。當處理器試圖去取一條被標記為預取無效的指令時,發(fā)生預取異常。

          如果系統中不包含MMU時,指令預取程序只是簡單地報告錯誤并退出。若包含MMU,引起異常的指令的物理地址被存儲到內存中。

          預取異常發(fā)生時,處理器執(zhí)行下列偽操作。

          r14_svc = address of the aborted instruction + 4

          SPSR_und = CPSR

          CPSR[4∶0] = 0b10111 /*進入特權模式*/

          CPSR[5] = 0 /*處理器進入ARM狀態(tài)*/

          /*CPSR[6]保持不變*/

          CPSR[7] = 1 /*禁止外設中斷*/

          If high vectors configured then

          PC = 0xffff000C

          Else

          PC = 0x0000000C

          5.數據訪問中止異常

          數據訪問中止異常是由存儲器發(fā)出數據中止信號,它由存儲器訪問指令Load/Store產生。當數據訪問指令的目標地址不存在或者該地址不允許當前指令訪問時,處理器產生數據訪問中止異常。

          當數據訪問中止異常發(fā)生時,處理器執(zhí)行下列偽操作。

          r14_abt = address of the aborted instruction + 8

          SPSR_abt = CPSR

          CPSR[4∶0] = 0b10111

          CPSR[5] = 0

          /*CPSR[6]保持不變*/

          CPSR[7] = 1 /*禁止外設中斷*/

          If high vectors configured then

          PC = 0xffff000C10

          Else

          PC = 0x00000010



          評論


          相關推薦

          技術專區(qū)

          關閉