處理器的工作模式_第1頁(yè)
處理器的工作模式_第2頁(yè)
處理器的工作模式_第3頁(yè)
處理器的工作模式_第4頁(yè)
處理器的工作模式_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

(優(yōu)選)處理器的工作模式當(dāng)前1頁(yè),總共39頁(yè)。1.1ARM處理器的工作狀態(tài)和模式

為了能夠體現(xiàn)ARM的特點(diǎn)和性能,ARM處理器有兩種工作狀態(tài)和7種工作模式。1.1.1ARM處理器的工作狀態(tài)有兩種工作狀態(tài):

ARM狀態(tài):處理器執(zhí)行32位的字對(duì)齊的ARM指令;

Thumb狀態(tài):處理器執(zhí)行16位的半字對(duì)齊的Thumb指令。兩種狀態(tài)可以切換。程序執(zhí)行過(guò)程中,通過(guò)執(zhí)行帶狀態(tài)切換的分支指令BX,隨時(shí)在兩種工作狀態(tài)之間進(jìn)行切換。并且,處理器工作狀態(tài)的轉(zhuǎn)變,并不影響處理器的工作模式和相應(yīng)寄存器中的內(nèi)容。當(dāng)前2頁(yè),總共39頁(yè)。1.1ARM處理器的工作狀態(tài)和模式(2)

從ARM狀態(tài)切換到Thumb狀態(tài) 有兩種情況ARM處理器自動(dòng)切換到Thumb狀態(tài)。 (1)執(zhí)行BX指令,當(dāng)操作數(shù)寄存器的位[0]為1時(shí),則微處理器從ARM狀態(tài)切換到Thumb狀態(tài)。此為主動(dòng)切換。 (2)當(dāng)處理器處于Thumb狀態(tài)時(shí)發(fā)生異常(如IRQ、FIQ、Undef等),處理完異常后,在異常處理返回時(shí),自動(dòng)切換到Thumb狀態(tài)。此為自動(dòng)切換。 從Thumb狀態(tài)切換到ARM狀態(tài) 有兩種情況ARM處理器自動(dòng)切換到Thumb狀態(tài)。 (1)執(zhí)行BX指令,當(dāng)操作數(shù)寄存器的位[0]為0時(shí),則微處理器從Thumb狀態(tài)切換到ARM狀態(tài)。 (2)當(dāng)處理器在Thumb狀態(tài)時(shí)發(fā)生異常(如IRQ、FIQ、Undef等),則處理器從Thumb狀態(tài)自動(dòng)切換到ARM狀態(tài)進(jìn)行異常處理當(dāng)前3頁(yè),總共39頁(yè)。1.1ARM處理器的工作狀態(tài)和模式(3)

例1.1狀態(tài)切換程序;從ARM狀態(tài)切換到Thumb狀態(tài)

LDR R0, =Lable+1 BX R0;從Thumb狀態(tài)切換到ARM狀態(tài)

LDR R0, =Lable BX R0

注意:

ARM和Thumb之間狀態(tài)的切換不影響處理器的模式或寄存器的內(nèi)容。

ARM處理器在開始執(zhí)行代碼時(shí),只能處于ARM狀態(tài)。當(dāng)前4頁(yè),總共39頁(yè)。1.1.2ARM處理器的工作模式

一、

ARM9的7種工作模式

1、用戶模式(usr):非特權(quán)模式,大部分任務(wù)執(zhí)行在這種模式。

正常程序執(zhí)行的模式

2、快速中斷模式(fiq):當(dāng)一個(gè)高優(yōu)先級(jí)(fast)中斷產(chǎn)生時(shí)將會(huì)進(jìn)入這種模式。 高速數(shù)據(jù)傳輸或通道處理

3、外部中斷模式(irq):當(dāng)一個(gè)低優(yōu)先級(jí)(normal)中斷產(chǎn)生時(shí)將會(huì)進(jìn)入這種模式。通常的中斷處理

4、管理模式(svc):當(dāng)復(fù)位或軟中斷指令執(zhí)行時(shí)將會(huì)進(jìn)入這種模式。供操作系統(tǒng)使用的一種保護(hù)模式當(dāng)前5頁(yè),總共39頁(yè)。1.1.2ARM處理器的工作模式(2)

