ARM處理器工作狀態和模式

2021-10-01 11:47:07 字數 2411 閱讀 1680

1、arm狀態:處理器執行32位對齊的arm指令;

2、thumb狀態:處理器執行16位對齊的arm指令。

它們之間的區別在於:thumb指令集不是完整的指令集,它是arm指令集的子集。但是thumb指令具有更高的**密度,即占用儲存空間小,僅為arm**規格的65%,但其效能卻下降的很少。所以,thumb指令集使arm處理器能應用到有限的儲存頻寬,並且,**密度要求很高的嵌入式系統中去。thumb指令集沒有協處理器指令、訊號量指令以及訪問cpsr或spsr的指令,沒有乘加指令及64位乘法指令等,且指令的第二運算元受到限制;除了跳轉指令b有條件執行功能外,其他指令均為無條件執行;大多數thumb資料處理指令採用2位址格式。

1、使用者模式(usr):用於正常執行程式;

2、快速中斷模式(fiq):用於高速資料傳輸;

3、外部中斷模式(irq):用於通常的中斷處理;

4、管理模式(svc):作業系統使用的保護模式;

5、資料訪問終止模式(abt):當資料或指令預取終止時進入該模式,可用於虛擬儲存以及儲存保護;

6、系統模式(sys):執行具有特權的作業系統任務;

7、未定義指令中止模式(und):當未定義的指令執行時進入該模式,可用於支援硬體。

除使用者模式以外,其餘6種模式都屬於特權模式。使用者模式不能夠直接和其他6種模式進行切換,需要借助中斷、異常,系統呼叫等。使用者模式主要為了設定應用程式的許可權,防止對系統造成破壞,起到保護作用。而其他6種模式直接可以直接進行切換。詳情可以看下圖:

cpsr和其他暫存器不一樣,其他暫存器是用來存放資料的,都是整個暫存器具有乙個含義.而cpsr暫存器是按位起作用的,也就是說,它的每一位都有專門的含義,記錄特定的資訊.(cpsr暫存器為32位)

cpsr的低8位(包括i、f、t和m[4:0])稱為控制位,程式無法修改,除非cpu執行於特權模式下,程式才能修改控制位!

n、z、c、v均為條件碼標誌位。它們的內容可被算術或邏輯運算的結果所改變,並且可以決定某條指令是否被執行!意義重大!

從對應表中可以看出m[4:0]各種狀態表示的含義。

當切換進入某乙個特權模式時,spsr儲存前乙個工作模式的cpsr值,這樣,當返回前乙個工作模式時,可以將spsr的值恢復到cpsr中;

總結如下:1.儲存alu中的當前操作資訊;

2.控制允許和禁止中斷;

3.設定處理器的執行模式。

arm中有兩條指令用於在狀態暫存器和通用暫存器之間傳送資料。即mrs、msr。在對cpsr,spsr暫存器進行操作不能使用mov,ldr等通用指令,只能使用特權指令mrs和msr。

在arm處理器中,只有mrs(move to register from state register)指令可以對狀態暫存器cpsr和spsr進行讀操作。通過讀cpsr可以獲得當預處理器的工作狀態。讀spsr暫存器可以獲得進入異常前的處理器狀態(因為只有異常模式下有spsr暫存器)。

比如:

mrs    r1,cpsr   ; 將cpsr狀態暫存器讀取,儲存到r1中

mrs r2,spsr ; 將spsr狀態暫存器讀取,儲存到r2中

msr cpsr_c,r0 ; 將修改後的值寫回 cpsr暫存器的對應控制域

首先,arm開發板在剛上電或者復位後,都會首先進入svc即管理模式,此時、程式計數器r15-pc會被自動賦值為0x0000 0000,bootloader就是在該模式下,位於0x0000 0000 的nor flash或sram中裝載的,因此,開機或重啟後bootloader會被首先執行。

接著,bootloader引導linux核心,此時,linux核心仍然執行在svc即管理模式下,當核心啟動完畢後,進入使用者態init程序時,核心將arm的當前程式狀態cpsr暫存器m[4:0]設定為10000,進而使用者態程式只能執行在arm的使用者模式。

由於arm使用者模式下對資源的訪問時受限制的,因此,使用者態可以實現對linux作業系統核心保護的目的。

需要強調的是:linux核心態是從arm的svc即管理模式下啟動的,但在某些情況下、如:硬體中斷、程式異常(被動)等情況下進入arm的其他特權模式,這時仍然可以進入核心態(因為就是可以操作核心了);同樣,linux使用者態是從arm使用者模式啟動的,但當進入arm系統模式時、仍然可以操作linux使用者態程式(進入使用者態,如init程序的啟動過程)。

即:linux核心從arm的svc模式下啟動,但核心態不僅僅指arm的svc模式(還包括可以訪問核心空間的所有arm模式);linux使用者程式從arm的使用者模式啟動,但使用者態不僅僅指arm的使用者模式。

arm處理器模式和arm處理器狀態的區別

arm處理器狀態 arm微處理器的工作狀態一般有兩種,並可在兩種狀態之間切換 第一種為arm狀態,此時處理器執行32位的字對齊的arm指令 第二種為thumb狀態,此時處理器執行16位的 半字對齊的thumb指令。在程式的執行過程中,微處理器可以隨時在兩種工作狀態之間切換,並且,處理器工作狀態的轉變...

ARM處理器工作模式

arm處理器共有 7種工作模式,如表 3 1所示 表 3 1 arm 處理器工作模式 處理器工作模式 特權模式 異常模式 說明 使用者 user 模式 使用者程式執行模式 系統 system 模式 該組模式下可以任意訪問系統資源 執行特權級的作業系統任務 一般中斷 irq 模式 通常由系統異常狀態切...

ARM處理器工作模式

arm有7種處理器模式,其由cpsr的 4 0 位決定。使用者模usr 正常程式動行的工作模式。只能讀cpsr不能寫 系統模式sys 與使用者模式共用一套暫存器。用於支援作業系統的特權任務模式,但它具有直接切換到其它模式的特權。管理模式svc 作業系統的特權任務模式。系統復位和軟體中斷時才進入這個模...