收藏 分享(赏)

ARM7中文数据手册.pdf

上传人:精品资料 文档编号:9626998 上传时间:2019-08-19 格式:PDF 页数:94 大小:1.78MB
下载 相关 举报
ARM7中文数据手册.pdf_第1页
第1页 / 共94页
ARM7中文数据手册.pdf_第2页
第2页 / 共94页
ARM7中文数据手册.pdf_第3页
第3页 / 共94页
ARM7中文数据手册.pdf_第4页
第4页 / 共94页
ARM7中文数据手册.pdf_第5页
第5页 / 共94页
点击查看更多>>
资源描述

1、1ARM7数据手册http:/翻译:aufanThis file is generated by AlienTools PDF Generator, unregister version2序言:ARM7是一种低电压,通用32位RISC微处理器单元,可作一般应用或嵌入到ASIC或CSIC中,其简洁一流的设计特别适用于电源敏感的应用中。ARM7的小尺寸使它特别适合集成到比较大的客户芯片中,此芯片中也可以包含RAM, ROM, DSP,逻辑控制和其他代码。增强特性:ARM7和ARM6有相似性,但增加了以下功能:基于亚微米的制程,增加了速度,减少了电源消耗3V操作,很小的电源消耗,并同5V系统兼容较高

2、的时钟对所以程序执行较快。特性总结:l 32位的RISC结构处理器(包括32位地址线和数据线);l Little/Big Endian操作模式;l 高性能RISC17 MIPS sustained 25 MHz (25 MIPS peak) 3Vl 较低的电压损耗0.6mA/MHz 3V fabricated in .8 m CMOS全静态操作l 适用于对电源比较敏感的应用中l 快速中断响应l 适用于实时系统l 支持虚拟内存l 支持高级语言l 简单但功能强大的指令系统应用ARM7适用于那些需要紧凑且功能强大的RISC处理器系统电讯GSM终端控制数据通信协议转换便携式计算机掌上电脑自动控制系统发

3、动机管理单元信息存贮系统存储卡图像处理JOEG控制器This file is generated by AlienTools PDF Generator, unregister version3目录1.0简介1.1 ARM7模块图1.2 ARM7功能图2.0信号描述3.0编程模式3.1硬件配置信号3.2操作模式选择3.3寄存器3.4异常3.5复位信号4.0指令系统4.1指令系统总述4.2条件代码4.3分支和分支连接指令4.4数据处理指令4.5 PSR传输指令(MRS,MSR)4.6乘法和乘加指令(MUL,MLA)4.7单次数据传输(LDR,STR)4.8数据块传输(LDM,STM)4.9单次数

4、据交换(SWP)4.10软件中断4.11协处理器数据操作(CDP)4.12协处理器数据传输(LDC,STC)4.13协处理器寄存器传输(MRC,MCR)4.14无定义指令4.15举例5.0存储器界面5.1周期类型5.2字节寻址5.3地址时序5.4存储器管理5.5锁操作5.6延续访问时间6.0微处理器接口6.1接口信号6.2数据传输周期6.3寄存器传输周期6.4特权指令6.5幂次访6.6无定义指令7.0指令周期操作7.1分支和分支连接7.2数据操作7.3乘法和乘加7.4加载寄存器7.5存储寄存器This file is generated by AlienTools PDF Generator,

5、 unregister version47.6加载乘数寄存器7.7存储乘数寄存器7.8数据交换7.9软件中断和故障入口7.10协处理器数据操作7.11协处理器数据传输(从存储器到协处理器)7.12协处理器数据传输(从协处理器到存储器)7.13协处理器寄存器传输(从协处理器加载)7.14协处理器寄存器传输(存储到协处理器)7.15无定义指令和协处理器空缺7.16不可执行的指令7.17指令速度总结8.0 DC参数8.1 Absolute Maximum Ratings8.2 DC操作条件9.0 AC参数9.1 AC参数注释19.0附录向下兼容性This file is generated by A