5、中止模式(abt):當(dāng)存取異常時(shí)將會(huì)進(jìn)入這種模式

虛擬存儲(chǔ)及存儲(chǔ)保護(hù)6、未定義模式(und):當(dāng)執(zhí)行未定義指令時(shí)會(huì)進(jìn)入這種模式

軟件仿真硬件協(xié)處理器7、系統(tǒng)模式(sys):供需要訪問(wèn)系統(tǒng)資源的操作系統(tǒng)任務(wù)使用

特權(quán)級(jí)的操作系統(tǒng)任務(wù)當(dāng)前6頁(yè),總共39頁(yè)。1.1.2ARM處理器的工作模式(2)

二、模式分類及特點(diǎn) 七種模式可以劃分成四類

1、用戶模式特點(diǎn):應(yīng)用程序不能夠訪問(wèn)受操作系統(tǒng)保護(hù)的系統(tǒng)資源。應(yīng)用程序不能進(jìn)行處理器模式的切換。

2、系統(tǒng)模式特點(diǎn):

不屬于異常模式,不是通過(guò)異常進(jìn)入的。系統(tǒng)模式屬于特權(quán)模式,可以訪問(wèn)所有的系統(tǒng)資源,也可以直接進(jìn)行模式的切換。它主要供操作系統(tǒng)使用。

3、特權(quán)模式及其特點(diǎn): 特權(quán)模式:除用戶模式之外的工作模式又稱為特權(quán)模式 特點(diǎn): 應(yīng)用程序可以訪問(wèn)所有的系統(tǒng)資源 可以任意地進(jìn)行處理器模式的切換當(dāng)前7頁(yè),總共39頁(yè)。1.1.2ARM處理器的工作模式(3)

4、異常模式及其特點(diǎn):

異常模式: 除用戶模式、系統(tǒng)模式之外的五種模式稱為異常模式。

特點(diǎn):以各自的中斷或異常方式進(jìn)入,并且處理各自的中斷或異常。對(duì)管理模式(svc)進(jìn)入方式和處理內(nèi)容有:

①系統(tǒng)上電復(fù)位后進(jìn)入管理模式,運(yùn)行系統(tǒng)初始化程序,如中斷允許/禁止,主時(shí)鐘設(shè)置,SDRAM配置,各個(gè)功能模塊初始化等。

②當(dāng)執(zhí)行軟件中斷指令SWI時(shí),進(jìn)入管理模式。當(dāng)前8頁(yè),總共39頁(yè)。1.1.2ARM處理器的工作模式(4)處理器模式的切換方式:軟件控制進(jìn)行切換。通過(guò)外部中斷和異常進(jìn)行切換處理器啟動(dòng)時(shí)的模式轉(zhuǎn)換圖管理模式(Supervisor)多種特權(quán)模式變化用戶程序的運(yùn)行模式復(fù)位后的缺省模式主要完成各模式的堆棧設(shè)置,注意不要進(jìn)入用戶模式一般為用戶模式User當(dāng)前9頁(yè),總共39頁(yè)。1.2ARM9寄存器本節(jié)主要內(nèi)容

1、ARM寄存器概述

2、ARM通用寄存器

3、ARM狀態(tài)寄存器當(dāng)前10頁(yè),總共39頁(yè)。1.2ARM9寄存器1.2.1、ARM寄存器概述

ARM處理器v4及以上版本有37個(gè)32位的寄存器

其中31個(gè)為通用寄存器;6個(gè)為狀態(tài)寄存器。31個(gè)通用寄存器R0~R15;R13_svc、R14_svc;R13_abt、R14_abt;R13_und、R14_und;R13_irq、R14_irq;R8_fiq-R14_fiq

6個(gè)狀態(tài)寄存器CPSRSPSR_svc、SPSR_abt、SPSR_und、SPSR_irq和SPSR_fiq當(dāng)前11頁(yè),總共39頁(yè)。1.2ARM9寄存器(2)

每一類處理器模式都有一組相應(yīng)的寄存器組;在任意的處理器模式下,可見的寄存器包括15個(gè)通用寄存器(R0-R14)、1個(gè)或2個(gè)狀態(tài)寄存器和程序寄存器。帶灰色底紋的單元格表示,用戶模式或系統(tǒng)模式使用的一般寄存器,已被異常模式特定的另一寄存器所替代。當(dāng)前12頁(yè),總共39頁(yè)。1.2ARM寄存器(4)1.2.2ARM的通用寄存器

