ARM處理器對異常中斷的響應過程如下所述:1、保存處理器當前狀態、中斷屏蔽位以及各條件標志位;2、設置當前程序狀態寄存器CPSR中的相應位;3、將寄存器lr_mode設置成返回地址;4、將程序計數器值PC,設置成該異常中斷的中斷向量地址,跳轉到相應異常中斷處執行。
ARM指令與Thumb指令的區別:在ARM體系結構中,ARM指令集中的指令是32位的指令,其執行效率很高。對于存儲系統數據總線為16位的應用系統,ARM體系提供了Thumb指令集。Thumb指令集是對ARM指令集的一個子集重新編碼得到的,指令長度為16位。通常在處理器執行ARM程序時,稱處理器處于ARM狀態;當處理器執行Thumb程序時,稱處理器處于Thumb狀態。Thumb指令集并沒有改變ARM體系地層的程序設計模型,只是在該模型上加上了一些限制條件。Thumb指令集中的數據處理指令的操作數仍然為32位,指令尋址地址也是32位的。
ARM程序和Thumb程序混合使用的場合:通常,Thumb程序比ARM程序更加緊湊,而且對于內存為8位或16位的系統,使用Thumb程序效率更高。但是,在下面一些場合下,程序必須運行在ARM狀態,這時就需要混合使用ARM和Thumb程序。強調速度的場合,應該使用ARM程序;有些功能只能由ARM程序完成。如果要在調試器中運行Thumb程序,必須為該Thumb程序添加一個ARM程序頭,然后再切換到Thumb狀態,執行Thumb程序。
什么是ATPCS:為了使單獨編譯的C語言程序和匯編程序之間能夠相互調用,必須為子程序之間的調用規定一定的規則。ATPCS就是ARM程序和Thumb程序中子程序調用的基本規則。這些規則包括寄存器使用規則,數據棧的使用規則,參數的傳遞規則等。ARM微處理器支持7種運行模式,分別為:
1、用戶模式(usr):ARM處理器正常的程序執行狀態;
2、快速中斷模式(fiq):用于高速數據傳輸或通道管理;
3、外部中斷模式(irq):用于通用的中斷處理;
4、管理模式(svc):操作系統使用的保護模式;
5、數據訪問終止模式(abt):當數據或指令預取終止時進入該模式,用于虛擬存儲及存儲保護;
6、系統模式(sys):運行具有特權的操作系統任務;
7、未定義指令中止模式(und):當未定義指令執行時進入該模式,可用于支持硬件協處理器的軟件仿真。
ARM體系結構所支持的異常類型:ARM體系結構所支持的異常和具體含義如下(圈里面的數字表示優先級):復位①:當處理器的復位電平有效時,產生復位異常,程序跳轉到復位異常處執行(異常向量:0x0000,0000);未定義指令⑥:當ARM處理器或協處理器遇到不能處理的指令時,產生為定義異常。可使用該異常機制進行軟件仿真(異常向量:0x0000,0004);軟件中斷⑥:有執行SWI指令產生,可用于用戶模式下程序調用特權操作指令。可使用該異常機制實現系統功能調用(異常向量:0x0000,0008);指令預取中止⑤:若處理器的預取指令的地址不存在,或該地址不允許當前指令訪問,存儲器會向處理器發出中止信號,當預取指令被執行時,才會產生指令預取中止異常(異常向量:0x0000,000C);數據中止②:若處理器數據訪問的指令的地址不存在,或該地址不允許當前指令訪問,產生數據中止異常(異常向量:0x0000,0010);IRQ④(外部中斷請求):當處理器的外部中斷請求引腳有效,且CPSR中的I位為0時,產生IRQ異常。系統的外設可以該異常請求中斷服務(異常向量:0x0000,0018);FIQ③(快速中斷請求):當處理器的快速中斷請求引腳有效,且CPSR中的F位為0時,產生FIQ異常(異常向量:0x0000,001C)。說明:其中異常向量0x0000,0014為保留的異常向量。
想來粵嵌ARM培訓嗎?先看看這些關于ARM培訓的干貨分享(中),明天更新下篇,繼續關注粵嵌教育官網,更多資訊可以了解哦!