6、lienTools PDF Generator, unregister version51.0简介ARM7是32位通用微处理器ARM(Advanced RISC Machines)家族中的一员,具有比较低的电源消耗和良好的性价比,基于(精简指令)RISC结构,指令集和相关的译码机制与微程序控制的复杂指令系统的计算机相比要相对简单,这使得它拥有比较高的指令处理能力和实时中断响应能力。指令集包含11种基本类型:两种类型用于偏上算术逻辑单元,桶式移位器和乘法器,在31个寄存器(32位)间执行高速操作;三种类型的指令控制数据在存储器和寄存器之间传送,一种用于弹性地址,一种用于高速内容切换,一种用于交换

7、数据;三种类型的指令用于控制流程和特权级执行;三种专门用于控制外部的协处理器,此种协处理器允许指令集的功能以开放和统一的格式扩展到片外。ARM指令集对不同高级语言的编译器来讲都比较适用,需要临界的代码段,汇编语言的编程也很简单,不像其它的微处理器,需要依靠复杂的编译器来管理指令。由于应用了流水线技术,所以指令处理和存储系统的各个部分都可以连续运行。典型的例子,一条指令正在执行,下一条指令正被译码,第三条指令同时从存储器中取出。在存储系统中,存储接口的设计可以最大限度地发挥性能潜力而不需要花费很大的代价,速度敏感信号做成流水线方式,允许系统控制功能应用于标准的低电压逻辑,这些控制信号推动了由工业

8、DRAM提供的快速局部访问模式。ARM7有32位的地址总线,所有的ARM处理器共享同一个指令集,ARM7可以配制成26位地址线,向下兼容其它早期的处理器。ARM7是全静态CMOS,允许时钟在周期的任意部分被停止,但不丢失状态。注意:0x -十六进制BOLD -外部信号用黑体字显示This file is generated by AlienTools PDF Generator, unregister version6This file is generated by AlienTools PDF Generator, unregister version7This file is gener

9、ated by AlienTools PDF Generator, unregister version82.0信号描述NAME TYPE DESCRIPTIONA31:0 O处理器的地址总线,如果ALE(地址所存使能)为高,在要寻址的前一个周期的Phase2地址有效并保持至寻址周期的Phase1,保持时间由ALE控制。ABORT I存储器异常。这是一个输入信号,存储器系统发出此信号告诉处理器请求的访问不被允许。ALE I地址锁存使能,用来控制地址输出锁存,通常地址在周期的Phase2变成下一个周期需要的值,但是对ROM的直接接口来讲,地址需要保持稳定至Phase2结束,所以ALE需要保持低电

10、平至Phase2。此信号对以下的信号有相同的影响,nBW, nRW, LOCK, Nopc和nTRANS。如果一个系统不需要地址线以这种方式工作,ALE必须拉高,地址锁存是静态的,所以ALE必须保持长时间低电平,以锁存地址。BIGEND I Big Endian配置。为高电平时,处理器认为存储器中数据为BigEndian模式,为低电平时,认为存储器中数据为Little Endian模式。那些不可以选择Endianism的处理器(ARM2As,ARM3,ARM61)为Little Endian模式。CPA I协处理器Absent。可以处理ARM7请求的协处理器(通过nCPI)必须立即将CPA置为

11、低电平。如果在nCPI为低电平的周期的Phase1结束时,CPA仍为高电平,ARM7将中止与协处理器握手,启动无定义指令陷阱。如果CPA为低电平,并且继续保持,ARM7将等待,直到CPB为低电平,然后完成协处理器指令。CPB协处理器忙。可以处理ARM7请求的协处理器(通过Ncpi),但不能立即开始响应,应该通过将CPB置高表明此情况。当协处理器准备好时,置CPB为低电平。当nCPI为低电平时,ARM7在每个周期的Phase1结尾采样CPB。DATA31:0 I数据输入总线。在读周期(nRW =0),此数据输入线必须保证在传输周期的Phase2结尾之前保持有效。DATA32 I 32位数据配置。