通用寄存器包括R0~R15,可以分為三類:

─未分組寄存器R0~R7 ─分組寄存器R8~R14 ─程序計(jì)數(shù)器PC(R15)

一、未分組寄存器R0~R7

在所有的運(yùn)行模式下,未分組寄存器都指向同一個(gè)物理寄存器,他們未被系統(tǒng)用作特殊的用途,是真正的通用寄存器。 因此,在中斷或異常處理進(jìn)行運(yùn)行模式轉(zhuǎn)換時(shí),由于不同的處理器運(yùn)行模式均使用相同的物理寄存器,可能會(huì)造成寄存器中數(shù)據(jù)的破壞,這一點(diǎn)在進(jìn)行程序設(shè)計(jì)時(shí)應(yīng)引起注意。當(dāng)前13頁(yè),總共39頁(yè)。1.2ARM寄存器(5)

二、分組的寄存器R8~R14

對(duì)于R8~R12,每一次所訪問(wèn)的物理寄存器,與處理器當(dāng)前的工作模式有關(guān)。1、R8~R12當(dāng)處理器工作于fiq模式時(shí),訪問(wèn)的寄存器為R8_fiq~R12_fiq;除fiq模式以外的其他模式,訪問(wèn)的寄存器為R8_usr~R12_usr。2、R13和R14:

每個(gè)寄存器對(duì)應(yīng)6個(gè)不同的物理寄存器,其中的一個(gè)是用戶模式與系統(tǒng)模式共用,另外5個(gè)物理寄存器,對(duì)應(yīng)于其他5種不同的異常模式。

采用以下的記號(hào)來(lái)區(qū)分不同的物理寄存器:

R13_<mode>R14_<mode>

其中,mode為以下幾種模式之一:usr、fiq、irq、svc、abt、und。當(dāng)前14頁(yè),總共39頁(yè)。1.2ARM寄存器(6)R13:寄存器R13在ARM指令中常用作堆棧指針SP。但這只是一種習(xí)慣用法,用戶也可使用其他的寄存器作為堆棧指針。而在Thumb指令集中,某些指令強(qiáng)制性的要求使用R13作為堆棧指針。

R14:寄存器R14也稱作子程序鏈接寄存器(SubroutineLinkRegister)或鏈接寄存器LR。 當(dāng)執(zhí)行BL子程序調(diào)用指令時(shí),R14中得到R15(程序計(jì)數(shù)器PC)的備份。其他情況下,R14用作通用寄存器。 與之類似,當(dāng)發(fā)生中斷或異常時(shí),對(duì)應(yīng)的分組寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用來(lái)保存R15的返回值。當(dāng)前15頁(yè),總共39頁(yè)。1.2ARM寄存器(7)

三、程序計(jì)數(shù)器PC(R15)寄存器R15用作程序計(jì)數(shù)器(PC)。

在ARM狀態(tài)下,位[1:0]為0,位[31:2]用于保存PC;在Thumb狀態(tài)下,位[0]為0,位[31:1]用于保存PC;

使用R15時(shí)注意:雖然R15可以用作通用寄存器,但是有一些指令在使用R15時(shí)有一些特殊限制,若不注意,執(zhí)行的結(jié)果將是不可預(yù)料的。所以,一般不這么使用。關(guān)于PC的值:由于ARM采用多級(jí)流水線技術(shù),所以PC總是指向正在取指的指令,而不是正在執(zhí)行的指令。也即PC總是指向當(dāng)前指令的下兩條指令的地址。因此,對(duì)于ARM指令集而言,PC的值為當(dāng)前指令的地址值加8個(gè)字節(jié)。當(dāng)前16頁(yè),總共39頁(yè)。1.2ARM寄存器(8)1.2.3ARM的狀態(tài)寄存器

一、兩種程序狀態(tài)寄存器 在ARM微處理器中,有CPSR和SPSR兩種程序狀態(tài)寄存器。1、當(dāng)前程序狀態(tài)寄存器CPSR(CurrentProgramStatusRegister)用來(lái)保存當(dāng)前程序狀態(tài)的寄存器。所有處理器模式下都可以訪問(wèn)當(dāng)前程序狀態(tài)寄存器CPSR。僅一個(gè)CPSR。2、保存程序狀態(tài)寄存器SPSR_mode

