1、ARM家族大檢閱
1)名字歸類
(1)芯片:
2440(arm9核–採用ARMv4指令架構)
6410(arm11核–採用ARMv6指令架構)
210 (Cortex A8核–採用ARMv7指令架構)
(2)ARM核演變
ARM核演變:ARM—–cortex,在 ARM11 以後,ARM 公司使用了新的命名方式:Cortex
Cortex-M —》微控制器市場、工控領域,相當於單片機,分爲 Cortex-M0、Cortex-M0+、Cortex-M1、Cortex-M3、Cortex-M4 等幾個檔次。
Cortex-R —》主要目標是高端的實時系統,包括基帶、汽車、大容量存儲、工業和醫療市場等等,分爲 Cortex-R4、Cortex-R5、Cortex-R7 幾個檔次。
Cortex-A —》主要面向通用處理應用市場,可向託管豐富 OS 平臺和用戶應用程序的設備提供全方位的從超低成本手機、智能手機、移動計算平臺、數字電視和機頂盒到企業網絡、打印機和服務器解決方案,處理器有:Cortex-A5、Cortex-A7、Cortex-A8、Cortex-A9、Cortex-A12、Cortex-A15、Cortex-A17、Cortex-53、Cortex-A57 等等。
備註:
ARM7相當於cortex-M3,可能M3性能稍微好一點
ARM9和ARM11性能介於cortex-R4和cortex-A4之間
(3)指令架構:ARMv6 ARMv7
2)比較2440、6410、210
2440 6410 210
處理速度 400~500Mb 533~667Mb 800Mb~1G
緩存 16kb 16kb 32kb
內存接口 SDRAM SDRAM/DDR DDR1/DDR2
支持OS WINCE/LINUX WINCE/LINUX/Android WINCE/LINUX/Android
其它 宣佈停產
2、ARM工作模式
在7種不同的工作模式下,訪問的寄存器不同,充分的保護操作系統。
可以在軟件控制下進行模式更改,也可以由外部中斷或異常處理引起.。
大多數應用程序在用戶模式下執行。當處理器在用戶模式下,正在執行的程序無法訪問一些受保護的系統資源。
3、ARM寄存器詳解
ARM寄存器:共有37個寄存器
1)通用寄存器(31個)
———-1)不分組寄存器:R0~R7 (如圖 8個)
———-2)分組寄存器:R8~R14(如圖 22個)
R12爲內部過程調用寄存器(IP),R13爲堆棧寄存器(SP),R14爲鏈接寄存器(LR)(在調用函數時,保存現在的地址以便能返回)
———-3)程序計數器:pc(R15)
2)程序狀態字寄存器(6個)
(1)具體如下圖:
爲什麼異常模式下既有CPSR和SPSR兩個狀態寄存器,比方說,來了一箇中斷,要進入中斷模式,現在程序狀態寄存器CPSR的值要發生改變,但爲了執行完中斷後能保留原來狀態寄存器的值,可以先把CPSR存儲到SPSR中,S–》Save。
(2)程序狀態寄存器的格式
CPSR寄存器重要位描述:
N:當比較兩個數字的大小時,當A>B,N保持0,當A < B,N變爲1
Z:也是比較兩個數,當A、B兩者相等時,Z爲1
I:當爲1時,不能產生IRQ中斷
F:當爲1時,不能產生FIQ中斷
M[4:0]:表明處理器工作不同的模式(可以看上上面的圖)
4、ARM尋址方式
所謂尋址方式就是處理器根據指令中給出的信息來找到指令所需操作數的方式。
1)立即數尋址
操作數本身就在指令中給出,只要取出指令也就取到了操作數。
例如:ADD R0,R0,#0x3f ;R0<–R0+0x3f
2)寄存器尋址
利用寄存器中的值作爲操作數,是一種執行效率較高的尋址方式。
ADD R0,R1,R2 ;R0<–R1+R2
3)寄存器間接尋址
寄存器間接尋址就是寄存器中存放的是操作數在內存中的地址。
例如:LDR R0,[R2] ;R0<–[R2]
4)基址變址尋址
將寄存器裏的內容(基地址)與指令中給出的地址偏移量相加,從而得到操作數在內存中的地址。
LDR R0,[R1,#4] ;R0<–[R1+4]
5)相對尋址
與基址變址尋址方式相類似,相對尋址PC指針的當前值爲基地址,指令中的地址標號作爲偏移量,將兩者相加之後得到操作數的有效地址。
BL NEXT //跳轉到子程序NEXT處執行
……
NEXT
……
MOV PC,LR //從子程序返回,LR是鏈接寄存器,保存了跳轉之前的地址