12、当此信号为高时,处理器可以访问32位地址空间(A31:0)的数据,当此信号为低时,处理器可以访问26位地址空间(A25:0)的数据。在后一种配置中,地址线A31:26没有用到。在改变此信号电平之前,要确保处理器在下一个周期不会访问到大于0X3FFFFFF的空间。DBE I数据总线使能。当DBE为低电平时,写数据BUFFER被禁止。当DBE为高电平时,写数据BUFFER在下一个真正的写周期时可以被使能,DBE促进了数据总线共享(DMA或其它)。This file is generated by AlienTools PDF Generator, unregister version9DOUT31

13、:0 O数据输出总线,在写周期(when nRW = 1)的Phase1数据有效,并保持至传输周期的Phase2结束。LOCK O Lock操作。当LOCK为高时,处理器执行一个nullLockednull的MEM访问,MEM控制器必须等到LOCK为低时,才允许其它设备访问MEM。当MCLK为高电平时,LOCK信号改变,并在被锁的MEM访问周期一直保持高电平。只有执行数据交换指令(SWP)时,才被激活。此信号的时序可以通过ALE改变,就像ALE改变地址一样。驱动ABE为低电平,LOCK为高阻态。MCLK I MEM时钟输入。此信号定时ARM7所有MEM访问和内部操作。此信号有两个不同的相位。P

14、hase1:MCLK为低,Phase2:MCLK(和Nwait)为高。此信号可以在任何一相被任意延伸,用于访问比较慢的外设或MEM。与此相似, Nwait输入也可以和一个正常运行的MCLK相与取得相同的效果。nBW O字节或者字使能。处理器输出此信号告诉外部MEM系统,当前数据传输为字节长度。在读或者写周期,高电平表示字传输,低点平表示字节传输。此信号在数据传输的前一个周期的Phase2有效,并在本次数据传输周期的整个Phase1有效。此信号的时序像地址线一样可以通过ALE信号来改变。当ABE信号位低时,此信号为高阻态。nCPI O协处理器指令。当ARM7执行一条协处理指令,此信号将被置为低电

15、平,并等待协处理器响应。ARM7将依据协处理器的CPA和CPB的不同状态,做出相应的反应。nENOUT O数据输出使能。处理器通过此信号表明写周期正在发生,DOUT31:0被送到外部的MEM系统。如果系统需要双向数据总线,此信号可以使能三态Buffer,DOUT31:0通过三态Buffer送至DATA31:0nENIN I输入使能。在写周期,此信号和nENOUT一起控制数据总线。请参考第五章:MEM接口。nFIQ I快速中断请求。对处理器来讲,为异步中断请求,当此信号为低电平,并且处理器内部的相应的使能信号有效时,处理器被中断。此信号为电平敏感,并且在处理器做出响应之前应保持低电平。nIRQ

16、I中断请求。像nFIQ,但优先级较低。当使能时,产生异步中断。Nm4:0 O处理器模式。输出信号为内部状态位的反向,表示处理器的操作模式。This file is generated by AlienTools PDF Generator, unregister version10NMREQ O MEM请求。此信号位低电平时,表示下一个周期,处理器请求MEM访问。此信号在Phase1时有效,至访问周期的整个Phase2。NOPC O OP代码取。此信号位低时,表示处理器正从MEM中预取指令;为高时,表示数据正在传输(如果总线上有数据),此信号在前一个周期的Phase2有效,至访问周期的整个Ph

17、ase1。此信号的时序像地址线一样可以通过ALE信号来改变。当ABE信号位低时,此信号位高阻态。nRESET I复位。此为电平敏感输入信号。从一个已知地址启动处理器。低电平将会导致正在执行的指令被异常中止。nRESET为高电平至少一个周期之后,处理器将从地址0重新启动。nRESET必须保持低电平(nWAIT必须为高)至少两个周期。在低电平周期,处理器会执行虚拟的指令预取,地址为复位被激活时的地址增加,如果nRESET继续保持,地址超过最大限制时,溢出为0。nRW O读/写。高电平表示处理器写周期,地电平表示读周期。此信号应该在前一个周期的Phase2有效,并保持到访问周期的Phase1结束。此

