1. 程式人生 > >ARM處理器的工作狀態(轉)

ARM處理器的工作狀態(轉)

dlink 對齊 不同 無需 所有 word 職業 itl .com

ARM處理器的工作狀態

在ARM的體系結構中,可以工作在三種不同的狀態,一是ARM狀態,二是Thumb狀態及Thumb-2狀態,三是調試狀態。

《嵌入式系統開發與應用教程(第2版)》上介紹說:有兩種狀態ARM狀態和Thumb狀態,當時初學甚為不解,現在一知半解時再看忽然想到了顯示中的例子:

ARM核就好比一個高中學校,那種包含普通高中和職業高中的。普通高中就相當於ARM狀態,職業高中就相當於Thumb狀態,這樣還不能理解的話:可以認為 泡泡卡丁車 中普通模式和加速模式,,卡丁車加速要等到集氣管加滿,然後“ctrl”一下,就切換到了加速模式,氣放完了就又回來了,不管加速模式還是普通模式都是在跑,只是速度不一樣而已。

而ARM狀態和Thumb狀態可以直接通過某些指令直接切換,都是在運行程序,只不過指令長度不一樣而已。這個概念對初學者相當重要,因為當ARM Thumb是什麽還沒弄清楚,怎麽能理解兩種狀態呢?

他們之間的關系清楚了,這樣就可以深入了解ARM狀態是什麽,Thumb狀態是什麽了。

另外:ARM的M系列主要用Thumb指令,ARM9和A系列主要用ARM指令

S3C2440.S啟動代碼中根本就沒用Thumb指令。

ARM狀態此時處理器執行32位的字對齊的ARM指令,Thumb狀態此時處理器執行16位的,半字對齊的THUMB指令。 切換程序:從ARM到Thumb: LDR R0,=lable+1 BX R0 從ARM到Thumb: LDR R0,=lable BX R0

1,ARM狀態

arm處理器工作於32位指令的狀態,所有指令均為32

2,thumb狀態

arm執行16位指令的狀態,即16位狀態

3,thumb-2狀態

這個狀態是ARM7版本的ARM處理器所具有的新的狀態,新的thumb-2內核技術兼有16位及32位指令,實現了更高的性能,更有效的功耗及更少地占用內存。總的來說,感覺這個狀態除了兼有arm和thumb的優點外,還在這兩種狀態上有所提升,優化。

4,調試狀態

處理器停機時進入調試狀態。

5,arm與thumb間的切換

1,由arm狀態切換到thumb

  狀態將寄存器的最低位設置為1

BX指令:R0[0]=1,則執行BX
  R0指令將進入thumb狀態

2,由thumb狀態切換到ARM狀態

寄存器最低位設置為0

BX指令:R0[0]=0,則執行BX
R0指令將進入arm狀態


當處理器進行異常處理時,則從異常向量地址開始執行,將自動進入ARM狀態。


註意:ARM處理器復位後開始執行代碼時總是只處於ARM狀態;

Cortex-M3只有Thumb-2狀態和調試狀態;

由於Thumb-2具有16位/32位指令功能,因此有了thumb-2就無需Thumb了。

另外,具有Thumb-2技術的ARM處理器也無需再ARM狀態和Thumb-2狀態間進行切換了,因為thumb-2具有32位指令功能。

總的說,arm狀態與Thumb狀態的本質區別就是指令的位數不同,arm是32位的指令狀態,而thumb是16位 的指令狀態,而thumb-2狀態是arm狀態和thumb狀態的結合和優化。

ARM處理器的工作狀態(轉)