好文档 - 专业文书写作范文服务资料分享网站

ARM7 中文手册

天下 分享 时间: 加入收藏 我要投稿 点赞

3.4.8中断响应时间

假设FIQ使能,对FIQ来讲,最长的延时,包括请求被传送到同步器的最长时间,(Tsyncmax)加上最长的指令完成需要的时间(Tidm,最长的指令是LDM,它加载所有的寄存器,包括PC),加上数据异常响应时间,(Texc),加上FIQ入口时间(Tfiq)。在这些时间之后,ARM7将从0X1C取指执行。

Tsyncmax为3个机器周期,Tidm为20个机器周期,Texc为3个机器周期,Tfiq为2个机器周期,所以总的时间加起来为28个周期。在用20MHz的处理器时钟的系统中,花费1.4Us。最大的IRQ延时时间计算方法类似,但是,必须考虑到这样一个事实,FIQ优先级比RIQ要高,进入RIQ的处理程序入口可能被延长任意时间,对FIQ,RIQ来讲最小的延迟由经过最少时间请求由同步器送到(Tsyncmax),加上FIQ入口时间(Tfiq),大约为四个机器周期。3.5Reset

当复位信号位低电平时,ARM7放弃正在执行的指令,继续从字地址加一取指。当nRESET再次位高时,ARM7执行以下步骤:

(1)用当前PC,CPSR中的值覆盖R14_svc和SPSR_svc,被保存的PC,CPSR的值没有定

义。

(2)强制M[4:0]=10011(管理模式),将CPSR中的F,I值位。(3)强制PC从地址0X00取出下一条指令。

21

This file is generated by AlienTools PDF Generator, unregister version

4.0指令集4.1指令集总述

图7显示了ARM7的指令集。

注意:一些指令代码没有定义,但不会导致无定义的指令陷阱产生,这些指令没有用到,因为在将来的ARM应用中,它们的含义可能会改变。

22

This file is generated by AlienTools PDF Generator, unregister version

4.2条件代码31条件代码2827????μμóé Foxit Reader ±à?-°?è¨??óD ·-°?2?????1??à1à?£

条件部分0000=EQ-Z置位(相等)0001=NE-Z清零(不等)0010=CS-C置位(无符号大于或者等于)0011=CC-C清零(无符号小于)0100=MI-N置位(负数)0101=PL-N清零(正数或零)0110=VS-V置位(溢出)0111=VS-V清零(没有溢出)1000=HI-C置位,Z清零(无符号大于)1001=LS-C清零,Z置位(无符号小于或者等于)1010=GE-N置位且V置位或者N清零且V清零(大于等于)1011=LT-N置位且V清零或者N清零且V置位(小于)1100=GT-Z清零且N或V置位,或者N清零且V清零(大于)1101=LE-Z置位,或者N置位且V清零,或者N清零且V置位(小于等于)1110=AL-ALWAYS1111=NV-NEVER图8:条件代码

所有ARM7的指令都是条件满足时才执行,意味着指令的执行或不执行跟CPSR中的N,Z,C,V标志位有关系,图8显示了这些条件代码。

如果指定Always(AL),指令将会无条件执行,而不管标志位的值如何。NEVER(NV)没有用到,因为在将来的ARM结构中会被重新定义。如果需要延时,建议用MOVR0,R0,如果没有指定条件代码,编译器默认为Always(AL)。

其它的条件代码已经在图8中详细说明。比如代码0000(Equal)表示只有在标志位Z置位时,指令才会被执行。相当这样一种情况,比较指令(CMP)执行后,两个操作数如果相等,则置位Z,如果不相等,比较指令清零Z标志位,并且指令不会执行(条件不满足)。

23

This file is generated by AlienTools PDF Generator, unregister version

4.3分枝和分支连接(B,BL)

此指令只有当条件为真时,才会被执行。在本章开始时定义了不同的条件。分支指令代码在图9显示。

分支指令包含了有符号的24位偏移量。左移两位,然后将符号位扩展到32位,加到PC。因此,此指令可以指定+/-32M字节的地址。分支偏移必须考虑预取操作,因为指令预取将导致PC为当前指令地址前两个字(8字接)。COND101L偏移量连接位0=分支1=分支连接条件代码区图9分支指令

分支地址超过+/-32M字节,必须用到偏移量或者已经被预先载入寄存器的绝对目的地址,在这种情况下如果需要一个分支连接操作,PC应该手动保存到R14。4.3.1连接位

分支联接(BL)写旧的PC的值到当前bank的连接寄存器R14中。考虑到指令预取,写到R14的PC值是可以调节的,并包含分支联接指令的下一条指令的地址。CPSR没有被PC保存。为了从被调用的分支联接程序返回,用指令MOVPC,R14(如果连接寄存器一直有效),或者LDMRn!,{..PC}(如果连接寄存器已经被保存到由Rn指定的堆栈中)。4.3.2指令周期

分支和分支联接指令会花费2S+1Nincremental周期,S,N将在5.1周期类型定义。4.3.3汇编语法B{L}{条件}<表达式>

{L}用于请求指令的分支联接格式,如果此项缺,R14将不受此指令影响。

{Cond}如图8所示,(EQ,NE,VS等),如果此项缺,编译器会认为AL(Always)无条件执行指令。

24

This file is generated by AlienTools PDF Generator, unregister version

<表达式>目的地址,编译器计算偏移量。{}为可选项,<>为必须项。4.3.4举例

here

BALBCMPBEQBLADDS

here;AL-Alwaysthere;默认ALwaysR1,#0;比较R1和0,如果相等,转倒fred,否则,继续fred;执行下一条指令

sub+ROM;调用子程序,在地址sub+ROMR1,#1;寄存器R1加1,根据结果设置CPSR的标志位,如果

C被清零,调用子程序。

BLCCsub;

This file is generated by AlienTools PDF Generator, unregister version

25

ARM7 中文手册

3.4.8中断响应时间假设FIQ使能,对FIQ来讲,最长的延时,包括请求被传送到同步器的最长时间,(Tsyncmax)加上最长的指令完成需要的时间(Tidm,最长的指令是LDM,它加载所有的寄存器,包括PC),加上数据异常响应时间,(Texc),加上FIQ入口时间(Tfiq)。在这些时间之后,ARM7将从0X1C取指执行。Tsyncmax为3个机器周期,Tidm为
推荐度:
点击下载文档文档为doc格式
71zld0wrvr0a0pl1tz2o
领取福利

微信扫码领取福利

微信扫码分享