一. ARM的基本設定
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)
二. ARM處理器工作模式
2.1. ARM 有7個基本工作模式:
User : 非特權模式,大部分任務執行在這種模式
FIQ : 當一個高優先級(fast) 中斷產生時將會進入這種模式
IRQ : 當一個低優先級(normal) 中斷產生時將會進入這種模式
Supervisor :當復位或軟中斷指令執行時將會進入這種模式
Abort : 當存取異常時將會進入這種模式
Undef : 當執行未定義指令時會進入這種模式
System : 使用和User模式相同寄存器集的特權模式
注:1.除User(用戶模式)是Normal(普通模式)外,其他6種都是Privilege(特權模式)。
2. Privilege中除Sys模式外,其余5種為異常模式
3. 各種模式的切換,可以是程序員通過代碼主動切換(通過寫CPSR寄存器);也可以是CPU在某些情況下自動切換。
4. 各種模式下權限和可以訪問的寄存器不同
三. ARM通用寄存器
3.1. ARM共有37個寄存器,都是32位長度
3.2. 不同模式下的寄存器分布
3.3. 寄存器說明
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. 什么是異常
4.1.1. 異常會打斷正在執行的工作,并且一般我們希望異常處理完成后繼續回來執行原來的工作
4.1.2. 中斷是異常的一種。
4.2. 異常向量表
4.2.1. 所有的CPU都有異常向量表,這是CPU設計時就設定好的,是硬件決定的
4.2.2. 當異常發生時,CPU會自動動作(PC跳轉到異常向量處處理異常,有時伴有一些輔助動作)
4.2.3. 異常向量表是硬件向軟件提供的處理異常的支持
4.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_ 4.3.2.2. 從LR_ Note: 1.這些操作只能在 ARM 態執行. 2. 以上說的是CPU設計時提供的異常向量表,一般成為一級向量表。有些CPU為了支持多個中斷,還會提供二級中斷向量表,處理思路類似于這里說的一級中斷向量表。 參考《朱老師.1.2ARM裸機課件》
上一篇:INPUT輸入子系統——按鍵
下一篇:arm初識
推薦閱讀最新更新時間:2025-04-05 11:59




設計資源 培訓 開發板 精華推薦
- 迅為IMX6開發板Android應用-AndroidStudio-calculator測試
- 玩轉 ESP32 + Arduino (二十) SIM800L上傳數據到OneNet(新版Mqtts)
- 玩轉 ESP32 + Arduino (二十一) SPIFFS文件系統 (已棄用)
- 玩轉 ESP32 + Arduino (二十二) SIM800L上傳數據到阿里IOT(溫濕度和LBS)(NTP對時)
- 玩轉 ESP32 + Arduino (二十三) 多文件系統及全局變量
- 玩轉 ESP32 + Arduino (二十四) SD卡讀寫
- 玩轉 ESP32 + Arduino (二十五) SSD1306庫驅動OLED
- 玩轉 ESP32 + Arduino(二十六) 按鍵控制庫 OneButton
- 玩轉 ESP32 + Arduino(二十七) ESP對象
- 使用 ON Semiconductor 的 MC33501 的參考設計
- 【ART-Pi】電源方向:大電流雙向DC/DC變換器
- 智能柵極驅動器耦合器 TLP5214 保護操作和復位方法的應用說明
- SI3400ISO-EVB,用于 Si3400 以太網供電控制器的隔離式評估板
- 101020638, Grove - 3 軸模擬加速度計 ±40g (ADXL356C) 評估套件
- 使用 Analog Devices 的 LTC2912CDDB-3 的參考設計
- NSI45020T1G 大電流 LED 燈串的典型應用
- DC2403A,基于 LT6200 軌到軌 SAR ADC 驅動器放大器的演示板
- 大功率NE555
- 全開源逆向“爆破”工具