微處理機 Microprocessor (100上) ARM 內核嵌入式SOC原理 Privileged modes 2011/10/20
特權模式 當前的模式狀態可以依據CPSR[4:0]這5個bits來決定。 大部分程式是在「使用者(User)」模式下進行。 ARM擁有其他非User模式的特權模式,其通常用來執行中斷服務、例外事件,或者是存取受保護的資源。 模式的改變可以由軟體控制或是經由外部中斷和例外事件的處理所產生。 當前的模式狀態可以依據CPSR[4:0]這5個bits來決定。
ARM 操作模式
ARM CPSR 格式
CPSR[4:0] 模式位元
暫存器 在每種操作模式下,都有和其他模式共用的暫存器,以及其獨立使用的暫存器
例外事件向量位址 存放一個Branch指令
例外事件優先權 若在同一個時間內,多個例外事件同時產生時,ARM的固定優先權系統會決定例外事件的執行順序。 其優先順序如下所示: Reset; (最高優先權) Data Abort; FIQ; IRQ; Prefetch Abort; 未定義指令,軟體中斷; (最低優先權)
進入例外事件的動作 保存下一個指令的位置到適當的連結暫存器 保存當前模式暫存器的資料 複製CPSR到適當的SPSR 強迫PC從適當的例外事件向量去抓取下一個指令
離開例外事件的動作 恢復更改過的暫存器資料 將SPSR複製放回CPSR 將適當的下一個指令位置搬移到PC
變換模式 Change CPSR[4:0]: MRS:從CPSR或SPSR到暫存器的傳送指令 MSR:從暫存器到CPSR或SPSR的傳送指令 MRS R0, CPSR BIC R0, R0, #0x1F ORR R0, R0, #<Mod_bit> MSR CPSR_C, R0 MRS:從CPSR或SPSR到暫存器的傳送指令 MSR:從暫存器到CPSR或SPSR的傳送指令 CPSR_<fields>: <fields>字母 涵義 遮罩位元 C 控制位元組 [7:0] X 擴展位元組 [15:8] S 狀態位元組 [23:16] f 旗標位元組 [31:24]
範例程式
實習問題 實習一: 修改範例程式,使例外事件可以在原程式(R7=(4+6)*8)任何位 置進行中斷處理(計算R7=5!),轉換在IRQ Mode下執行。 實習二: 接續實習一,增加額外的例外事件(在THUMB狀態下計算R8=20+21+……+25),使其能在IRQ模式下的例外事件(計算R7=5!)進行中斷處理,並轉換在FIQ模式下執行。 (SVC Mode(ARM) -> IRQ Mode(ARM) -> FIQ Mode(THUMB)) 作完請找助教檢查