(一)Cortex-A多了一種工作模式:monitor
1. usr 用戶模式: 非特權模式,大部分應用程序運行在這個模式下
2. fiq 快中斷模式: 高優先級的中斷
3. irq 普通中斷模式: 低優先級的中斷
4. svc 超級用戶模式(管理模式): 軟中斷和復位
5. abort 中止模式: 當存取異常
讀取指令中止
讀取數據中止
6. undef 未定義指令模式: 執行到一個cpu不能識別的指令,當一個高版本的指令(cortex-a)運行到低版本的cpu(arm7)上是,可能會發生未定義指令異常
7. sytem 系統模式: 特權模式,os處在系統模式下
8. monitor 安全模式: 爲安全而擴展出
(二)由於Cotex-A多了一種monitor工作模式,所以又多了三個寄存器(R13_mon,R14_mon,SPSR_mon)
cortex-a的寄存器個數
1. system和usr公用一組寄存器
2. r0-r7 一組 ,8種模式公用一組 8
3. r8-r12 2組,fiq私有一組,其餘7種公用一組 2*5
4. r13(sp) 7組 7
5. r14(lr) 7組 7
6. r15(pc) 1組 1
7. cpsr 1組 1
8. spsr 6組 6
Cotex-A 寄存器一共有40個寄存器
r0 -r12 一般用途
sp 棧指針 用來指向一個可以使用的內存
lr(r14) 鏈接寄存器,用來保存pc的值
pc 程序計數器,用來記錄程序執行的位置
cpsr 當前程序狀態寄存器,用來記錄cpu運行的狀態
spsr 保存程序狀態寄存器
(三)ARM數據類型
ARM採用32位架構
ARM約定:
Byte(字節) 8bits
Halfword(半字) 16bits
Word(字) 32bits
Doubleword(雙字) 64bits (Cortex-A處理器特有)
(四)ARM指令集
大部分ARM core提供:
- ARM指令集(32-bit)
- Thumb指令集(16-bit)
ARM11處理器:
- ARM指令集(32-bit)
- 16位和32位的Thumb-2指令集
Cotex-A 處理器
- ARM指令集(32-bit)
- 16位和32位的Thumb-EE指令集
Jazelle cores支持Java bytecode
當處理器執行在Jazelle狀態:
所有指令8bits寬
處理器執行word存取,一次取4條指令
(五)AMBA (arm微控制器總線架構)
AMBA:
AHB 高速總線 cpu core ,DMA,SDRAM,SRAM,FLASH,APB BRIDGE
APB 外設總線 GPIO,INTERRUPT,I2C,SPI,TIMER,ADC,USB
ARM處理器的後綴名
T: 支持thumb 指令
D: 支持片上DEBUG
M: 64位的長乘法
I: 嵌入式ICE邏輯單元
S: TDMI的縮寫
E: 支持DSP指令
J: java字節碼
F: 硬件浮點
(六) cpsr的位含義
N 運算結果爲負
Z 運算結果爲0
C 進位,借位
V 溢出位
處理的狀態 4種
T=0;J = 1 處理器處於Jazelle狀態
T = 0;J=0; 處理器處於 ARM 狀態
T = 1;J=0 處理器處於 Thumb 狀態
T = 1;J=1 處理器處於 ThumbEE 狀態
處理器模式 8種
10000 User mode; 10001 FIQ mode; 10011 SVC mode;
10111 Abort mode; 11011 Undfined mode; 11111 System mode;
10110 Monitor mode; 10010 IRQ
(七)異常處理
1. 8種模式
7種特權,1種非特權(usr)
2. 7種特權:
2種 非異常的特權模式: system,mon
5種 異常的特權模式: fiq,irq,svc,undef,abort
3. 異常處理: 異常源一旦發生,cpu所做的處理,這個過程是cpu自動完成的,不需要代碼實現
異常處理實現需要7步,4大3小
4. 異常返回:
恢復pc
恢復cpsr
(八)異常向量表基地址:
arm7,ARM9,ARM10只可以在0(低端向量表)地址和0xffff0000(高端向量表)
arm11,cortex-a 可以在任意設置異常向量表的基地址,由cp15當中的c12寄存器控制異常向量表的基地址
(九)S5PV210地址映射:
地址範圍 範圍 用途
0x0 -0x1fffffff 512M boot
0x0 -0xffff 64K IROM norflash 三星固化的一段代碼,用來做啓動使用
0x20000-0x38000 96K IRAM 內部靜態內存
0x20000000-0x3fffffff 512M dram 用於外接動態內存
0x40000000-0x7fffffff 1G dram 用於外接動態內存
0xe0000000-0xffffffff 512M SFR 這一部分的地址用來接芯片內部的外設,這一部分的地址和芯片內部的電路連接在一起,用來控制片內外設