新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM_Core的處理器模式與寄存器

ARM_Core的處理器模式與寄存器

作者: 時(shí)間:2016-11-09 來(lái)源:網(wǎng)絡(luò) 收藏
ARM處理器的工作狀態(tài):ARM處理器有兩種工作狀態(tài)。在程序的執(zhí)行過(guò)程中,處理器可以在兩種工作狀態(tài)之間切換,并且不影響

相應(yīng)寄存器中的內(nèi)容。

本文引用地址:http://m.butianyuan.cn/article/201611/317757.htm

ARM狀態(tài),此時(shí)處理器執(zhí)行32位對(duì)齊的ARM指令;BX指令,當(dāng)操作數(shù)寄存器最低位為0時(shí),進(jìn)入ARM狀態(tài)。

Thumb,此時(shí)處理器執(zhí)行16位對(duì)齊的Thumb指令。BX指令,當(dāng)操作數(shù)寄存器最低位為1時(shí),進(jìn)入Thumb狀態(tài)。

BX(Branch Exchange):BX Rn; ##其中Rn可以是R0-R15中的任意一個(gè)。指令通過(guò)將寄存器Rn的內(nèi)容拷貝到程序計(jì)數(shù)器PC

來(lái)完成4Gbyte的地址空間的跳轉(zhuǎn)。

在進(jìn)入異常中斷后,ARM內(nèi)核會(huì)自動(dòng)切換到ARM狀態(tài),所以在異常中斷處理程序入口的是ARM指令,如果需要切換到Thumb狀態(tài)

必須在異常中斷返回前,切換到ARM工作狀態(tài)。當(dāng)處理器在Thumb狀態(tài)下發(fā)生異常時(shí),返回后,自動(dòng)切換到Thumb狀態(tài)。

ARM處理器總是從ARM工作狀態(tài)開始的。

ARM處理器的7中工作模式:

USE模式:正常用戶模式。

FIQ模式:快速中斷模式,支持高速數(shù)據(jù)傳輸。

IRQ模式:普通中斷模式。

SVC模式:Supervisor模式,操作系統(tǒng)保護(hù)模式,處理軟件中斷swi,reset.

ABT模式:數(shù)據(jù),指令中止模式。

UND模式:未定義模式,支持軟件仿真。

SYS模式:系統(tǒng)模式,運(yùn)行特權(quán)操作系統(tǒng)任務(wù)。

除用戶模式之外的6中模式稱為特權(quán)模式,特權(quán)模式下,程序可以訪問(wèn)所有的系統(tǒng)資源,可以任意的進(jìn)行處理器模式的切換。

用戶模式下不能訪問(wèn)一些受操作系統(tǒng)保護(hù)的系統(tǒng)資源,不能直接進(jìn)行處理器模式切換,需要由應(yīng)用程序產(chǎn)生異常處理。

特權(quán)模式中,除系統(tǒng)模式之外的5種模式稱為異常模式。

FIQ要比IRQ的響應(yīng)快很多,首先FIQ的優(yōu)先級(jí)比較高,再次ARM的FIQ會(huì)有自己更多的寄存器,由ARM自動(dòng)保存。

異常處理過(guò)程:將下一條指令存入LR寄存器,CPSR賦值到SPSR,強(qiáng)制設(shè)置CPSR運(yùn)行位,跳轉(zhuǎn)到異常處理函數(shù)。

返回:將LR中的值減相應(yīng)的偏移量送到PC中,將SPSR的值到CPSR中。

異常向量表:0x0_0復(fù)位Reset,進(jìn)入SVC模式。

0x0_4未定義指令,進(jìn)入U(xiǎn)ND模式。

0x0_8軟件中斷,進(jìn)入SVC模式。

0x0_C中止指令,進(jìn)入ABT模式。

0x0_0010中止數(shù)據(jù),進(jìn)入ABT模式。

0x0_0014保留

0x0_0018IRQ中斷,進(jìn)入IRQ模式。

0x0_001CFIQ中斷,進(jìn)入FIQ模式。

ARM處理器中一共有37個(gè)寄存器。分別有31個(gè)通用寄存器:R0-R15, R13_svc, R14_svc, R13_abt, R14_abt, R13_und,

R14_und, R13_irq, R14_irq, R8_frq-R14_frq。

6個(gè)狀態(tài)寄存器:CPSR, SPSR_svc, SPSR_abt, SPSR_und, SPSR_irq, SPSR_fiq。

R13通常用作堆棧指針。R14通常用作子程序連接。

CPSR當(dāng)前程序狀態(tài)寄存器。SPSR備份程序狀態(tài)寄存器。

31--28:NZCV(Negative Zero Carry Overflow)

278:Reserve

7-5:IFT(IRQ disable FIQ disable State bit)

4-0:Mode bits

0b10用戶模式,0b11FIQ模式,0b10010IRQ模式,0b10011SVC模式,0b10ABT模式,

0b11011UND模式,0b11SYS模式。

question:為什么會(huì)根據(jù)Rn的最低位來(lái)切換狀態(tài)呢,最低位是1表示8位對(duì)齊而不是16位啊。難道arm本身是16位地址對(duì)齊??



關(guān)鍵詞: ARM_處理器模式寄存

評(píng)論


技術(shù)專區(qū)

關(guān)閉