18、信号的时序像地址线一样可以通过ALE信号来改变。当ABE信号位低时,此信号为高阻态。nTRANS O MEM传输。低电平时表示处理器在用户模式,告诉MEM管理硬件,何时应该打开调用地址,或者非用户模式激活的指示器。此信号的时序像地址线一样可以通过ALE信号来改变。当ABE信号位低时,此信号位高阻态。nWAIT O等待。当访问较慢外设时,通过驱动nWAIT为低,使ARM7可以进入长达数个MCLK周期的等待状态。在ARM7内部,Nwait和MCLK相与,并只有当MCLK为低时nWAIT状态才改变。如果nWAIT不用,必须上拉。PROG32 I 32位的程序配置。当此信号为高时,处理器可以从32位的

19、地址空间取指,用地址线A31:0;为低时,处理器从26位的地址空间取指,用地址线A25:0。在后一种配置中,指令预取没有用到地址线A31:26。在改变PROG32,之前,必须保证处理器在26位模式,并且下一个周期不会写地址空间0到0X1F(包括)。This file is generated by AlienTools PDF Generator, unregister version11SEQ O顺序地址。当下一个MEM周期的地址同上一个周期的地址相关联时,此信号为高。新地址将和旧地址一样或者在当一个地址的基础上加四。在地址可以预料的周期之前,此信号在phase1有效,并在phase2保持。

20、此信号可以和地位地址线一起应用,表示下一个周期为快速MEM模式(DRAM页模式),或者旁路地址转换系统。VDD P电源。VSS P GND表1:信号描述I: INPUTO : OUTPUTP: POWERThis file is generated by AlienTools PDF Generator, unregister version123.0编程模式ARM7支持不同的操作配置。一种为硬件配置,由输入信号控制。其他为软件控制,称为操作模式。3.1硬件配置信号ARM7提供了三个硬件配置信号,处理器正在运行的时候可以改变,具体如下:3.1.1BigandLittleEndian(bigen

21、d位)ARM7依据BIGNED信号为高或者低,将MEM中的数据当作Big Endian或Little Endian格式,MEM被看作字节线性存储,序号从0向上排列,字节0到3为第一个存储字,4到7为第二个,以此类推。在LittleEndian格式,一个字的最小号字节被当作最低字节,最大号字节被当作最高字节。字节0将被连结到数据线D7:0。最低字节在最低地址字通过最低字节的地址寻址图3:Little Endian格式的地址在Big Endian格式下,最高字节被存在MEM中的最低地址,最低字节被存在MEM的最高地址。MEM中字节0对应数据线D31:24,endianism只影响加载和存储指令。参

22、考4.7.3第37页。This file is generated by AlienTools PDF Generator, unregister version13最高字节在最低地址字通过最高字节的地址寻址图4:Big Endian地址格式3.1.2向下兼容的配置位其它两个输入PROG32, DATA32用于和早期的ARM处理器兼容(参考第十章),但通常应该置null1null,这种配置扩展地址空间到32位,编程模式的主要改变如下面所介绍,在32位的环境下支持26位程序。推荐用32位模式编码,以便和将来的ARM处理器兼容。为了适应32位操作,原始的ARM指令集已被改变,程序员必须注意一些附加

23、的限制条件,这些限制条件在下面的文章里有提示。也可参考ARM应用注意事项null“Rules for ARM CodeWritersnull,” “Notes for ARM Code Writersnull。3.2操作模式选择ARM7有32位地址和32位数据线。处理器支持字节(8位),字(32位)数据类型,字必须四个字节对齐。指令按字执行,数据操作(比如加法)以字为单位执行,加载和存储操作可以为字或字节传送。This file is generated by AlienTools PDF Generator, unregister version14ARM7支持六种操作模式:(1)用户模式(

24、usr):正常的程序执行状态(2)FIQ模式(fiq):支持数据传送或通道处理(3)IRQ模式(irq):用于通用的中断处理(4)管理模式(svc):用于操作系统的保护模式(5)异常模式(abt):数据或者指令预取异常时进入(6)无定义模式(und):当无定义指令被执行时进入(7)软件控制,外部中断,异常处理都可以改变操作模式。大部分的应用程序在用户模式下执行。其他模式,比如管理模式,在中断、异常服务、或者访问被保护资源时进入。3.3寄存器ARM7处理器共有37个寄存器,包括31个(32位)通用寄存器,6个状态寄存器。在任意时候,16个通用寄存器(R0-R15)和一个或者两个状态寄存器对处理器

