專題2-我從內部看ARM-ARM工作模式+寄存器詳解

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)具體如下圖:
這裏寫圖片描述

爲什麼異常模式下既有CPSRSPSR兩個狀態寄存器,比方說,來了一箇中斷,要進入中斷模式,現在程序狀態寄存器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是鏈接寄存器保存了跳轉之前的地址

發佈了33 篇原創文章 · 獲贊 22 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章