ARM編程的編程模式和一些概念理解的地方

ARM 209瀏覽

ARM編程的編程模式和一些概念理解的地方

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
---參考朱有鵬裸機編程

1、ARM的編程模式和7種工作模式

(1)ARM的基本設定

? ? ? ? ?ARM采用的是32位的架構

? ? ? ? ?ARM約定: ?BYTE:8bit,

? ? ? HalfWord:16bit,(2bytes)

? ? ? Word ? ? ?:32bit,(4bytes)


(2)大部分ARM core提供:

? ? ? ? ARM指令集(32bit) ? ?Thumb指令集(16bit) ? Thumb2指令集(16 & 32bit)


Thumb指令集都是16位的,CPU匯編指令集是010101的序列

這個指令本身是16位

ARM指令集是32位才可以代表一個符號語言。

16位的指令就無法完成一些32位異常處理的指令


2、ARM處理器工作模式:

1、USER:非特權模式,大部分任務執行在這種模式

2、FIQ:當一個高優先級(FAST)中斷產生時將會進入這種狀態

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

4、Superisor:當復位或軟中斷指令執行將會進入這種模式

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

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

7、System:使用和Uesr模式相同寄存器的特權模式。

各種模式的切換,可以是程序員通過代碼主動切換的(通過寫CPSR寄存器),

也可以在CPU在某些情況下自動切換。

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

3、CPU為什么需要這些模式?

CPU是硬件,OS是軟件,軟件的設計要依賴硬件的特性,硬件的設計

要考慮軟件需要,便于實現軟件特性。

操作系統有安全級別要求,因此CPU設計多種模式是為了方便操作系統

的多種角色安全等級需要。

硬件和軟件是互相依賴的。

一跑操作系統就有意義了。

SVC模式:BootLoader的之間的才開始跑的。

3、ARM37個寄存器的詳解:

這些模式可以幫助CPU實現權限管控。

ARM的37個通用寄存器。

特殊功能寄存器是外設的寄存器。

ARM CPU本身編程的東西,

是一種IO和內存統一編址的,特殊功能寄存器

通用寄存器沒有地址,但是每一個寄存器都有一個名字。

1、ARM總共有37個寄存器,但是每一種模式下最多只能看到18個寄存器,

其他寄存器雖然名字相同但是在當前模式不可見。

2、R14這個名字來說,在ARM中共有6個名叫R14(SP)寄存器,

但是在每種特定處理器下,只有一個R14是可見了。

其他的R14必須切換到他的對應模式下才能看到,這種設計叫影子寄存器banked register

3、你只要自己去切換模式就可以了,不需要寫代碼去操作的。


(1)USER模式下面有R0-R12 ,R13(SP),R14(LR),R15(PC)

? ? ? ? ?CPSR的寄存器

(2)FIQ模式下面有R0-R7, 自己特有的R8-R14寄存器,但是所有的PC指針

和CPSR都是一樣的,因為,這個是指定CPU的運行的,是唯一的存在的。

(3)SPSR是為了存放前一種狀態的PC的指針的,為了運行完這些異常狀態

然后返回的指針的依據。


















七星彩走势图2元网官网