1. 一些對比緩存
芯片 6410 210 2440ide
ARM核 arm11 A8 arm9spa
指令結構 armv6 armv7 armv4指針
芯片手冊(S342440)中的Product Overview可查看ARM核orm
ARM核手冊(ARM920T)可查看指令結構接口
S3C2440 | S3C6410 | S5PV210 | |
處理速度 | 405-533MHZ | 533-667MHZ | 800-1024MHZ |
緩存 | 16K | 16K | 32K |
內存接口 | SDRAM | SDRAM/DDR | DDR/DDR2 |
支持的OS | Linux,Wince | Linux,Wince,安卓 | Linux,Wince,安卓 |
2. ARM工做模式(參考《ARM Architecture Reference Manual》ARM體系結構參考手冊)內存
USER | usr | 普通應用程序運行的普通模式,Linux用戶態程序運行在該模式下 |
FIQ | fiq | 快速中斷模式 |
IRQ | irq | 普通中斷模式 |
Superviso | svc | 保護模式,系統級運行模式,Linux內核運行於該模式下 |
Abort | abt | 異常模式,訪問虛擬內存時用 |
Undefind | und | 未定義模式,執行非ARM指令時用 |
System | sys | 系統模式,ARMv4以上纔有的模式 |
3. ARM寄存器ci
不分組的r0-r7(8個) | 分組寄存器r8-r14(23個) | 程序計數器PC(1個) |
r0-r7 | 7個工做模式(共享) | 8 個 |
r8-r12 | irq,usr,sys,svc,abt,und(共享) | 5 個 |
fiq(獨享) | 5 個 | |
r13,r14 | usr,sys(共享) | 2 個 |
irq,fiq,svc,abt,und(獨享) | 5 X 2 = 10 個 | |
r15 | 7個工做模式(共享) | 1 個 |
CPSR | 7個工做模式(共享) | 1 個 |
SPSR | svc,abt,und,irq,fiq(獨享) | 5 X 1 = 5 個 |
r13 充當SP(stack pointer)堆棧指針it
r14 充當LR連接寄存器,保存寄存器返回地址,以及中斷後的返回地址table
r15 程序計數器PC指針
31 | 30 | 29 | 28 | 27 | ~ | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
N | Z | C | V | 保留 | I | F | T | M4 | M3 | M2 | M1 | M0 | |||||
N | Negative/Less Than | I | IRQ disable | ||||||||||||||
Z | Zero | F | FIQ disable | ||||||||||||||
C | Carry/Borrow/Extend | T | State bit | ||||||||||||||
V | Overflow | M0~4 | Mode bits |
3.1 條件碼標誌
N、Z、C、V均爲條件碼標誌位。它們的內容可被算術或邏輯運算的結果所改變,而且能夠決定某條指令是否被執行。條件碼標誌各位的具體含義以下表所示:
標誌位 | 含 義 |
N | 當用兩個補碼錶示的帶符號數進行運算時,N=1表示運算的結果爲負數;N=0表示運算的結果爲正數或零 |
Z | Z=1表示運算的結果爲零,Z=0表示運算的結果非零。 |
C | 能夠有4種方法設置C的值: |
-加法運算(包括CMP):當運算結果產生了進位時(無符號數溢出),C=1,不然C=0。 | |
-減法運算(包括CMP):當運算時產生了借位時(無符號數溢出),C=0,不然C=1。 | |
-對於包含移位操做的非加/減運算指令,C爲移出值的最後一位。 | |
-對於其它的非加/減運算指令,C的值一般不會改變。 | |
V | 能夠有2種方法設置V的值: |
-對於加減法運算指令,當操做數和運算結果爲二進制的補碼錶示的帶符號數時,V=1表示符號位溢出 | |
-對於其它的非加/減運算指令,V的值一般不會改變。 | |
Q | 在ARM V5及以上版本的E系列處理器中,用Q標誌位指示加強的DSP運算指令是否發生了溢出。在其它版本的處理器中,Q標誌位無定義 |
在ARM狀態下,絕大多數的指令都是有條件執行的;在THUMB狀態下,僅有分支指令是條件執行的。
3.2 控制位
CPSR的低8位(包括I、F、T和M[4:0])稱爲控制位,當發生異常時這些位能夠被改變。若是處理器運行於特權模式時,這些位也能夠由程序修改。
中斷禁止位I、F:置1時,禁止IRQ中斷和FIQ中斷。
T標誌位:該位反映處理器的運行狀態。當該位爲1時,程序運行於THUMB狀態,不然運行於ARM狀態。該信號反映在外部引腳TBIT上。在程序中不得修改CPSR中的TBIT位,不然處理器工做狀態不能肯定。
運行模式位M[4:0]:這幾位是模式位,這些位決定了處理器的運行模式。具體含義以下表所示:
保留位:CPSR中的其他位爲保留位,當改變CPSR中的條件碼標誌位或者控制位時,保留位不要改變,在程序中也不要用保留位存儲數據。保留位將用於ARM版本的擴展。
M[4:0] | 處理器模式 | ARM模式可訪問的寄存器 | THUMB模式可訪問的寄存器 |
0b10000 | 用戶模式 | PC,CPSR,R0~R14 | PC,CPSR,R0~R7,LR,SP |
0b10001 | FIQ模式 | PC,CPSR,SPSR_fiq,R14_fiq~R8_fiq,R0~R7 | PC,CPSR,SPSR_fiq,LR_fiq,SP_fiq,R0~R7 |
0b10010 | IRQ模式 | PC,CPSR,SPSR_irq,R14_irq~R13_irq,R0~R12 | PC,CPSR,SPSR_irq,LR_irq,SP_irq,R0~R7 |
0b10011 | 管理模式 | PC,CPSR,SPSR_svc,R14_svc~R13_svc,R0~R12 | PC,CPSR,SPSR_svc,LR_svc,SP_svc,R0~R7 |
0b10111 | 停止模式 | PC,CPSR,SPSR_abt,R14_abt~R13_abt,R0~R12 | PC,CPSR,SPSR_abt,LR_abt,SP_abt,R0~R7 |
0b11011 | 未定義模式 | PC,CPSR,SPSR_und,R14_und~R13_und,R0~R12 | PC,CPSR,SPSR_und,LR_und,SP_und,R0~R7 |
0b11111 | 系統模式 | PC,CPSR,R0~R14 | PC,CPSR,LR,SP,R0~R74 |