25、来讲是可见的。可见寄存器依据处理器模式和其它寄存器(bankedregisters)将被切换去支持IRQ, FIQ,管理,异常,无定义模式的处理。异常模式,非定义模式。图5显示了寄存器Bank组成,banked的寄存器在图中用阴影显示。在所有的模式中,16个寄存器(R0-R15)都可以直接访问。除过R15,其他的寄存器都是通用寄存器,可以用来保存数据和地址。R15保存可编程计数器PC的值,当R15被读时,位1:0为0,位31:2保存计数器的值。第十七个寄存器(CPSR-当前程序状态寄存器)也是可以访问的。它包括了条件代码标志位和当前模式位,可以当作是PC的扩展。R14可以当作子程序连接寄存器,

26、当执行一个分支或者连接指令时,可以保存R15的值。在其它情况下,可以当作通用寄存器用。R14_svc, R14_irq, R14_fiq, R14_abt, R14_und与R14相似,当中断或者异常发生时,或者是中断和异常程序中,分支和分支连接指令被执行时,可以保存R15的返回值。This file is generated by AlienTools PDF Generator, unregister version15通用寄存器和可编程计数器模式可编程状态寄存器图5:寄存器组织FIQ模式有7个Banked寄存器,映射到R8-14(R8_fiq- R14_fiq)。有些FIQ程序不需要存储

27、任何寄存器。用户模式,IRQ模式,管理模式,无定义模式都有两个Banked寄存器,映射到R13和R14。这两个Banked寄存器允许每个模式有自己的堆栈指针和l链接寄存器。管理模式,IRQ模式,异常模式和无定义模式的程序(需要不止两个Banked寄存器)能够在它们自己的堆栈中存储部分或者全部的调用程序的寄存器(R0-R12),这样就可以无限制地用这些寄存器(R0-R12),这些寄存器在调用程序返回之前被恢复。另外,有5个SPSRs寄存器(存储可编程状态寄存器),当异常发生时拷贝CPSR。每一个特权级模式有一个SPSR。This file is generated by AlienTools P

28、DF Generator, unregister version1631 30 29 28 27 8 7 6 5 4 3 2 1 0N Z C V . . I F . M4 M3 M2 M1 M0图6:可编程状态寄存器格式可编程状态寄存器的格式在图6中显示,N,Z,C,和V位条件代码标志位。当作处理器的算术或者逻辑运算结束时这些条件代码标志位可能被改变,也可以在程序中以此作为条件来判断指令是否被执行。I和F位为中断禁止位。当I置1时,禁止IRQ中断,当F置1时,禁止FIQ中断。M4:0为模式位,这些位决定了处理器的操作模式。表2解释了模式位M4:0。并不是所有的组合都表示了有效的操作,只有那些

29、明确定义的组合才有效。PSR寄存器的低28位(包括I,F,M4:0)全部作为控制位。如果有异常产生这些控制位将改变,或者在管理模式,通过软件改变控制位。没有用到的位为保留位,它们的状态在在控制位和标志位改变时可以保留。当检查PSR状态时,程序并不需要依靠保留位的值来判断,因为它们在将来的处理器中中可能为1或者0。M4:0模式可访问的寄存器10000用户PC,R14R0 CPSR10001 FIQ PC,R14_fiqR8_fiq,R7R0 CPSR,SPSR_fiq10010 IRQ PC,R14_irqR13_irq,R12R0 CPSR,SPSR_irq10011管理PC,R14_svcR

30、13_svc,R12R0 CPSR,SPSR_svc10111异常PC, R14_abtR13_abt, R12R0 CPSR, SPSR_abt11011无定义PC, R14_undR13_und, R12R0 CPSR, SPSR_und表2模式位定义溢出进位,借位,扩展零负数,少于模式位FIQ禁止位IRQ禁止位标志控制This file is generated by AlienTools PDF Generator, unregister version1734异常当正常的程序流程需要被中断时,异常产生,使得处理器可以执行外设产生(例)的中断。进入异常处理之前,处理器的状态必须保存,以

