嵌入式開發第42天(ARM的體系結構)

ARM 197瀏覽

一、ARM的工作狀態

CPU執行的是匯編編譯后的機器碼。ARM處理器支持兩套匯編指令,一套是ARM匯編指令,另外一套THUMB匯編指令。

ARM匯編 ----> 32bits(默認)

THUMB匯編 --->16bits ???匯編指令相同的,使用的編譯器不同。

?

1ARM狀態:(32bitsARM狀態)

ARM處理器執行ARM匯編指令的時候,工作ARM狀態。

2Thumb狀態:

ARM處理執行THUMB匯編指令的時候,工作THUMB狀態

?

Thumb-2狀態:(ARMTHUMB混合)。

?

=========================================================

二、基本數據類型

1、字節 ?char ---->8bits

2、半字 ?short ---->16bits

3、字 ???int ??---->32bits

4、長字 ?long ?---->CPU的字長是一致的:64bits32bits

?

?

三、存儲格式

1、大端格式--->大字節序-->大尾格式--->big
endian

2、小端格式--->小字節序-->小尾格式--->littile
endian
(默認使用)

?

?

如何由可執行程序得到反匯編文件:

$ arm-linux-objdump -D main.elf > main.dis

?

?

一個反匯編的文件:

?

?

?

四、ARM的工作模式

ARM處理器在處理不同的內容的時候,處理器就會處于不同的工作模式。工作模式有7種。

不同的內容:

1FIQ模式(fiq):FIQ中斷(fast
Interrupt request

2IRQ模式(irq):IRQ中斷(Interrupt
request
) ?,FIQIRQ是中斷的兩種不同類型

3、管理模式(svc):處理器的配置權限比較高的模式。配置cacheMMU,配置內核。當ARM處理器復位,處理器是處于管理模式。

4、用戶模式(usr):一般運行用戶的應用程序

5、系統模式(sys):運行操作系統的任務

6、未定義模式(und):當處理器在運行指令的時候,發現有一個條指令不認識。處理器就會報錯,就進入未定義模式。

7、中止模式:數據訪問中止--->向一個地址下寫數據,但是這個地址不存在或者這個地址是只讀。 指令預取中止
--->當處理器從某個地址下讀取指令的時候,這個地址不存在或者這個地址禁止訪問。

?

?

?

五、ARM的流水線

ARM處理器將一條指令的執行過程分成了幾個步驟,在不同的時鐘周期來處理不同的步驟,這樣看起來在同一時刻處理器在處理多條指令,提高處理器的執行效率。

?


ARM7:三級流水線---->
取指、譯碼、執行

ARM9:五級流水線---->
取指、譯碼、執行、寄存器訪問、存儲器回寫

?

=========================================================

六、ARM內核中的寄存器

ARM處理器中的寄存器可以分成兩類:

內核的寄存器:只能用匯編訪問

???????????????R0~R15CPSRSPSR --->通用寄存器
+ 狀態寄存器

?

外圍模塊的寄存器:可以使用C來訪問

???????????????SFR ---- > GPJ2CONGPD0_CONGPH2DAT

???????????????SFR的訪問時通過地址來訪問。

?

?

?

ARM中寄存器的主要作用:

1、R0~R3:在C和匯編混合編程的時候,用來傳遞參數或返回值。ATPCS規則

???????????第一個參數通過R0傳遞,第二參數通過R1傳遞,超過4個的參數就通過stack
????

???????????來傳遞。

2、R4~R12:一般使用存放局部變量。C語言register關鍵字。

3、R13SP---Stack Pointer棧的指針寄存器。指向stack的地址。

4、R14LR ---Link Register鏈接寄存器:用來保存程序的返回地址。


5、R15PC---Program counter,取值那條指令的地址。

注意:

以上寄存器都是32bits

這些寄存器只能使用匯編語言來訪問。

一般在嵌入式平臺最開始執行的那段程序(bootloader-->u-boot)是使用匯編語言編寫。

?

6、CPSR---Current Program Status Register
當前程序狀態寄存器,反應
ARM當前的狀態。

?

1)ARM工作模式位

?

?

2)狀態位

查看ARM的工作狀態:0-->ARM狀態

??????????????????????1--> THUMB狀態

3)中斷的使能位--F/I

1 --->IRQ或FIQ是關閉的

0 --->IRQ或IRQ是打開的

?

4)條件標志位

算術運行的邏輯結果。NZCV

?

?

7、SPSR ---- Saved Program Status Register備份程序狀態寄存器

ARM的工作模式切換的時候,用來保存CPSR

?

?

七星彩走势图2元网官网