arm體系結構支援7種處理器模式:
使用者模式:正常程式工作模式,不能直接切換到其它模式。
快中斷模式:支援高速資料傳輸及通道處理。fir異常響應時,進入此模式
中斷模式:通用中斷處理。irq異常響應時,進入此模式。
管理模式:作業系統保護**,系統復位和軟體中斷時,進入此模式。
中止模式:支援虛擬記憶體,儲存器保護。
未定義模式:支援硬體協處理器和軟體**。未定義指令異常響應時,進入此模式。
系統模式:用於支援os的特權任務。與使用者模式類似,但可以直接切換到其它模式。
除 使用者模式外,其它都為特權模式。某些arm內部暫存器和一些片內外設在硬體設計上只允許特權模式下訪問。特權模式可以自由切換處理器模式。但
使用者模式不能直接切換到別的模式。
arm7tdmi核心包含1個cpsr和5個供異常處理程式使用的spsr.
arm7tdmi核心所有處理器狀態都儲存在cpsr中。
cpsr包含:
4個條件**標誌。
2個中斷禁止位。
5個隊當預處理器模式進行編碼的位。
1個用於只是當前執行指令(arm還是thumb)的位。
每個異常模式(快中斷模式,中斷模式,管理模式,中止模式,未定義模式)還帶有乙個
程式狀態儲存暫存器 spsr。用於儲存任務在異常發生之前的cpsr.
4個條件**標誌:
n:運算結果的b31值。
z:指令結果為0時,z=1(通常表示比較結果相等) . 否則z=0.
c: 使用加法運算時,b31位產生進製,c=1.否則c=0. 使用減法運算時,b31借位時,c=0,否則c=1。
v: 加減運算時,有符號溢位,v=1,否則v=0。
2個中斷禁止位:
i: 置位,irq 中斷被禁止。
f:置位,fiq中斷被禁止。
1個用於只是當前執行指令(arm還是thumb)的位:
置位:表示處理器在thumb.
清零:處理器在arm。
5個隊當預處理器模式進行編碼的位:
10000:使用者。
10001:快中斷。
10010:中斷
10011:管理
10111:中止
11011:未定義
11111:系統。
注意,在不同模式下,可見的暫存器不同。
使用mrs指令可以讀取狀態暫存器指令。
mrs r1, cpsr
mrs r2,spsr
使用msr指令,可以寫狀態暫存器。
例1:使能irq中斷:
mrs r0, cpsr //把cpsr內容放到ro中
bic r0, r0, #0x80 //將i 位清除。irq enable
msr cpsr_c ,r0
mov pc, lr
注意:axd中的processor registers項中,cpsr,spsr顯示模式如下:
nzcvqift_svc
nzcv:分別表示4個標誌位。小寫字母表示0 , 大寫字母表示1
ift分別表示irq,fiq,和執行指令標誌位。
svc表示工作模式為:管理模式。
ARM處理器模式切換
參考 arm體系的cpu有以下7種工作模式 1 使用者模式 usr 正常的程式執行狀態 2 快速中斷模式 fiq 3 中斷模式 irq 4 管理模式 svc 作業系統使用的保護模式 5 系統模式 sys 執行具有特權的作業系統任務 6 資料訪問終止模式 abt 資料或指令預取終止時進入該模式 7 未...
ARM處理器工作模式介紹
從今天開始學習arm異常中斷處理相關的知識點 首先學習arm的工作模式。arm處理器共有7種執行模式,如下表所示。arm處理器的7種執行模式 處理器模式描述 使用者模式 user 正常程式執行模式 快速中斷模式 fiq 用於高速資料傳輸和通道處理 外部中斷模式 irq 用於通常的中斷處理 特權模式 ...
ARM處理器模式
cpsr暫存器 arm v4的cpsr暫存器 和儲存它的spsr暫存器 中的位分配如下圖所示。處理器模式決定了哪些暫存器是活動的以及對cpsr訪問權。處理器模式要麼是特權模式,要麼是非特權模式。特權模式允許對cpsr的完全讀 寫訪問 與些相反,非特權模式只允許對cpsr的控制域進行讀訪問,但允許對條...