新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM處理器模式介紹和模式切換

        ARM處理器模式介紹和模式切換

        作者: 時間:2016-11-28 來源:網絡 收藏
        ARM體系結構支持7種處理器模式:
        用戶模式:正常程序工作模式,不能直接切換到其它模式。
        快中斷模式:支持高速數據傳輸及通道處理。FIR異常響應時,進入此模式
        中斷模式:通用中斷處理。IRQ異常響應時,進入此模式。
        管理模式:操作系統保護代碼,系統復位和軟件中斷時,進入此模式。
        中止模式:支持虛擬內存,存儲器保護。
        未定義模式:支持硬件協處理器和軟件仿真。未定義指令異常響應時,進入此模式。
        系統模式:用于支持OS的特權任務。與用戶模式類似,但可以直接切換到其它模式。
        除用戶模式外,其它都為特權模式。某些ARM內部寄存器和一些片內外設在硬件設計上只允許特權模式下訪問。特權模式可以自由切換處理器模式。但用戶模式不能直接切換到別的模式。


        ARM7TDMI內核包含1個CPSR和5個供異常處理程序使用的SPSR.
        ARM7TDMI內核所有處理器狀態都保存在CPSR中。
        CPSR包含:
        4個條件代碼標志。
        2個中斷禁止位。
        5個隊當前處理器模式進行編碼的位。
        1個用于只是當前執行指令(ARM還是Thumb)的位。

        每個異常模式(快中斷模式,中斷模式,管理模式,中止模式,未定義模式)還帶有一個程序狀態保存寄存器 SPSR。用于保存任務在異常發生之前的CPSR.

        4個條件代碼標志:
        N:運算結果的B31值。
        Z:指令結果為0時,Z=1(通常表示比較結果相等) . 否則Z=0.
        C: 使用加法運算時,B31位產生進位,C=1.否則C=0. 使用減法運算時,b31借位時,C=0,否則C=1。
        V: 加減運算時,有符號溢出,V=1,否則V=0。

        2個中斷禁止位:
        I: 置位,IRQ 中斷被禁止。
        F:置位,FIQ中斷被禁止。

        1個用于只是當前執行指令(ARM還是Thumb)的位:
        置位:表示處理器在Thumb.
        清零:處理器在ARM。

        5個隊當前處理器模式進行編碼的位:
        10000:用戶。
        10001:快中斷。
        10010:中斷
        10011:管理
        10111:中止
        11011:未定義
        11111:系統。
        注意,在不同模式下,可見的寄存器不同。


        使用MRS指令可以讀取狀態寄存器指令。
        MRS R1, CPSR
        MRS R2,SPSR

        使用MSR指令,可以寫狀態寄存器。

        例1:使能IRQ中斷:
        MRS R0, CPSR //把cpsr內容放到Ro中
        BIC R0, R0, #0x80 //將I 位清除。IRQ Enable
        MSR CPSR_c ,R0
        MOV PC, LR

        注意:AXD中的Processor Registers項中,CPSR,SPSR顯示模式如下:

        nzCvqIFt_SVC
        nzcv:分別表示4個標志位。小寫字母表示0 , 大寫字母表示1
        IFt分別表示IRQ,FIQ,和執行指令標志位。
        SVC表示工作模式為:管理模式。


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 育儿| 南部县| 阿勒泰市| 灵川县| 璧山县| 巴林右旗| 伊宁市| 徐州市| 闽侯县| 双牌县| 新沂市| 鲁山县| 余姚市| 修武县| 临安市| 邵阳市| 铁岭市| 松桃| 若尔盖县| 淳安县| 恭城| 平阴县| 高邑县| 宁海县| 弥渡县| 盐亭县| 高平市| 巫山县| 怀来县| 黄平县| 南皮县| 南康市| 龙山县| 富顺县| 特克斯县| 大化| 通海县| 焉耆| 新丰县| 富顺县| 砚山县|