ARM程式設計模式和7鐘工作模式

2022-07-25 09:09:12 字數 1991 閱讀 5914

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 當...