31、便异常处理完之后源程序可以继续执行。可能会有几个异常同时产生。ARM7处理异常时,通过banked寄存器保存状态。PC和CPSR寄存器中的内容被拷贝到相应的R14和SPSR中,PC和CPSR中的模式位M0:4根据异常类型被强制改变。在异常断处理中,如果要禁止其它难以管理异常的嵌套,可以置位中断禁止标志位。在需要重复进入中断处理程序的情况下,R14和SPSR应该在中断被使能之前保存到主MEM的堆栈中;当传送SPSR寄存器到堆栈或者从堆栈传送时,需要注意的是必须传送整个字(32位),而不只是标志位或者控制位。当多个异常同时产生时,固定的优先级决定异常响应的顺序。优先级将在以后章节中说明。3.4.1

32、 FIQFIQ(快速中断请求)异常是由外部产生,将Nfiq输入拉低。此输入可以接受异步转换,在影响处理器的执行流程之前,会被延迟一个时钟周期,以便与处理器保持同步。此设计支持数据传输或者通道处理,有足够的私有寄存器转移在某些应用中需要保存的值(最小化切换成本)。可以置位在CPSR中的F标志位屏蔽FIQ异常(除过用户模式),如果F位清零,ARM7在每一条指令结束时会检查FIQ同步器的输出是否为低电平。当检测到有FIQ低电平输入时,ARM7执行以下步骤:(1)将下一条将要执行的指令地址+4,保存到R14_fiq,保存CPSR的值到SPSR_fiq(2)强制M4:0=10001(FIQ模式),置位C

33、PSR中的F,I(3)强制PC从地址0X1C取下一条指令为了从FIQ返回,执行SUBS PC,R14_fiq,#4将恢复PC(从R14)和CPSR(从SPSR_fiq)并继续执行的被中断的程序。3.4.2 IRQIRQ(中断请求)为普通异常,当nIRQ输入位低电平时产生IRQ。它的优先级低于FIQ,并且当进入FIQ异常处理程序时,它被屏蔽。在任何时候将CPSR中I位置1,都可以屏蔽此中断(用户模式除外)。当I位清零时,ARM7在每一条指令结束时会检查IRQ同步器的输出是否有低电平。当检测到有IRQ输入时ARM7执行以下步骤:(1)将下一条将要执行的指令地址+4,保存到R14_fiq,保存CPS

34、R的值到SPSR_fiq(2)强制M4:0=10010(IRQ模式),置位CPSR中的I(3)强制PC从地址0X18取下一条指令This file is generated by AlienTools PDF Generator, unregister version18为了从IRQ状态恢复正常,执行SUBS PC,R14_fiq,#4将恢复PC(从R14)和CPSR(从SPSR_fiq)并继续执行的被中断的程序。3.4.3异常中断异常中断由外部的ABORT输入产生。ABORT表示当前存储器访问没有完成。举例来讲,在虚拟存储器系统中,当前地址上相应的数据可能已经从存储器被移到disc,在访问完

35、成之前,可能要求处理器动作以恢复这些数据。Arm7在存储器访问周期检查ABORT信号,如果有异常产生,ARM7将执行以下两种步骤之一:(1)如果异常在指令预取时产生(预取异常),预取的指令被标志为无效,但是异常中断并不立即产生。如果指令没有被执行,举例来讲,在流水线中的一个分支指令,将不会产生异常,如果指令到流水线的出口并将要被执行时,异常产生。(2)如果异常在数据访问时产生(数据异常),ARM7的动作将依靠指令类型(A)单次数据传输指令(LDR,STR)将回写改变过的基址寄存器,异常处理程序必须注意到这一点。(B)交换指令异常(SWP),虽然外部的读写访问可能发生,但就好像此指令没有被执行一

