您的位置 首页 编程

ARM系统的7种作业形式

一、ARM体系的CPU有以下7种工作模式:用户模式(usr)大多数程序运行于用户模式特权模式系统模式(sys)运行具…

一、ARM系统的CPU有以下7种作业形式

用户形式(usr)       大多数程序运转于用户形式
特权形式 系统形式(sys)      运转具有特权的操作系统使命
反常形式 中止形式(irq)      
快速中止形式(fiq)     有必要进快处理中止请求,并脱离这个形式
管理形式(svc)      操作系统运用的维护形式
数据拜访停止形式(abt)  数据或指令预取停止时进入该形式
未定义指令停止形式(und) 未定义的指令履行时进入该形式

注解:

能够经过软件来进行形式切换,或许产生各类中止、反常时CPU主动进入相应的形式;

用户形式与系统形式两者运用相同的寄存器,都没有SPSR(Saved Program Statement Register,已保存程序状况寄存器),但系统形式比用户形式有更高的权限;

系统复位或开机时则进入到SVC形式下;

当遇到软中止(SWI,Software Interrupt)时,也将进入到SVC形式下;

进入特权形式是为了处理中止、反常、或许拜访被维护的系统资源;

ARM中止形式(IRQ)和快速中止形式(FIQ)差异:

1. FIQ的优先级比IRQ高。

2. IRQ能够被FIQ所中止,但FIQ不能被IRQ所中止,在处理FIQ时有必要要封闭中止。

3. FIQ形式下,比IRQ形式多了几个独立的寄存器。

不要小看这几个寄存器,ARM在编译的时分,假如你FIQ中止处理程序足够用这几个独立的寄存器来运作,它就不会进行通用寄存器的压栈,这样也省了一些时刻。

4. FIQ的中止向量地址在0x1C,而IRQ的在0x18。(也有的在FFFF001C以及FFFF0018)

写过完好汇编系统的都比较理解这点的不同,18只能放一条指令(18-1c 4个字节),为了不与1C处的FIQ抵触,这个当地只能跳转,而FIQ不一样,1C今后没有任何中止向量表了,这样能够直接在1C处放FIQ的中止处理程序,因为跳转的规模约束,至少少了一条跳转指令。

5.IRQ和FIQ的呼应推迟有差异

IRQ的呼应并不及时,从Verilog仿真来看,IRQ会推迟几个指令周期才跳转到中止向量处,看起来像是在等预取的指令履行完。FIQ的呼应不清楚,或许比IRQ快。

二、ARM系统的CPU有两种作业状况

1、ARM:32位,ARM状况履行字对齐的32位ARM指令。

2、THumb:16位,履行半字对齐的16位指令

注:1、ARM和Thumb两种状况之间的切换不影响处理器的作业形式和寄存器的内容。

2、ARM处理器在处理反常时,不过处理器处于什么状况,则都将切换到ARM状况。

  3、CPU上电处于ARM状况

三、寄存器

ARM有31个通用的32位寄存器,6个32位程序状况寄存器,共分为7组,有些寄存器是一切作业形式共用的,还有一些寄存器专归于每一种作业形式;

R13——栈指针寄存器,用于保存仓库指针

R14——程序衔接寄存器,当履行BL子程序调用指令时,R14中得到R15的备份,而当产生中止或反常时,R14保存R15的回来值;

R15——程序计数器;

快速中止形式有7个备份寄存器R8—R14,这使得进入快速中止形式履行很大部分程序时,乃至不需要保存任何寄存器;

其它特权形式都含有两个独立的寄存器副本R13、R14,这样能够令每个形式都具有自己的仓库指针和衔接寄存器;

四、当时程序状况寄存器(CPSR)

CPSR中各位含义如下:

T位:1——CPU处于Thumb状况, 0——CPU处于ARM状况;

I、F(中止制止位): 1——制止中止, 0——中止使能;

作业形式位:能够改动这些位,进行形式切换;

五、程序状况保存寄存器(SPSR)

当切换进入某一个特权形式时,SPSR保存前一个作业形式的CPSR值,这样,当回来前一个作业形式时,能够将SPSR的值康复到CPSR中;

六、形式切换

当反常产生,CPU进入相应的反常形式时,以下作业是由CPU主动完结的:

1、在反常形式的R14中保存前一作业形式的下一条行将履行的指令地址;

2、将CPSR的值到反常形式的SPSR中;

3、将CPSR的作业形式设为该反常形式对应的作业形式;

4、令PC值等于这个反常形式在反常向量表中的地址,即跳转去履行反常向量表中的相应指令;

从反常作业形式退回到之前的作业形式时,需要由软件来完结以下作业:

1、将反常形式的R14减去一个恰当的值(4或8)后赋给PC寄存器;

2、将反常形式SPSR的值赋给CPSR;

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/biancheng/276830.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部