(SavedProgramStatusRegister) SPSR_mode用來(lái)進(jìn)行異常處理,其功能包括: ─保存ALU中的當(dāng)前操作信息 當(dāng)異常發(fā)生時(shí),用來(lái)保存CPSR的值,從異常返回時(shí),將

SPSR_mode復(fù)制到CPSR中,恢復(fù)CPSR的值。 ─控制允許和禁止中斷 修改SPSR的值 ─設(shè)置處理器的運(yùn)行模式 修改SPSR的值

問(wèn)題:一共有多少個(gè)SPSR?為什么?當(dāng)前17頁(yè),總共39頁(yè)。1.2.3ARM的狀態(tài)寄存器(2)

二、ARM狀態(tài)寄存器的格式

1、條件碼標(biāo)志位(保存ALU中的當(dāng)前操作信息)

N:正負(fù)號(hào)/大小標(biāo)志位

0表示:正數(shù)/大于;1表示:負(fù)數(shù)/小于

Z:零標(biāo)志位

0表示:結(jié)果不為零;1表示:結(jié)果為零

C:進(jìn)位/借位/移出位

0表示:未進(jìn)位/借位/移出0;1表示:進(jìn)位/未借位/移出1 V:溢出標(biāo)志位

0表示:結(jié)果未溢出;1表示:結(jié)果溢出3130292827…876543210NZCV(保留)IFTM4M3M2M1M0當(dāng)前18頁(yè),總共39頁(yè)。1.2.3ARM9的狀態(tài)寄存器(3) 2、控制位I、F中斷控制位——控制允許和禁止中斷I=1禁止IRQ中斷 I=0允許IRQ中斷F=1禁止FIQ中斷 F=0允許FIQ中斷T控制(標(biāo)志)位——反映處理器的運(yùn)行狀態(tài)T=1時(shí),程序運(yùn)行于Thumb狀態(tài)T=0時(shí),程序運(yùn)行于ARM狀態(tài)M控制位——決定了處理器的運(yùn)行模式當(dāng)發(fā)生異常時(shí)這些位被改變。如果處理器運(yùn)行在特權(quán)模式,這些位也可以由程序修改。M[4:0]10000100011001010011101111101111111模式用戶快中斷中斷管理中止未定義系統(tǒng)當(dāng)前19頁(yè),總共39頁(yè)。1.2.3ARM9的狀態(tài)寄存器(4) 3、保留位

CPSR中的其余位為保留位,當(dāng)改變CPSR中的條件碼標(biāo)志位或者控制位時(shí),保留位不要改變,在程序中也不要使用保留位來(lái)存儲(chǔ)數(shù)據(jù)。保留位將用于ARM版本的擴(kuò)展。1.2.4Thumb狀態(tài)下的寄存器組織

Thumb狀態(tài)下的寄存器集是ARM狀態(tài)下寄存器集的子集。程序員可以直接訪問(wèn)8個(gè)通用的寄存器(R0~R7),程序計(jì)數(shù)器PC、堆棧指針SP、鏈接寄存器LR和當(dāng)前狀態(tài)寄存器CPSP。當(dāng)前20頁(yè),總共39頁(yè)。本節(jié)主要內(nèi)容1、中斷和異常的概念2、ARM的異常中斷介紹3、ARM的異常中斷響應(yīng)過(guò)程4、中斷向量和中斷優(yōu)先級(jí)1.3ARM異常

當(dāng)前21頁(yè),總共39頁(yè)。1.3ARM異常

1.3.1中斷和異常的概念

1、中斷

當(dāng)CPU正在執(zhí)行程序時(shí),系統(tǒng)發(fā)生了一件急需處理的事件,CPU暫時(shí)停下正在執(zhí)行的程序,轉(zhuǎn)去處理相應(yīng)的事件,事件處理完后,CPU再返回執(zhí)行原來(lái)的程序,這種情況稱為中斷。這是中斷的本來(lái)意義。

中斷事件:引起CPU產(chǎn)生中斷、并且與CPU當(dāng)前所執(zhí)行的程序無(wú)關(guān)的、由外部硬件產(chǎn)生的事件,也叫中斷源。中斷事件也常稱為外中斷。