36、样(C)块数据传输指令完成(LDM,STM),如果回写位置1,基址将改变。如果正常情况下,指令回写基址寄存器(LDM传输列表中的基址),则回写被禁止。当异常产生时,所有寄存器回写都被禁止。这就意味着当LDM指令异常时,R15(总是最后一个被传送)将保留。在指令预取异常或数据异常发生,ARM7进行以下操作:(1)保存地址(异常指令地址加4 for指令预取异常,加8 for数据异常)到R14_abt,保存CPSR到SPSR_abt(2)强制M4:0=10111(异常模式),置位CPSR中的I(3)强制PC从地址0X0C(预取异常)或0X10(数据异常)取下一条指令为了从异常返回,执行SUBS PC

37、,R14_abt,#4(预取异常)或SUBS PC,R14_abt,#8 (数据异常),恢复PC和CPSR并继续执行被异常的指令。当适当的MEM管理软件有效时,异常机制允许执行null需要的页式虚拟MEM系统null。处理器可以产生任意地址,如果地址中的数据无效时,MMU产生异常。处理器进入系统软件陷阱,系统软件必须找出异常原因,使请求的数据有效,重新执行被异常的指令。应用程序不需要知道它用到的有效MEM的总量,也不需要异常时的状态。This file is generated by AlienTools PDF Generator, unregister version193.4.4软件中断

38、软件中断指令(SWI)从其它模式进入管理模式。通常情况下,请求一个特殊的管理函数。当SWI指令被执行时,ARM7执行以下动作:(1)将SWI指令地址加4保存到R14_svc,保存CPSR的值到SPSR_svc(2)强制M4:0=10011(管理模式),置位CPSR中的I(3)强制PC在地址0X80取下一条指令为了从SWI返回,执行指令MOVS PC,R14_svc,恢复PC和CPSR的值,返回到SWI的下一条指令。3.4.5无定义的指令陷阱当ARM7遇到自己没有办法处理的指令(第四章:指令集),它将此指令提供给现场的协处理器。如果协处理器可以执行此指令,但当时又比较忙,ARM7将进入等待状态,

39、直到协处理器准备好或者中断产生。如果没有协处理器可以处理此指令,ARM7将进入无定义指令陷阱。当系统中没有协处理器硬件时,陷阱可以用来做协处理器的软件仿真,或者通过软件仿真用于通用指令集扩展。当ARM7接收到无定义指令陷阱时,执行以下步骤:(1)将无定义指令或协处理器指令加4保存到R14_und;保存CPSR到SPSR_und.(2)强制M4:0=11011(无定义模式),置位CPSR中的I(3)强制PC在地址0X04取下一条指令在仿真失败的指令之后,为了从陷阱返回,执行MOVS PC,R14_und,恢复CPSR并返回到无定义指令的下一条指令。This file is generated b

40、y AlienTools PDF Generator, unregister version203.4.6向量总结地址异常进入模式0X00000000复位管理模式0X00000004无定义指令无定义0X00000008软件中断管理0X0000000C异常(预取)异常0X00000010异常(数据)异常0X00000014保留-0X00000018 IRQ IRQ0X0000001C FIQ FIQ表3:向量总结这些是字节地址,通常包括了指向相关程序的分支指令。FIQ程序处于0X1C,从而不需要分支指令(和执行时间)。3.4.7异常优先级当多个异常时产生时,固定的优先级系统决定异常处理的顺序:(

41、1)复位(最高优先级)(2)数据异常中断(3)FIQ(4)IRQ(5)预取异常(6)无定义异常,软件中断(最低优先级)注意,不是所有的异常都会立即产生,无定义指令和软件中断互为排斥,因为它们都依靠当前指令的特定译码(不能重叠)。如果数据异常和FIQ同时发生,且FIQ被使能(CPSR中F标志位为0),ARM7将进入数据异常处理,然后立即进入FIQ中断向量处理,从FIQ的正常返回将使数据异常处理器继续运行。数据异常优先级高于FIQ,保证能够检测到传输错误,计算数据异常响应时间应该加上最差的情况下FIQ处理的时间。This file is generated by AlienTools PDF Ge

42、nerator, unregister version213.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延时时间计算方法

