新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM體系的7種工作模式

        ARM體系的7種工作模式

        作者: 時間:2016-11-09 來源:網絡 收藏
        一、ARM體系的CPU有以下7種工作模式
        用戶模式(usr)       大多數程序運行于用戶模式
        特權模式系統模式(sys)      運行具有特權的操作系統任務
        異常模式中斷模式(irq)      
        快速中斷模式(fiq)     必須進快處理中斷請求,并離開這個模式
        管理模式(svc)      操作系統使用的保護模式
        數據訪問終止模式(abt)  數據或指令預取終止時進入該模式
        未定義指令終止模式(und) 未定義的指令執行時進入該模式

        注解:

        本文引用地址:http://www.104case.com/article/201611/317770.htm

        可以通過軟件來進行模式切換,或者發生各類中斷、異常時CPU自動進入相應的模式;

        用戶模式與系統模式兩者使用相同的寄存器,都沒有SPSR(Saved Program Statement Register,已保存程序狀態寄存器),但系統模式比用戶模式有更高的權限;

        系統復位或開機時則進入到SVC模式下;

        當遇到軟中斷(SWI,Software Interrupt)時,也將進入到SVC模式下;

        進入特權模式是為了處理中斷、異常、或者訪問被保護的系統資源;

        ARM中斷模式(IRQ)和快速中斷模式(FIQ)區別:

        1. FIQ的優先級比IRQ高。

        2. IRQ可以被FIQ所中斷,但FIQ不能被IRQ所中斷,在處理FIQ時必須要關閉中斷。

        3. FIQ模式下,比IRQ模式多了幾個獨立的寄存器。

        不要小看這幾個寄存器,ARM在編譯的時候,如果你FIQ中斷處理程序足夠用這幾個獨立的寄存器來運作,它就不會進行通用寄存器的壓棧,這樣也省了一些時間。

        4. FIQ的中斷向量地址在0x1C,而IRQ的在0x18。(也有的在FFFF001C以及FFFF0018)

        寫過完整匯編系統的都比較明白這點的差別,18只能放一條指令(18-1c 4個字節),為了不與1C處的FIQ沖突,這個地方只能跳轉,而FIQ不一樣,1C以后沒有任何中斷向量表了,這樣可以直接在1C處放FIQ的中斷處理程序,由于跳轉的范圍限制,至少少了一條跳轉指令。

        5.IRQ和FIQ的響應延遲有區別

        IRQ的響應并不及時,從Verilog仿真來看,IRQ會延遲幾個指令周期才跳轉到中斷向量處,看起來像是在等預取的指令執行完。FIQ的響應不清楚,也許比IRQ快。

        二、ARM體系的CPU有兩種工作狀態

        1、ARM:32位,ARM狀態執行字對齊的32位ARM指令。

        2、THumb:16位,執行半字對齊的16位指令

        注:1、ARM和Thumb兩種狀態之間的切換不影響處理器的工作模式和寄存器的內容。

        2、ARM處理器在處理異常時,不過處理器處于什么狀態,則都將切換到ARM狀態。

          3、CPU上電處于ARM狀態

        三、寄存器

        ARM有31個通用的32位寄存器,6個32位程序狀態寄存器,共分為7組,有些寄存器是所有工作模式共用的,還有一些寄存器專屬于每一種工作模式;

        R13——棧指針寄存器,用于保存堆棧指針

        R14——程序連接寄存器,當執行BL子程序調用指令時,R14中得到R15的備份,而當發生中斷或異常時,R14保存R15的返回值;

        R15——程序計數器;

        快速中斷模式有7個備份寄存器R8—R14,這使得進入快速中斷模式執行很大部分程序時,甚至不需要保存任何寄存器;

        其它特權模式都含有兩個獨立的寄存器副本R13、R14,這樣可以令每個模式都擁有自己的堆棧指針和連接寄存器;

        四、當前程序狀態寄存器(CPSR)

        CPSR中各位意義如下:

        T位:1——CPU處于Thumb狀態, 0——CPU處于ARM狀態;

        I、F(中斷禁止位): 1——禁止中斷, 0——中斷使能;

        工作模式位:可以改變這些位,進行模式切換;

        五、程序狀態保存寄存器(SPSR)

        當切換進入某一個特權模式時,SPSR保存前一個工作模式的CPSR值,這樣,當返回前一個工作模式時,可以將SPSR的值恢復到CPSR中;

        六、模式切換

        當異常發生,CPU進入相應的異常模式時,以下工作是由CPU自動完成的:

        1、在異常模式的R14中保存前一工作模式的下一條即將執行的指令地址;

        2、將CPSR的值到異常模式的SPSR中;

        3、將CPSR的工作模式設為該異常模式對應的工作模式;

        4、令PC值等于這個異常模式在異常向量表中的地址,即跳轉去執行異常向量表中的相應指令;

        從異常工作模式退回到之前的工作模式時,需要由軟件來完成以下工作:

        1、將異常模式的R14減去一個適當的值(4或8)后賦給PC寄存器;

        2、將異常模式SPSR的值賦給CPSR;



        關鍵詞: ARM體系工作模

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 凯里市| 东城区| 宣恩县| 本溪| 阿鲁科尔沁旗| 石门县| 荔浦县| 安达市| 彰化县| 政和县| 宜川县| 龙井市| 黄平县| 临泽县| 拜城县| 闽侯县| 于都县| 新密市| 舞阳县| 镇平县| 如东县| 岱山县| 额尔古纳市| 马龙县| 南部县| 古蔺县| 武鸣县| 长兴县| 西丰县| 斗六市| 无棣县| 鹤山市| 东海县| 彭州市| 准格尔旗| 斗六市| 江西省| 德阳市| 玉树县| 新巴尔虎右旗| 长顺县|