《本科-嵌入式arm-第2章arm7体系结构.ppt》由会员分享,可在线阅读,更多相关《本科-嵌入式arm-第2章arm7体系结构.ppt(76页珍藏版)》请在三一办公上搜索。
1、嵌入式系统结构与操作系统,胡威武汉科技大学计算机学院,1.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式,ARM7体系结构,6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统,2,2.1 ARM简介,ARM公司简介,ARM是Advanced RISC Machines的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC(精简指令集)处理器。公司的特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供服务。,3,2.1
2、ARM简介,ARM公司简介,将技术授权给其它芯片厂商,形成各具特色的ARM芯片,4,2.1 ARM简介,RISC结构特性,RISC是精简指令集计算机的缩写,其目标是设计出在高时钟频率下单周期执行,简单而有效的指令集。ARM内核采用RISC体系结构,因此具有RISC的结构特点:,5,2.1 ARM简介,为了使ARM能够更好地满足嵌入式应用的需要,ARM体系结构还有以下特点:,每条数据处理指令可同时包含算术逻辑单元(ALU)的运算和移位处理,实现ALU和移位器的最大利用;使用地址自增和自减的寻址方式优化程序循环;装载/保存指令对数据的批量传输,实现最大数据吞吐量;大多数指令的条件执行,实现最快速的
3、代码执行。,ARM体系结构,6,2.1 ARM简介,常用ARM处理器系列,ARM公司开发了很多系列的ARM处理器核,目前最新的系列是Cortex,而ARM6核以及更早的系列已经很罕见了。当前应用比较多的ARM处理器核系列有:,7,2.1 ARM简介,ARM Cortex系列简介,基于ARMv7版本的ARM Cortex系列产品由A、R、M三个系列组成,具体分类延续了一直以来ARM面向具体应用设计CPU的思路。,ARM Cortex,8,2.1 ARM简介,CortexTM-M3处理器简介,该处理器是首款基于ARMv7-M架构的处理器,采用了纯Thumb2指令的执行方式,具有极高的运算能力和中断
4、相应能力。Cortex-M3主要应用于汽车车身系统,工业控制系统和无线网络等对功耗和成本敏感的嵌入式应用领域。目前最便宜的基于该内核的ARM单片机售价为1美元。,9,2.1 ARM简介,CortexTM-R4处理器简介,该处理器是首款基于ARMv7架构的高级嵌入式处理器,其主要目标为产量巨大的高级嵌入式应用系统,如硬盘,喷墨式打印机,以及汽车安全系统等等。,CortexTM-R4F处理器简介,该处理器在CortexTM-R4处理器的基础上加入了代码错误校正(ECC)技术,浮点运算单元(FPU)以及DMA综合配置的能力,增强了处理器在存储器保护单元、缓存、紧密耦合存储器、DMA访问以及调试方面的
5、能力。,10,2.1 ARM简介,CortexTM-A8处理器简介,该处理器是ARM公司所开发的基于ARMv7架构的首款应用级处理器,其特色是运用了可增加代码密度和加强性能的技术、可支持多媒体以及信号处理能力的NEONTM技术、以及能够支持Java和其他文字代码语言的提前和即时编译的JazelleRTC技术。众多先进的技术使其适用于家电以及电子行业等各种高端的应用领域。,11,2.1 ARM简介,ARM7系列简介,该系列包括ARM7TDMI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle的ARM7EJ-S。该系列处理器提供Thumb 16位压缩指令集和Em
6、bededICE软件调试方式,适用于更大规模的SoC设计中。ARM7系列广泛应用于多媒体和嵌入式设备,包括Internet设备、网络和调制解调器设备,以及移动电话、PDA等无线设备。,12,2.1 ARM简介,该系列包括ARM9TDMI、ARM920T和带有高速缓存处理器宏单元的ARM940T。除了兼容ARM7系列,而且能够更加灵活的设计。ARM9系列主要应用于引擎管理、仪器仪表、安全系统和机顶盒等领域。,ARM9系列简介,13,2.1 ARM简介,该系列为含有DSP指令集的综合处理器,包括ARM926EJ-S、带有高速缓存处理器宏单元的ARM966E-S/ARM946E-S。其内核在ARM7
7、处理器内核的基础上使用了Jazelle增强技术,该技术支持一种新的Java操作状态,允许在硬件中执行Java字节码。ARM9E系列主要应用于下一代无线设备、数字消费品、成像设备、工业控制、存储设备和网络设备等领域。,ARM9E系列简介,14,2.1 ARM简介,ARM10E系列简介,该系列包括ARM1020E和ARM1020E处理器核,其核心在于使用向量浮点(VFP)单元VFP10提供高性能的浮点解决方案,从而极大提高了处理器的整型和浮点运算性能。可以用于视频游戏机和高性能打印机等场合。,15,2.1 ARM简介,Xscale简介,Intel Xscale微控制器则提供全性能、高性价比、低功耗
8、的解决方案,支持16位Thumb指令并集成数字信号处理(DSP)指令。主要应用于手提式通讯和消费电子类设备。,16,1.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式,ARM7体系结构,6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统,17,2.2 ARM7TDMI,简介,ARM7TDMI是基于ARM体系结构V4版本的低端ARM核。其弥补了ARM6很难在低于5V电压下稳定工作的不足,还增加了后缀所对应的功能:,注意:“ARM核”并非芯片,ARM核与其它部件如RAM、ROM、片内外设组合
9、在一起才能构成现实的芯片。,18,2.2 ARM7TDMI,存储器的字与半字,从偶数地址开始的连续2个字节构成一个半字;以能被4整除的地址开始的连续4个字节构成一个字;ARM指令的长度刚好是一个字,Thumb指令的长度刚好是一个半字。,19,2.2 ARM7TDMI,如果一个数据是从偶地址开始的连续存储,那么它就是半字对齐,否则就是非半字对齐;如果一个数据是以能被4整除的地址开始的连续存储,那么它就是字对齐,否则就是非字对齐。,存储器的存储方式,20,2.2 ARM7TDMI,三级流水线,ARM处理器使用流水线来增加处理器指令流的速度,这样可使几个操作同时进行,并使处理和存储器系统连续操作,能
10、提供0.9MIPS/MHz的指令执行速度。,ARM7TDMI的流水线分3级,分别为:,取指,译码,执行,正常操作过程中,在执行一条指令的同时对下一条(第二条)指令进行译码,并将第三条指令从存储器中取出。,在ARM状态下,流水线上各指令的地址为:,在Thumb状态下,流水线上各指令的地址为:,21,2.2 ARM7TDMI,三级流水线结构的指令执行顺序,周期2,周期1,周期3,周期4,处理器执行一条指令的三个阶段,22,执行ADD PC,PC,#4指令后,PC的值为多少?,2.2 ARM7TDMI,思考题,ADD,程序计数器R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或
11、“正在译码”的指令。,一般来说,人们习惯性约定将“正在执行”的指令作为参考点,则:PC值当前程序执行位置8 注:ARM状态时,每条指令为4字节长。,PC指向0 x4000地址,取指ADD指令。,PC指向0 x4004地址,译码ADD指令。,PC指向0 x4008地址,执行ADD指令,所以指令执行的结果为:PC=PC+40 x400840 x400C。,23,1.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式,ARM7体系结构,6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统,24,2.
12、3 ARM模块框图,CPU协处理接口信号,EmbedICE硬件仿真功能模块,片上调试系统,读写总线,25,2.3 ARM内核框图,26,2.3 ARM功能框图,总线控制,27,1.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式,ARM7体系结构,6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统,28,2.4 ARM处理器状态,处理器状态,ARM7TDMI处理器内核包含2套指令系统,分别为ARM指令集和Thumb指令,并且各自对应1种处理器的状态:ARM状态:32位,处理器执行字方式的A
13、RM指令,处理器默认为此状态;Thumb状态:16位,处理器执行半字方式的Thumb指令。,注意:两个状态之间的切换并不影响处理器模式或寄存器内容。,29,2.4 ARM处理器状态,状态切换的一个例子,使用BX指令将ARM内核的操作状态在ARM状态和Thumb状态之间进行切换。,ARM指令集,Thumb指令集,CODE32LDRR0,=Lable+1BX R0CODE16Lable MOV R1,#12,CODE16LDR R0,=LableBX R0CODE32LableMOV R1,#10,执行完BX指令,处理器切换到Thumb状态,开始执行Thumb指令,程序代码,指令集关系,从ARM状
14、态切换到Thumb状态的程序代码如下:,从Thumb状态切换到ARM状态的程序代码如下:,执行完BX指令,处理器切换到ARM状态,开始执行ARM指令,30,1.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式,ARM7体系结构,6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统,31,2.5 ARM处理器模式,简介,ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。这样的好处是可以更好的支持操作系统并提高工作效率。ARM7T
15、DMI完全支持这七种模式。,32,除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。,处理器模式,这两种模式都不能由异常进入,想要进入必须修改CPSR,而且它们使用完全相同的寄存器组。系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。,这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模
16、式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。,何时进入异常模式,具体规定如下:处理器复位之后进入管理模式,操作系统内核通常处于管理模式;当处理器访问存储器失败时,进入数据访问中止模式;当处理器遇到没有定义或不支持的指令时,进入未定义模式;中断模式与快速中断模式分别对ARM处理器2种不同级别的中断作出响应。,33,1.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式,ARM7体系结构,6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统,34,2.6 ARM内部
17、寄存器,简介,在ARM处理器内部共有37个用户可访问的寄存器,分别为31个通用32位寄存器和6个状态寄存器。,ARM处理器共有7种不同的处理器模式,每种模式都有一组相应的寄存器组,最多可以18个活动的寄存器。,35,ARM状态各模式下的寄存器,所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。,36,ARM状态各模式下可以访问的寄存器,37,未分组的通用寄存器,寄存器R0R7为未分组的通用寄存器,它们在任何处理器模式都对应于相同的32位物理寄存器。,第一类分组的通用寄存器,寄存器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模
18、式。,在发生FIQ中断后,处理器不必为保护寄存器而浪费时间,从而加速了FIQ的处理速度。,第二类分组的通用寄存器,寄存器R13、R14分别有6个分组的物理寄存器。1个用于用户和系统模式,其余5个分别用于5种异常模式。,寄存器R13通常作为堆栈指针(SP),用于保存待使用的寄存器的内容。,寄存器R14称为链接寄存器(LR),在结构上有两个特殊功能:当使用BL指令调用子程序时,返回地址将自动存入R14中;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。,程序计数器,寄存器R15称为程序计数器(PC),它指向正在“取指”的指令。,状态寄存器,寄存器CPSR
19、为当前程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。,38,2.6 ARM内部寄存器,在Thumb状态各模式下实际访问的寄存器,Thumb状态寄存器集是ARM状态集的子集,程序员可以直接访问的寄存器为:8个通用寄存器R0R7;程序计数器(PC);堆栈指针(SP);链接寄存器(LR);当前程序状态寄存器(CPSR)。,39,在Thumb状态各模式下的寄存器,未分组的通用寄存器,第二类分组的通用寄存器,在汇编语言中寄存器R0R7为通用寄存器,对于任何处理器模式
20、,它们中的每一个都对应于相同的32为物理寄存器。,堆栈指针SP对应ARM状态的寄存器R13。每个异常模式都有其自身的SP分组版本,SP通常指向各异常模式所专用的堆栈。注意:在发生异常时,处理器自动进入ARM状态。,链接寄存器LR对应ARM状态寄存器R14。注意:在发生异常时,处理器自动进入ARM状态。,40,ARM状态,Thumb寄存器在ARM状态寄存器上的映射,Thumb状态,在Thumb状态中,高端寄存器的访问是受到限制的,只有MOV、CMP和ADD指令可以对其访问,可以用于数据的快速暂存。,41,状态切换过程,程序在正常运行的过程中,复位事件产生,导致系统复位。,42,1.ARM简介2.
21、ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式,ARM7体系结构,6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统,43,2.7 当前程序状态寄存器,简介,ARM内核包含1个CPSR和5个仅供异常处理程序使用的SPSR。CPSR反映当前处理器的状态,其包含:4个条件代码标志(负标志N、零标志Z、进位标志C和溢出标志V);2个中断禁止位(IRQ禁止与FIQ禁止);5个对当前处理器模式进行编码的位(M4:0);1个用于指示当前执行指令的位(ARM指令还是Thumb指令)。,44,2.7 当前程序状态寄存
22、器,程序状态寄存器的格式,条件代码标志,保留,控制位,溢出标志,进位或借位扩展,零,负或小于,IRQ禁止,FIQ禁止,状态位,模式位,N,Z,C,V,I,T,F,45,2.7 当前程序状态寄存器,条件代码标志,各标志位的含义如下:负标志N:运算结果的第31位值,记录标志设置操作的结果;零标志Z:如果标志设置的操作为0,则置位;进位标志C:记录无符号加法溢出,减法无借位,循环移位;溢出标志V:记录标志设置操作的有符号溢出。,46,警告:绝对不要强制改变CPSR寄存器中的控制位T。如果这样做,处理器将进入一个无法预测的状态。,2.7 当前程序状态寄存器,控制位,1、中断禁止控制位I和F;,2、处理
23、器状态位T;,3、处理器模式位M0M4。,注意:不是所有模式位的组合都定义了有效的处理器模式,如果将非法值写入M4:0中,处理器将进入一个无法恢复的模式。,47,2.7 当前程序状态寄存器,保留位,CPSR中的保留位被保留将来使用。当改变CPSR标志和控制位时,请确认没有改变这些保留位。另外,请确保您的程序不依赖于包含特定值的保留位,因为将来的处理器可能会将这些位设置为1或者0。,48,1.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式,ARM7体系结构,6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.A
24、RM体系的存储系统,49,2.8 ARM体系的异常,异常简介,只要正常的程序流被暂时中止,处理器就进入异常模式。例如在用户模式下执行程序时,当外设向处理器内核发出中断请求导致内核从用户模式切换到异常中断模式。如果同时发生两个或更多异常,那么将按照固定的顺序来处理异常。,50,异常入口/出口汇总,下表所示为异常返回地址值以及退出异常处理程序所推荐使用的指令。,注意:“MOVS PC,R14_svc”是指在管理模式执行MOVS PC,R14 指令,同样类似的指令还有“MOVS PC,R14_und”、“SUBS PC,R14_abt,#4”等。,51,2.8 ARM体系的异常,异常向量表,注:表中
25、的I和F表示不对该位有影响,保留原来的值。,52,2.8 ARM体系的异常,异常优先级,当多个异常同时发生时,一个固定的优先级决定系统处理它们的顺序。,优先级由高到低,53,2.8 ARM体系的异常,异常的进入,当一个异常导致模式切换时,内核自动的做如下处理:,将异常处理程序的返回地址(加固定的偏移量)保存到相应异常模式下的LR;,将CPSR的当前值保存到相应异常模式下的SPSR;,设置CPSR为相应的异常模式;,设置PC为相应异常处理程序的中断入口向量地址,跳转到相应的异常中断处理程序执行;,BackAddr,JumpAddr,UserMode,ExceptionMode,程序代码正常运行在
26、用户模式下。,54,2.8 ARM体系的异常,异常的进入,当一个异常导致模式切换时,内核自动的做如下处理:,将异常处理程序的返回地址(加固定的偏移量)保存到相应异常模式下的LR;,将CPSR的当前值保存到相应异常模式下的SPSR;,设置CPSR为相应的异常模式;,设置PC为相应异常处理程序的中断入口向量地址,跳转到相应的异常中断处理程序执行;,55,2.8 ARM体系的异常,异常的退出,当异常处理程序结束时,异常处理程序必须:,返回到发生异常中断的指令的下一条指令处执行,即就是说将LR中的值减去偏移量后移入PC;,将SPSR的值复制回CPSR;,BackAddr,CurrentAddr,Use
27、rMode,ExceptionMode,BackAddrOff,56,2.8 ARM体系的异常,异常的退出,当异常处理程序结束时,异常处理程序必须:,返回到发生异常中断的指令的下一条指令处执行,即就是说将LR中的值减去偏移量后移入PC;,将SPSR的值复制回CPSR;,清零在入口处置位的中断禁止标志。,57,2.8 ARM体系的异常,复位异常,当nRESET信号被拉低时,ARM处理器放弃正在执行的指令,等到nRESET信号再次变高时,处理器执行一下操作:,强制M4:0变为b10011,系统进入管理模式;将CPSR中的标志位I和F置位,IRQ与FIQ中断被禁止;将CPSR中的标志位T清零,处理器
28、处于ARM状态;强制PC从地址0 x00开始对下一条指令进行取指;返回到ARM状态并恢复执行。,58,2.8 ARM体系的异常,中断请求异常,只有当CPSR中相应的中断屏蔽位被清除时,才可能发生IRQ异常,中断请求(IRQ)异常由一个nIRQ输入端的低电平所产生的正常中断。注:中断异常产生时,中断异常模式下的R14保存的是PC的值。,指令1的执行不会中断;,异常程序结束时返回到指令2;,进入中断服务程序时,指令3地址被保存在R14中。,59,程序运行在用户模式下,当一个IRQ异常中断发生时,内核切换到“中断模式”,并自动的做如下处理:,2.8 ARM体系的异常,进入IRQ异常模式,USR模式,
29、IRQ模式,60,2.8 ARM体系的异常,退出IRQ异常模式,IRQ模式,USR模式,中断服务程序执行完毕后,系统将通过以下几步软件操作返回用户模式:,61,2.8 ARM体系的异常,快速中断请求异常,快速中断请求(FIQ)适用于对一个突发事件的快速响应,这得益于在ARM状态中,快中断模式有8个专用的寄存器可用来满足寄存器保护的需要(这可以加速上下文切换的速度)。不管异常入口是来自ARM状态还是Thumb状态,FIQ处理程序都会通过执行下面的指令从中断返回:SUBS PC,R14_fiq,#4 在一个特权模式中,可以通过置位CPSR中的F位来禁止FIQ异常。,62,FIQ中断的例子,“?”表
30、示该位无关,BackAddr,JumpAddr,1,0,BackAddr-4,Thumb不是一个完整的体系结构,不能指望处理器只执行Thumb指令而不支持ARM指令集。因此,Thumb指令只需要支持通用功能,必要时可以借助于完善的ARM指令集,比如,所有异常自动进入ARM状态。,在系统模式下运行用户程序,当前处理器处于Thumb状态,执行Thumb指令代码,同时处理器还允许IRQ和FIQ中断。,指令1的在执行过程产生了FIQ中断。注:完成指令1的执行后才响应中断。,FIQ中断相应过程中,硬件自动执行如下动作:,将CPSR寄存器内容存入IRQ模式的SPSR寄存器,置为F和I(禁止FIQ和IRQ中
31、断);清零T位(进入ARM状态);设置MOD位,切换处理器模式至FIQ模式。,将下一条的地址存入FIQ模式的LR寄存器,即指令3的地址。,将跳转地址存入PC,即FIQ中断服务函数的入口地址,实现跳转。,FIQ中断服务程序在ARM状态下执行现场保护等操作。,FIQ中断服务程序使用BX指令,将处理器从ARM状态切换到Thumb状态,通过置位CPSR的T位实现。,FIQ中断服务程序开始执行Thumb指令。,FIQ中断服务程序使用BX指令,将处理器从Thumb状态切换到ARM状态,通过清除CPSR的T位实现。,FIQ中断服务程序在ARM状态下执行恢复中断现场等操作。,FIQ中断异常处理结束后,异常处理
32、程序完成以下动作:,将SPSR寄存器的值复制回CPSR寄存器;,将LR寄存的值减去一个常量(FIQ异常为4)后复制到PC寄存器,跳转到被中断的用户程序(指令2的地址)。,63,2.8 ARM体系的异常,未定义的指令异常,未定义指令异常是内部异常中断,当ARM处理器遇到一条自己和系统内部任何协处理器都无法执行的指令时,就会发生未定义指令异常,从而进入中断处理程序,同时软件可使用这一机制通过仿真未定义的协处理器指令来扩展ARM指令集。在仿真失败的指令后,捕获处理器执行下面的指令:MOVS PC,R14_und,64,2.8 ARM体系的异常,中止异常,中止表示当前对存储器的访问不能被完成,这是由外
33、部ABORT输入信号引起的异常中断。中止类型有2种类型:,预取指中止:由程序存储器引起的中止异常;数据中止:由数据存储器引起的中止异常。,65,2.8 ARM体系的异常,预取指中止,当发生预取指中止时,ARM内核将预取的指令标记为无效,但在指令到达流水线的执行阶段时才进入异常。如果指令在流水线中因为发生分支而没有被执行,中止将不会发生。在处理中止的原因之后,不管处于哪种处理器操作状态,处理程序都会执行下面的指令恢复PC和CPSR并重试被中止的指令:SUBS PC,R14_abt,#4,66,2.8 ARM体系的异常,数据中止,当发生数据中止异常时,异常会在“导致异常的指令”执行后的下一条指令发
34、生。在这种情况下,理想的状况是进入数据中止异常的ISR,然后在内存中挑选出问题,再重新执行导致异常的指令。在修复产生中止的原因后,不管处于哪种处理器操作状态,处理程序都必须执行下面的返回指令:SUBS PC,R14_abt,#8,67,2.8 ARM体系的异常,软件中断异常,软件中断异常(SWI)用于进入管理模式,通常用于请求一个特定的管理函数。SWI处理程序通过执行下面的指令返回:MOVS PC,R14_svc 这个动作恢复了PC和CPSR并返回到SWI之后的指令。SWI处理程序读取操作码以提取SWI函数编号。,68,2.8 ARM体系的异常,中断延迟,中断延迟即从外部中断请求信号发出到执行
35、对应的中断服务程序ISR的第1条指令所需要的时间。通过软件程序设计来缩短中断延迟的方法有:中断优先级和中断嵌套。,69,1.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式,ARM7体系结构,6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统,70,2.9 ARM体系的存储系统,简介,ARM处理器采用冯诺依曼(Von Neumann)结构,指令、数据和I/O统一编址(即存在同一个空间)。只有装载、保存和交换指令可访问存储器中的数据。,ARM芯片一般在处理器核和外部存储器之间有一个存储器管理
36、部件将局部总线的信号和时序转换为现实的外部总线信号和时序。,ARM7的规范定义了局部总线的信号和时序。,各芯片生产厂商制定了自己的外部总线的信号和时序。,71,2.9 ARM体系的存储系统,地址空间,ARM结构使用单个平面的232个8位字节地址空间。地址空间可以看作是包含230个32位字,或231个16位半字。如果地址向上或向下溢出地址空间,通常会发生翻转。注意:如果在取指操作时地址发生溢出,只要没有执行预取的无效指令,就不会导致异常。,72,2.9 ARM体系的存储系统,存储器格式,地址空间的规则要求字地址A:位于地址A的字包含的字节位于地址A,A+1,A+2和A+3;位于地址A的半字包含的
37、字节位于地址A和A+1;位于地址A+2的半字包含的字节位于地址A+2和A+3;位于地址A的字包含的半字位于地址A和A+2;,73,2.9 ARM体系的存储系统,存储器格式,存储器系统有两种映射机制:小端存储器系统:在小端格式中,数据的高字节存放在高地址中。大端存储器系统:在大端格式中,数据的高字节存放在低地址中。,0 x120 x340 x560 x78,0 x780 x560 x340 x12,74,2.9 ARM体系的存储系统,非对齐的存储器访问,ARM结构通常希望所有的存储器访问都合理的对齐,具体来说就是字访问的地址通常是字对齐的,而半字访问使用的地址是半字对齐的。不按这种方式对齐的存储器访问称为非对齐的存储器访问。将一个非字(半字)对齐的地址写入ARM(Thumb)状态的R15寄存器,将引起非对齐的指令取指。在一个非字(半字)对齐的地址读写一个字(半字),将引起非对齐的数据访问。,75,谢谢!,76,