EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
ARM处理器的工作状态在ARM的体系结构中,可以工作在三种不同的状态,一是ARM状态,二是Thumb状态及Thumb-2状态,三是调试状态。 0 ^) U9 ]2 A8 t
《嵌入式系统开发与应用教程(第2版)》上介绍说:有两种状态ARM状态和Thumb状态,当时初学甚为不解,现在一知半解时再看忽然想到了显示中的例子: ' t7 s2 {2 s/ |$ w1 ^2 F
ARM核就好比一个高中学校,那种包含普通高中和职业高中的。普通高中就相当于ARM状态,职业高中就相当于Thumb状态,这样还不能理解的话:可以认为 泡泡卡丁车 中普通模式和加速模式,,卡丁车加速要等到集气管加满,然后“ctrl”一下,就切换到了加速模式,气放完了就又回来了,不管加速模式还是普通模式都是在跑,只是速度不一样而已。 8 C) j8 @9 ^9 O. i) w0 h7 q
而ARM状态和Thumb状态可以直接通过某些指令直接切换,都是在运行程序,只不过指令长度不一样而已。这个概念对初学者相当重要,因为当ARM Thumb是什么还没弄清楚,怎么能理解两种状态呢? 7 |% U* T& n5 K7 i% t) u& ]2 W! b' w
他们之间的关系清楚了,这样就可以深入了解ARM状态是什么,Thumb状态是什么了。
# e& S' v# U8 F. B7 x- i/ V/ V另外:ARM的M系列主要用Thumb指令,ARM9和A系列主要用ARM指令
* Y: x3 R- V5 b; W6 D5 p5 i% dS3C2440.S启动代码中根本就没用Thumb指令。 ARM状态此时处理器执行32位的字对齐的ARM指令,Thumb状态此时处理器执行16位的,半字对齐的THUMB指令。 切换程序:从ARM到Thumb: LDR R0,=lable+1 BX R0 从ARM到Thumb: LDR R0,=lable BX R01,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
4 g1 B" \7 R% ]0 u1 b1 I. V R0指令将进入thumb状态 2,由thumb状态切换到ARM状态 寄存器最低位设置为0 BX指令:R0[0]=0,则执行BX" b. D: v* H: T( }
R0指令将进入arm状态 : w. T8 y: @4 i+ n4 I
当处理器进行异常处理时,则从异常向量地址开始执行,将自动进入ARM状态。 . B( h& ?9 l4 C( K+ q
注意:ARM处理器复位后开始执行代码时总是只处于ARM状态; * p' i7 C+ k5 h& I0 ^: K6 s, {
Cortex-M3只有Thumb-2状态和调试状态;
& R4 t+ \3 n% R& d; T/ P由于Thumb-2具有16位/32位指令功能,因此有了thumb-2就无需Thumb了。
; q9 i/ G8 r: S g+ J另外,具有Thumb-2技术的ARM处理器也无需再ARM状态和Thumb-2状态间进行切换了,因为thumb-2具有32位指令功能。
5 I1 D- l! F7 ]1 n! p+ ^0 S/ Q* e总的说,arm状态与Thumb状态的本质区别就是指令的位数不同,arm是32位的指令状态,而thumb是16位 的指令状态,而thumb-2状态是arm状态和thumb状态的结合和优化。 , t7 T& K# ^) I T3 y4 P2 ^* y; k
|