43、类似,但是,必须考虑到这样一个事实,FIQ优先级比RIQ要高,进入RIQ的处理程序入口可能被延长任意时间,对FIQ,RIQ来讲最小的延迟由经过最少时间请求由同步器送到(Tsyncmax),加上FIQ入口时间(Tfiq),大约为四个机器周期。3.5 Reset当复位信号位低电平时,ARM7放弃正在执行的指令,继续从字地址加一取指。当nRESET再次位高时,ARM7执行以下步骤:(1)用当前PC,CPSR中的值覆盖R14_svc和SPSR_svc,被保存的PC,CPSR的值没有定义。(2)强制M4:0=10011(管理模式),将CPSR中的F,I值位。(3)强制PC从地址0X00取出下一条指令。T

44、his file is generated by AlienTools PDF Generator, unregister version224.0指令集4.1指令集总述图7显示了ARM7的指令集。注意:一些指令代码没有定义,但不会导致无定义的指令陷阱产生,这些指令没有用到,因为在将来的ARM应用中,它们的含义可能会改变。This file is generated by AlienTools PDF Generator, unregister version234.2条件代码31 28 27条件代码图8:条件代码所有ARM7的指令都是条件满足时才执行,意味着指令的执行或不执行跟CPSR中的N

45、,Z,C,V标志位有关系,图8显示了这些条件代码。如果指定Always(AL),指令将会无条件执行,而不管标志位的值如何。NEVER(NV)没有用到,因为在将来的ARM结构中会被重新定义。如果需要延时,建议用MOV R0,R0,如果没有指定条件代码,编译器默认为Always(AL)。其它的条件代码已经在图8中详细说明。比如代码0000(Equal)表示只有在标志位Z置位时,指令才会被执行。相当这样一种情况,比较指令(CMP)执行后,两个操作数如果相等,则置位Z,如果不相等,比较指令清零Z标志位,并且指令不会执行(条件不满足)。条件部分0000=EQ-Z置位(相等)0001=NE-Z清零(不等)

46、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

47、-NEVERThis file is generated by AlienTools PDF Generator, unregister version244.3分枝和分支连接(B,BL)此指令只有当条件为真时,才会被执行。在本章开始时定义了不同的条件。分支指令代码在图9显示。分支指令包含了有符号的24位偏移量。左移两位,然后将符号位扩展到32位,加到PC。因此,此指令可以指定+/-32M字节的地址。分支偏移必须考虑预取操作,因为指令预取将导致PC为当前指令地址前两个字(8字接)。COND 101 L偏移量图9分支指令分支地址超过+/-32M字节,必须用到偏移量或者已经被预先载入寄存器的绝对目

48、的地址,在这种情况下如果需要一个分支连接操作,PC应该手动保存到R14。4.3.1连接位分支联接(BL)写旧的PC的值到当前bank的连接寄存器R14中。考虑到指令预取,写到R14的PC值是可以调节的,并包含分支联接指令的下一条指令的地址。CPSR没有被PC保存。为了从被调用的分支联接程序返回,用指令MOV PC,R14(如果连接寄存器一直有效),或者LDM Rn!,PC(如果连接寄存器已经被保存到由Rn指定的堆栈中)。4.3.2指令周期分支和分支联接指令会花费2S+1N incremental周期,S,N将在5.1周期类型定义。4.3.3汇编语法BL条件L用于请求指令的分支联接格式,如果此项

49、缺,R14将不受此指令影响。Cond如图8所示,(EQ,NE,VS等),如果此项缺,编译器会认为AL(Always)无条件执行指令。连接位0=分支1=分支连接条件代码区This file is generated by AlienTools PDF Generator, unregister version25目的地址,编译器计算偏移量。为可选项,为必须项。4.3.4举例here BAL here ; AL-AlwaysB there ;默认ALwaysCMP R1,#0 ;比较R1和0,如果相等,转倒fred,否则,继续BEQ fred ;执行下一条指令BL sub+ROM ;调用子程序,在地址sub+ROMADDS R1,#1 ;寄存器R1加1,根据结果设置CPSR的标志位,如果C被清零,调用子程序。BLCC sub ;This file is generated by AlienTools PDF Generator, unregister version264.4数据处理指令指令只有在条件满足时才会执行,图

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报