ARM基礎知識連載(3)
在ARM體系中通常有以下3種方式控制程序的執行流程:
**在正常執行過程中,每執行一條ARM指令,程序計數器(PC)的值加4個字節;每執行一條Thumb指令,程序計數器寄存器(PC)加2個字節。整個過程是按順序執行
。
**跳轉指令,程序可以跳轉到特定的地址標號處執行,或者跳轉到特定的子程序處執行。其中,B指令用于執行跳轉操作;BL指令在執行跳轉操作同時,保存子程
序的返回地址;BX指令在執行跳轉操作同時,根據目標地址為可以將程序切換到Thumb狀態;BLX指令執行3個操作,跳轉到目標地址處執行,保存子程序的返回
地址,根據目標地址為可以將程序切換到Thumb狀態。
**當異常中斷發生時,系統執行完當前指令后,將跳轉到相應的異常中斷處理程序處執行。當異常中斷處理程序執行完成后,程序返回到發生中斷指令的下條指
令處執行。在進入異常中斷處理程序時,要保存被中斷程序的執行現場,從異常中斷處理程序退出時,要恢復被中斷程序的執行現場。
ARM中異常中斷的種類
**復位(RESET)**
當處理器復位引腳有效時,系統產生復位異常中斷,程序跳轉到復位異常中斷處理程序處執行。復位異常中斷通常用在下面幾種情況下:系統加電時;系統復位時;跳轉到復位中斷向量處執行成為軟復位。
**未定義的指令**
當ARM處理器或者是系統中的協處理器認為當前指令未定義時,產生未定義的指令異常中斷,可以通過改異常中斷機制仿真浮點向量運算。
**軟件中斷**
這是一個由用戶定義的中斷指令。可用于用戶模式下的程序調用特權操作指令。在實時操作系統中可以通過該機制西線系統功能調用。
**指令與取終止(PrefechAbort)**
如果處理器預取的指令的地址不存在,或者該地址不允許當前指令訪問,當被預取的指令執行時,處理器產生指令預取終止異常中斷。
**數據訪問終止(DATAABORT)
如果數據訪問指令的目標地址不存在,,或者該地址不允許當前指令訪問,處理器產生數據訪問終止異常中斷
**外部中斷請求(IRQ)**
當處理器的外部中斷請求引腳有效,而且CPSR的寄存器的I控制位被清除時,處理器產生外部中斷請求異常中斷。系統中個外設通過該異常中斷請求處理服務。
**快速中斷請求(FIQ)**
當處理器的外部快速中斷請求引腳有效,而且CPSR的F控制位被清除時,處理器產生外部中斷請求異常中斷
異常中斷向量表及異常中斷優先級
中斷向量表指定了個異常中斷及其處理程序的對應關系。他通常存放在存儲地址的低端。在ARM體系中,異常中斷向量表的大小為32字節,其中每個異常中斷占據4個字節大小,保留了4個字節空間。
每個異常中斷對應的中斷向量表中的4個字節的空間中存放了一個跳轉指令或者一個向PC寄存器中賦值的數據訪問指令。通過這兩種指令,程序將跳轉到相應的異常中斷處理程序處執行。當幾個異常中斷同時發生時,就必須按照一定的次序來處理這些異常中斷。
各個異常中斷的中斷向量地址以及中斷的處理優先級
中斷向量地址 異常中斷類型 異常中斷模式 優先級(6最低)
0x00 復位 特權模式 1
0x04 未定義的指令 未定義指令終止模式 6
0x08 軟件中斷 特權模式 6
0x0C 指令預取終止 終止模式 5
0x10 數據訪問終止 終止模式 2
0x14 保留 未使用 未使用
0x18 外部中斷請求 IRQ模式 4
0x1C 快速中斷請求 FIQ模式 3
評論