1.1. arm 採用的是32位架構
1.2. arm約定:
a. byte : 8 bits
b. halfword :16 bits (2 byte)
c. word : 32 bits (4 byte)
1.3. 大部分arm core 提供:
a. arm 指令集(32-bit)
b. thumb 指令集(16-bit )
c. thumb2指令集(16 & 32bit)
user : 非特權模式,大部分任務執行在這種模式
fiq : 當乙個高優先順序(fast) 中斷產生時將會進入這種模式
irq : 當乙個低優先順序(normal) 中斷產生時將會進入這種模式
supervisor :當復位或軟中斷指令執行時將會進入這種模式
abort : 當訪問異常時將會進入這種模式
undef : 當執行未定義指令時會進入這種模式
system : 使用和user模式相同暫存器集的特權模式
注:1.除user(使用者模式)是normal(普通模式)外,其他6種都是privilege(特權模式)。
2. privilege中除sys模式外,其餘5種為異常模式
3. 各種模式的切換,可以是程式設計師通過**主動切換(通過寫cpsr暫存器);也可以是cpu在某些情況下自動切換。
4. 各種模式下許可權和可以訪問的暫存器不同
3.3.1. sp指標表示棧指標,是程式工作區。
3.3.2. lr用來做返回控制,用來儲存返回值(函式呼叫返回值)。
3.3.3. pc表示程式控制暫存器,用來儲存程式執行在哪。
3.3.4. cpsr程式狀態暫存器
3.3.5. spsr是用來儲存cpsr。(例如:當從user轉換到irq模式時,將user的狀態儲存到irq的spsr中)
4.1.1. 異常會打斷正在執行的工作,並且一般我們希望異常處理完成後繼續回來執行原來的工作
4.1.2. 中斷是異常的一種。
4.2.1. 所有的cpu都有異常向量表,這是cpu設計時就設定好的,是硬體決定的
4.2.2. 當異常發生時,cpu會自動動作(pc跳轉到異常向量處處理異常,有時伴有一些輔助動作)
4.2.3. 異常向量表是硬體向軟體提供的處理異常的支援
4.3.1. 當異常產生時, arm core:
4.3.1.1. 拷貝 cpsr 到 spsr_
4.3.1.2. 設定適當的 cpsr 位
a. 改變處理器狀態進入 arm 態
b. 改變處理器模式進入相應的異常模式
c. 設定中斷禁止位禁止相應中斷 (如果需要)
4.3.1.3. 儲存返回位址到 lr_
4.3.1.4. 設定 pc 為相應的異常向量
4.3.2. 返回時, 異常處理需要:
4.3.2.1. 從 spsr_恢復cpsr
4.3.2.2. 從lr_恢復pc
note: 1.這些操作只能在 arm 態執行.
2. 以上說的是cpu設計時提供的異常向量表,一般成為一級向量表。有些cpu為了支援多個中斷,還會提供二級中斷向量表,處理思路類似於這裡說的一級中斷向量表。
參考《朱老師.1.2arm裸機課件》
ARM工作模式
從程式設計的角度看,arm微處理器的工作狀態有兩種,並可在兩種狀態之間切換 1 arm狀態,此時處理器執行32位的字對齊的arm指令 2 thumb狀態,此時處理器執行16位的,半字對齊的thumb指令 為了相容老晶元 在程式執行的過程中,可以在兩種狀態之間進行相應的轉換。處理器工作狀態的轉變並不影...
arm工作模式
從程式設計的角度看,arm微處理器的工作狀態有兩種,並可在兩種狀態之間切換 1 arm狀態,此時處理器執行32位的字對齊的arm指令 2 thumb狀態,此時處理器執行16位的,半字對齊的thumb指令 為了相容老晶元 在程式執行的過程中,可以在兩種狀態之間進行相應的轉換。處理器工作狀態的轉變並不影...
arm工作模式
一 arm工作模式 arm微處理器支援7種工作模式,分別為 1 使用者模式 usr 用於正常執行程式 2 快速中斷模式 fiq 用於高速資料傳輸 3 外部中斷模式 irq 用於通常的中斷處理 4 管理模式 svc 作業系統使用的保護模式 高許可權 復位和軟體中斷進入 5 資料訪問終止模式 abt 當...