久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > ARM_Core的處理器模式與寄存器

ARM_Core的處理器模式與寄存器

作者: 時間:2016-11-09 來源:網絡 收藏
ARM處理器的工作狀態:ARM處理器有兩種工作狀態。在程序的執行過程中,處理器可以在兩種工作狀態之間切換,并且不影響

相應寄存器中的內容。

本文引用地址:http://cqxgywz.com/article/201611/317757.htm

ARM狀態,此時處理器執行32位對齊的ARM指令;BX指令,當操作數寄存器最低位為0時,進入ARM狀態。

Thumb,此時處理器執行16位對齊的Thumb指令。BX指令,當操作數寄存器最低位為1時,進入Thumb狀態。

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

來完成4Gbyte的地址空間的跳轉。

在進入異常中斷后,ARM內核會自動切換到ARM狀態,所以在異常中斷處理程序入口的是ARM指令,如果需要切換到Thumb狀態

必須在異常中斷返回前,切換到ARM工作狀態。當處理器在Thumb狀態下發生異常時,返回后,自動切換到Thumb狀態。

ARM處理器總是從ARM工作狀態開始的。

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

USE模式:正常用戶模式。

FIQ模式:快速中斷模式,支持高速數據傳輸。

IRQ模式:普通中斷模式。

SVC模式:Supervisor模式,操作系統保護模式,處理軟件中斷swi,reset.

ABT模式:數據,指令中止模式。

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

SYS模式:系統模式,運行特權操作系統任務。

除用戶模式之外的6中模式稱為特權模式,特權模式下,程序可以訪問所有的系統資源,可以任意的進行處理器模式的切換。

用戶模式下不能訪問一些受操作系統保護的系統資源,不能直接進行處理器模式切換,需要由應用程序產生異常處理。

特權模式中,除系統模式之外的5種模式稱為異常模式。

FIQ要比IRQ的響應快很多,首先FIQ的優先級比較高,再次ARM的FIQ會有自己更多的寄存器,由ARM自動保存。

異常處理過程:將下一條指令存入LR寄存器,CPSR賦值到SPSR,強制設置CPSR運行位,跳轉到異常處理函數。

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

異常向量表:0x0_0復位Reset,進入SVC模式。

0x0_4未定義指令,進入UND模式。

0x0_8軟件中斷,進入SVC模式。

0x0_C中止指令,進入ABT模式。

0x0_0010中止數據,進入ABT模式。

0x0_0014保留

0x0_0018IRQ中斷,進入IRQ模式。

0x0_001CFIQ中斷,進入FIQ模式。

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

R14_und, R13_irq, R14_irq, R8_frq-R14_frq。

6個狀態寄存器:CPSR, SPSR_svc, SPSR_abt, SPSR_und, SPSR_irq, SPSR_fiq。

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

CPSR當前程序狀態寄存器。SPSR備份程序狀態寄存器。

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:為什么會根據Rn的最低位來切換狀態呢,最低位是1表示8位對齊而不是16位啊。難道arm本身是16位地址對齊??



評論


技術專區

關閉