常說(shuō)的中斷:有時(shí)指的是中斷的本意,有時(shí)指的是外部中斷事件,即外中斷。

中斷是計(jì)算機(jī)系統(tǒng)基本的功能利用中斷,外設(shè)可以與CPU并行工作,當(dāng)外設(shè)需要傳輸數(shù)據(jù)或控制時(shí),向CPU發(fā)出中斷請(qǐng)求信號(hào)。CPU響應(yīng)其請(qǐng)求進(jìn)行處理。因此,使用中斷既可以實(shí)現(xiàn)CPU與外設(shè)并行工作,又可以實(shí)時(shí)處理各種緊急事件。當(dāng)前22頁(yè),總共39頁(yè)。1.3ARM異常

2、異常

是指CPU在執(zhí)行指令時(shí)出現(xiàn)的錯(cuò)誤,即不正常的情況。異常是與當(dāng)前所執(zhí)行的程序有關(guān)的。如存取數(shù)據(jù)或指令錯(cuò)誤、計(jì)算結(jié)果溢出等。

異常的處理:也用中斷的方式進(jìn)行處理。 計(jì)算機(jī)通常是用中斷來(lái)處理外中斷和異常,因此下面將二者均稱為異常。

3、ARM程序的三種執(zhí)行流程順序流程:每執(zhí)行一條ARM指令,程序計(jì)數(shù)器(PC)的值加4;每執(zhí)行一條Thumb指令,程序計(jì)數(shù)器寄存器(PC)的值加2,整個(gè)過(guò)程是按順序執(zhí)行。當(dāng)前23頁(yè),總共39頁(yè)。

對(duì)異常的說(shuō)明 當(dāng)系統(tǒng)運(yùn)行時(shí),異??赡軙?huì)隨時(shí)發(fā)生,為保證在ARM處理器發(fā)生異常時(shí)不至于處于未知狀態(tài),在應(yīng)用程序的設(shè)計(jì)中,首先要進(jìn)行異常處理,采用的方式是在異常向量表中的特定位置放置一條跳轉(zhuǎn)指令,跳轉(zhuǎn)到異常處理程序,當(dāng)ARM處理器發(fā)生異常時(shí),程序計(jì)數(shù)器PC會(huì)被強(qiáng)制設(shè)置為對(duì)應(yīng)的異常向量,從而跳轉(zhuǎn)到異常處理程序,當(dāng)異常處理完成以后,返回到主程序繼續(xù)執(zhí)行。 我們需要處理所有的異常,盡管我們可以簡(jiǎn)單的在某些異常處理程序處放置死循環(huán)。1.3ARM異常

當(dāng)前24頁(yè),總共39頁(yè)。1.3ARM異常

跳轉(zhuǎn)流程:程序執(zhí)行了跳轉(zhuǎn)指令,則要跳轉(zhuǎn)到特定的地址標(biāo)號(hào)處執(zhí)行,包括跳轉(zhuǎn)到子程序。例如,跳轉(zhuǎn)指令,B、BL、BLX和BX。

中斷流程:當(dāng)異常中斷發(fā)生時(shí),系統(tǒng)執(zhí)行完當(dāng)前指令后,將跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行。在當(dāng)異常中斷處理程序執(zhí)行完成后,程序返回到發(fā)生中斷的指令的下條指令處執(zhí)行。 在進(jìn)行異常中斷處理程序時(shí),要保存被中斷的程序的執(zhí)行現(xiàn)場(chǎng),在從異常中斷處理程序退出時(shí),要恢復(fù)被中斷的程序的執(zhí)行現(xiàn)場(chǎng)。

中斷處理與子程序調(diào)用的區(qū)別:中斷是隨機(jī)的,并且與正在執(zhí)行的程序無(wú)關(guān);子程序調(diào)用是程序的主動(dòng)行為,并且與正在執(zhí)行的程序密切相關(guān)。當(dāng)前25頁(yè),總共39頁(yè)。1.3.2ARM的異常

