嵌入式開發手記(一)嵌入式系統啟動過程 (S5pv210) 原

ARM 819瀏覽

1.ARM的編程模式

1.1當ARM 采用的是32位架構.

 

ARM 約定:

 

Byte : 8 bits

 

Halfword(半字):16 bits (2 byte)

 

Word : 32 bits (4 byte)聯想: 數據位寬4 byte,地址映射數據線32條

 

注意:Word在VC下是16bit,原因早期微軟16位時就定義為16bit,后來32位時候未改換成DWord.

 

1.2大部分ARM core 提供:

 

(2)ARM 指令集(32-bit)

 

(1)Thumb 指令集(16-bit )

 

(3)Thumb2指令集(16 &; 32bit)

 

小計:早期時候Thumb指令集,每條指令16bit。缺點:有時需要兩個指令完成,效率,時間。之后ARM指令集每條指令32bit,缺點:浪費資源。隨后Thumb2(armV7)[16&;32]。

 

1.3 Jazelle cores 支持 Java bytecode(支持JAVA加速)

2.ARM處理器工作模式

 

2.1 ARM 有7個基本工作模式:

 

(1)User : 非特權模式,大部分任務執行在這種模式

 

(2)FIQ : 當一個高優先級(fast) 中斷產生時將會進入這種模式

 

(3)IRQ : 當一個低優先級(normal) 中斷產生時將會進入這種模式

 

(4)Supervisor :當復位或軟中斷指令執行時將會進入這種模式

 

(5)Abort : 當存取異常時將會進入這種模式

 

(6)Undef : 當執行未定義指令時會進入這種模式

 

(7)System : 使用和User模式相同寄存器集的特權模式

 

2.2注意:

 

(1)除User(用戶模式)是Normal(普通模式)外,其他6種都是Privilege(特權模式)。

 

(2)Privilege中除Sys模式外,其余5種為異常模式。

 

(3)各種模式的切換,可以是程序員通過代碼主動切換(通過寫CPSR寄存器);也可以是CPU在某些情況下自動切換。

 

(4)各種模式下權限和可以訪問的寄存器不同。

 

2.3 CPU為什么設計這些模式?

 

(1)1CPU是硬件,OS是軟件,軟件的設計要依賴硬件的特性,硬件的設計要考慮軟件需要,便于實現軟件特性。

 

(2)操作系統有安全級別要求,因此CPU設計多種模式是為了方便操作系統的多種角色安全等級需要。

 

3.ARM的37個寄存器詳解

 

嵌入式開發筆記(三)ARM基礎知識_Java

 

3.1特點

 

1.ARM總共有37個寄存器,但是每種模式下最多只能看到18個寄存器,其他寄存器雖然名字相同但是在當前模式不可見。

 

例如:對r13這個名字來說,在ARM中共有6個名叫r13(又叫sp)的寄存器,但是在每種特定處理器模式下,只有一個r13是當前可見的,其他的r13必須切換到他的對應模式下才能看到。這種設計叫影子寄存器(banked register)

 

嵌入式開發筆記(三)ARM基礎知識_Java

 

注意: System模式使用user模式寄存器集

 

Sp:棧指針寄存器。

 

lr:保存指針

 

Cpsr:程序狀態寄存器

 

Spsr:保存cpsr狀態寄存器

 

3.1.2總結

 

(1)ARM共有37個寄存器,都是32位長度

 

(2)37個寄存器中30個為“通用”型,1個固定用作PC,一個固定用作CPSR, 5個固定用作5種異常模式下的SPSR。

 

3.2 CPSR程序狀態寄存器

 

嵌入式開發筆記(三)ARM基礎知識_Java

 

(1)Mode位:

 

處理器模式位(7種)

 

(2)T Bit

 

僅ARM xT架構支持

 

T src= 0: 處理器處于 ARM 狀態

 

T = 1: 處理器處于 Thumb 狀態

 

(3)中斷禁止位:

 

I = 1: 禁止 IRQ.

 

F = 1: 禁止 FIQ.

 

(4)J 位

 

僅ARM 5TE/J架構支持

 

J = 1: 處理器處于Jazelle狀態

 

(5)Q 位:

 

僅ARM 5TE/J架構支持

 

指示飽和狀態

 

(6)條件位:

 

N = Negative result from ALU

 

(當運算為負的自動為1)

 

Z = Zero result from ALU

 

(當運算為0的自動為1)

 

C = ALU operation Carried out

 

(當運算進位自動為1)

 

V = ALU operation oVerflowed

 

(當運算溢出自動為1)

 

3.2.2注意

 

(1)CPSR中各個bit位表明了CPU的某些狀態信息,這些信息非常重要, 和后面學到的匯編指令息息相關(譬如BLE指令中的E就和CPSR中的Z標志位有關)

 

(2)CPSR中的I、F位和開中斷、關中斷有關

 

(3)CPSR中的mode位(bit4~bit0共5位)決定了CPU的工作模式,在uboot 代碼中會使用匯編進行設置。

七星彩走势图2元网官网