小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

bootloader之ARM的處理器模式

 ccbupt 2009-05-12

ARM異常中斷處理概述

當(dāng)正常的程序執(zhí)行流程發(fā)生暫時的停止時,稱之為異常,例如處理一個外部的中斷請求。在處理異常之前,當(dāng)前處理器的狀態(tài)必須保留,這樣當(dāng)異常處理完成之后,當(dāng)前程序可以繼續(xù)執(zhí)行。處理器允許多個異常同時發(fā)生,它們將會按固定的優(yōu)先級進行處理。
ARM體系結(jié)構(gòu)中的異常,與8位/16位體系結(jié)構(gòu)的中斷有很大的相似之處,但異常與中斷的概念并不完全等同。

ARM體系結(jié)構(gòu)所支持的異常類型

異常類型                           具體含義
復(fù)位                         復(fù)位電平有效時,產(chǎn)生復(fù)位異常,程序跳轉(zhuǎn)到復(fù)位處理程序處執(zhí)行。
未定義指令          遇到不能處理的指令時,產(chǎn)生未定義指令異常。
軟件中斷                 執(zhí)行SWI指令產(chǎn)生,用于用戶模式下的程序調(diào)用特權(quán)操作指令。
指令預(yù)取中止        處理器預(yù)取指令的地址不存在,或該地址不允許當(dāng)前指令訪問,產(chǎn)生
指令預(yù)取中止異常。
數(shù)據(jù)中止                處理器數(shù)據(jù)訪問指令的地址不存在,或該地址不允許當(dāng)前指令訪問時,產(chǎn)生數(shù)據(jù)中止異常。
IRQ                         外部中斷請求有效,且CPSR中的I位為0時,產(chǎn)生IRQ異常。
FIQ                      快速中斷請求引腳有效,且CPSR中的F位為0時,產(chǎn)生FIQ異常。

異常向量表(Exception Vectors)

地址                                   異常                                  進入模式

0x0000,0000                 復(fù)位                                      管理模式

ox0000,0004                 未定義指令                          未定義模式

0x0000,0008                  軟件中斷                              管理模式

0x0000,000c                 中止(預(yù)存指令)            中止模式

0x0000,0010                中止(數(shù)據(jù))                    中止模式

0x0000,0014                  保留                                     保留

0x0000,0018                 IRQ                                         IRQ

0x0000,001c                  FIQ                                        FIQ

異常優(yōu)先級(Exceprion Priorities)

優(yōu)先級                             異常

1(最高)                        復(fù)位

2                                        數(shù)據(jù)中止

3                                        FIQ

4                                        IRQ

5                                        預(yù)取指令

6(最低)                        未定義指令、SWI

對異常的響應(yīng)

當(dāng)一個異常出現(xiàn)以后,ARM微處理器會執(zhí)行以下幾步操作

1、將下一條指令的地址存入相應(yīng)連接寄存器LR,以便程序在處理異常返回時能從正確的位置重新開始執(zhí)行。
2、將CPSR復(fù)制到相應(yīng)的SPSR中。
3、根據(jù)異常類型,強制設(shè)置CPSR的運行模式位。
4、強制PC從相關(guān)的異常向量地址取下一條指令執(zhí)行,從而跳轉(zhuǎn)到相應(yīng)的異常處理程序處。

異常處理完畢之后,ARM微處理器會執(zhí)行以下幾步操作從異常返回:

1、將連接寄存器LR的值減去相應(yīng)的偏移量后送到PC中。
2、將SPSR復(fù)制回CPSR中。
3、若在進入異常處理時設(shè)置了中斷禁止位,要在此清除。

可以認(rèn)為應(yīng)用程序總是從復(fù)位異常處理程序開始執(zhí)行的,因此復(fù)位異常處理程序不需要返

中斷處理程序的安裝

一般在系統(tǒng)的啟動代碼中安裝異常處理程序。大致可以分為兩種情況:

1、地址處存儲器為ROM/FLASH
2、地址處存儲器為RAM

在ROM/FLASH中安裝中斷處理程序

在ROM/FLASH的異常中斷向量表中,可以使用LDR指令直接向程序計數(shù)器PC中賦值,也可以直接使用跳轉(zhuǎn)指令轉(zhuǎn)到異常中斷處理程序。

當(dāng)0地址處為ROM時,將跳轉(zhuǎn)指令安裝在0地址處:
中斷向量表:
b SYS_RST_HANDLER   ;0x00000000
b UDF_INS_HANDLER    ;0x00000004
b SWI_SVC_HANDLER   ;0x00000008
b INS_ABT_HANDLER     ;0x0000000c
b DAT_ABT_HANDLER   ;0x00000010
b .                                         ;nop
b IRQ_SVC_HANDLER    ;0x00000018
b FIQ_SVC_HANDLER    ;0x0000001c

;為中斷向量分配地址空間,此空間處為RAM的地址
MAP _ISR_STARTADDRESS
    SYS_RST_VECTOR      # 4  
    UDF_INS_VECTOR      # 4
   SWI_SVC_VECTOR    # 4
   INS_ABT_VECTOR      # 4
    DAT_ABT_VECTOR      # 4
    RESERVED_VECTOR   # 4
   IRQ_SVC_VECTOR     # 4
    FIQ_SVC_VECTOR     # 4

RAM中安裝中斷處理程序

當(dāng)0地址處為RAM時,中斷向量表必須使用數(shù)據(jù)讀取指令直接指向PC中賦值的形式。而且必須把中斷向量從ROM中復(fù)制到RAM地址的0地址處。

MOV r8, #0   ;
ADR r9, Vector_Init_Block
LDMIA r9!, {r0-r7}
STMIA r8!, {r0-r7}



ARM處理器共有7種不同的處理器模式:

1、用戶模式(User)2、快速中斷模式(FIQ)3、外部中斷模式(IRQ)4、特權(quán)模式(SVC)5、數(shù)據(jù)訪問中止模式(ABT)6、未定義指令中止模式(UND)7、系統(tǒng)模式(SYS)

 

除了用戶模式以外的其他6種處理器模式稱為特權(quán)模式。在這些模式下,程序可以訪問所有的系統(tǒng)資源,也可以任意地進行處理器的模式切換。ARM內(nèi)部寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計上只允許(或者可選為只允許)特權(quán)模式下訪問。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。

其中,除了用戶模式、系統(tǒng)模式以外,其他5種特權(quán)模式又稱為異常模式。它們除了可以通過程序切換進入外,也可以由特定的異常進入。當(dāng)特定的異常出現(xiàn)時,處理器進入相應(yīng)的模式。每種異常模式都有一些獨立的寄存器,以避免異常退出時用戶模式的狀態(tài)不可靠。

用戶和系統(tǒng)模式這兩種模式都不能由異常進入,而且它們使用完全相同的寄存器組。

系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個模式訪問一些受控的資源。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多