ARM有7種異常1、復(fù)位處理器上一旦有復(fù)位輸入,ARM處理器立刻停止執(zhí)行當(dāng)前指令。復(fù)位后,ARM處理器在禁止中斷的管理模式下,從地址0x00000000或0xFFFF0000開始執(zhí)行指令。2、未定義指令異常當(dāng)ARM處理器執(zhí)行協(xié)處理器指令時(shí),它必須等待任一外部協(xié)處理器應(yīng)答后,才能真正執(zhí)行這條指令。若協(xié)處理器沒(méi)有響應(yīng),就會(huì)出現(xiàn)未定義指令異常。未定義指令異常可用于在沒(méi)有物理協(xié)處理器(硬件)的系統(tǒng)上,對(duì)協(xié)處理器進(jìn)行軟件仿真,或在軟件仿真時(shí)進(jìn)行指令擴(kuò)展。1.3ARM異常

當(dāng)前26頁(yè),總共39頁(yè)。3、軟件中斷異常該異常由執(zhí)行SWI指令產(chǎn)生,可使用此機(jī)制進(jìn)行軟件仿真。4、預(yù)取中止(取指令存儲(chǔ)器中止)若處理器預(yù)取指令的地址不存在,或該地址不允許當(dāng)前指令訪問(wèn),存儲(chǔ)器會(huì)向處理器發(fā)出中止信號(hào),但當(dāng)預(yù)取的指令被執(zhí)行時(shí),才會(huì)產(chǎn)生指令預(yù)取中止異常。5、數(shù)據(jù)中止(訪問(wèn)數(shù)據(jù)存儲(chǔ)器中止)若處理器數(shù)據(jù)訪問(wèn)指令的地址不存在,或該地址不允許當(dāng)前指令訪問(wèn)時(shí),產(chǎn)生數(shù)據(jù)中止異常。1.3ARM異常

當(dāng)前27頁(yè),總共39頁(yè)。6、IRQ異常當(dāng)處理器的外部中斷請(qǐng)求引腳有效,且CPSR中的I=0,產(chǎn)生IRQ異常。系統(tǒng)的外設(shè)可通過(guò)該異常請(qǐng)求中斷服務(wù)。7、FIQ異常當(dāng)處理器的外部中斷請(qǐng)求引腳有效,且CPSR中的F=0,產(chǎn)生FIQ異常。

FIQ支持?jǐn)?shù)據(jù)傳送和通道處理,并有足夠的私有寄存器,從而在應(yīng)用中可避免對(duì)寄存器保存的需求,減少了開銷。1.3ARM異常

當(dāng)前28頁(yè),總共39頁(yè)。

1.3.3ARM異常中斷響應(yīng)過(guò)程

一、進(jìn)入異常 當(dāng)發(fā)生異常時(shí),除了復(fù)位異常立即中止當(dāng)前指令外,處理器盡量完成當(dāng)前指令,然后脫離當(dāng)前的程序去處理異常。ARM處理器對(duì)異常中斷的響應(yīng)過(guò)程如下:

1、保存返回地址 將引起異常指令的下一條指令的地址保存到新的異常模式x下的R14,即R14-<mode>中,使異常處理程序執(zhí)行完后能正確返回原程序。

2、保存當(dāng)前狀態(tài)寄存器CPSR的內(nèi)容 將CPSR的內(nèi)容保存到將要執(zhí)行的異常中斷對(duì)應(yīng)的SPSR中,便于中斷返回時(shí)恢復(fù)處理器當(dāng)前的狀態(tài)位、中斷屏蔽位以及各條件標(biāo)志位。1.3ARM異常當(dāng)前29頁(yè),總共39頁(yè)。

3、設(shè)置當(dāng)前狀態(tài)寄存器CPSR中的相應(yīng)位設(shè)置CPSR模式控制位CPSR[4:0],使處理器進(jìn)入相應(yīng)的執(zhí)行模式;設(shè)置中斷標(biāo)志位(CPSR[6]=1),禁止IRQ中斷;設(shè)置中斷標(biāo)志位(CPSR[7]=1)禁止FIQ中斷,當(dāng)進(jìn)入Reset或FIQ模式時(shí)。

4、轉(zhuǎn)去執(zhí)行中斷處理程序 取相應(yīng)的中斷向量給程序計(jì)數(shù)器PC,使程序開始執(zhí)行中斷處理程序。一般地說(shuō),矢量地址處將包含一條指向相應(yīng)程序的轉(zhuǎn)移指令,從而可跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行異常中斷處理程序。1.3ARM異常當(dāng)前30頁(yè),總共39頁(yè)。1.3ARM異常

