1. 程式人生 > >嵌入式開發第42天(ARM的體系結構)

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

一、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