ARM處理器對(duì)異常的響應(yīng)過(guò)程可以用偽代碼描述如下:

R14_<exception_mode>=returnlinkSPSR_<exception_mode>=CPSRCPSR[4:0]=exceptionmodenumberCPSR[5]=0/*當(dāng)運(yùn)行于ARM狀態(tài)時(shí)*/CPSR[6]=1 /*禁止新的IRQ中斷*/if<exception-mode>=ResetorFIQthenCPSR[7]=1 /*當(dāng)Reset或FIQ異常中斷時(shí)*/ /*禁止新的FIQ中斷*/PC=exceptionvectoraddress當(dāng)前31頁(yè),總共39頁(yè)。

注意使用異常模式下的特有寄存器

每個(gè)異常模式對(duì)應(yīng)有兩個(gè)寄存器R13_<mode>、R14_<mode>分別保存相應(yīng)模式下的堆棧指針、返回地址;堆棧指針可用來(lái)定義一個(gè)存儲(chǔ)區(qū)域保存其它用戶寄存器,在程序初始化時(shí)應(yīng)該對(duì)各種模式堆棧設(shè)置,便于隨時(shí)使用。

FIQ模式還有額外的專用寄存器R8_fiq~R12_fiq,使用這些寄存器可以加快快速中斷的處理速度。1.3ARM異常當(dāng)前32頁(yè),總共39頁(yè)。

二、異常返回

1、異常返回應(yīng)執(zhí)行的操作 異常處理完畢之后,ARM微處理器會(huì)執(zhí)行以下幾步操作從異常返回:將返回地址裝入PC

把連接寄存器LR的值減去相應(yīng)的偏移量,然后送到PC中?;謴?fù)CPSR的值將SPSR復(fù)制回CPSR中。清除中斷屏蔽位若在進(jìn)入異常處理時(shí)設(shè)置了中斷禁止位,要在此清除。

可以認(rèn)為應(yīng)用程序總是從復(fù)位異常處理程序開始執(zhí)行的,因此復(fù)位異常處理程序不需要返回。1.3ARM異常當(dāng)前33頁(yè),總共39頁(yè)。

2、各種異常返回方法

FIQ中斷返回 不管是在ARM狀態(tài)還是在Thumb狀態(tài)下進(jìn)入FIQ模式,F(xiàn)IQ處理程序均可以執(zhí)行以下指令從FIQ模式返回:

SUBSPC,R14-fiq,#4

指令預(yù)取中止(Abort

)異常返回 當(dāng)指令預(yù)取訪問(wèn)存儲(chǔ)器失敗時(shí),存儲(chǔ)器系統(tǒng)向ARM處理器發(fā)出存儲(chǔ)器中止(Abort)信號(hào),預(yù)取的指令被記為無(wú)效,但只有當(dāng)處理器試圖執(zhí)行無(wú)效指令時(shí),指令預(yù)取中止異常才會(huì)發(fā)生,如果指令未被執(zhí)行,例如在指令流水線中發(fā)生了跳轉(zhuǎn),則預(yù)取指令中止不會(huì)發(fā)生。 如果發(fā)生了指令預(yù)取中止異常,無(wú)論是在ARM狀態(tài)還是Thumb狀態(tài),其返回指令為:

SUBSPC,R14_abt,#4 ;重新執(zhí)行被中止的指令1.3ARM異常當(dāng)前34頁(yè),總共39頁(yè)。數(shù)據(jù)中止(Abort)異常返回 如果發(fā)生了數(shù)據(jù)中止異常,無(wú)論是在ARM狀態(tài)還是Thumb狀態(tài),其返回指令為:

SUBSPC,R14_abt,#8

重新執(zhí)行被中止的指令軟件中斷指令(SWI)異常返回 用于進(jìn)入管理模式,常用于請(qǐng)求執(zhí)行特定的管理功能。軟件中斷處理程序執(zhí)行以下指令可以從SWI模式返回,無(wú)論是在ARM狀態(tài)還是Thumb狀態(tài):

MOVSPC,R14_svc

以上指令恢復(fù)PC(從R14_svc)和CPSR

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論