




已阅读5页,还剩102页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章ARM编程模型,第三章ARM编程模型,主要内容:1、ARM数据类型2、ARM微处理器的工作状态3、ARM微处理器的工作模式4、ARM体系结构的寄存器组织5、ARM体系结构的存储器格式6、ARM体系结构的异常中断7、ARM协处理器,3.1ARM数据类型,3.1指令长度及数据类型,ARM微处理器的指令长度可以是32位(ARM状态),也可以为16位(Thumb)状态ARM微处理器支持字节(8位)、半字(16位)、字(32位)3种数据类型字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0),3.2指令流水线,3.2ARM指令流水线,3.2.1ARM体系结构的7个特点3.2.2指令流水线,1、ARM与Thumb状态-两种处理器工作状态;ARM状态(执行32位ARM指令)和Thumb状态(执行16位Thumb指令).V4版以后有:32位ARM指令集16位Thumb指令集,功能是ARM指令集的功能子集。ARM7TDMI核以后,T变种的ARM微处理器有两种工作状态:ARM状态Thumb状态,1、ARM与Thumb状态,2、Thumb指令集;虽然ARM处理器本身是32位设计,但考虑到RISC型处理器的指令功能相对较弱,新型的ARM体系结构中定义了16位的Thumb指令集。Thumb指令集比通常的8/16位CISC/RISC处理器有更好的代码密度,而芯片面积只增加6%,却可以使程序存储器更小。也就是说,arm代码密度小thumb代码密度大,同样的程序用ARM编译的代码比用THUMB编译的代码大。,2、Thumb指令集,Thumb技术介绍:ARM的RISC体系结构的发展中已经提供了低功耗、小体积、高性能的方案。而为了解决代码长度的问题,ARM体系结构又增加了变种,开发了一种新的指令体系,这就是Thumb指令集,它是ARM技术的一大特色。,2、Thumb指令集,Thumb是ARM体系结构的扩展。它有从标准32位ARM指令集抽出来的36条指令格式,可以重新编成16位的操作码。支持Thumb的ARM体系结构的处理器状态可以方便的切换、运行到Thumb状态,在该状态下指令集是16位的Thumb指令集。,2、Thumb指令集,与ARM指令集相比Thumb指令集具有以下局限:完成相同的操作,Thumb指令通常需要更多的指令,因此在对系统运行时间要求苛刻的应用场合ARM指令集更为适合;Thumb指令集没有包含进行异常处理时需要的一些指令,因此在异常中断时,还是需要使用ARM指令,这种限制决定了Thumb指令需要和ARM指令配合使用。,2、Thumb指令集,3、RISC型处理器结构;ARM采用RISC结构,在简化处理器结构,减少复杂功能指令的同时,提高了处理器的速度。考虑到处理器与存储器打交道的指令执行时间远远大于在寄存器内操作的指令执行时间,RISC型处理器采用了Load/Store(加载/存储)结构,即只有Load/Store指令可与存储器打交道,其余指令都不允许进行存储器操作。同时,为了进一步提高指令和数据的存取速度,RISC型处理器增加了指令高速缓冲I-Cache和数据高速缓冲D-Cache及多处理器结构,使指令的操作尽可能在寄存器之间进行。,3、RISC型处理器结构,CISC和RISC,CISC:复杂指令集(ComplexInstructionSetComputer)具有大量的指令和寻址方式8/2原则:80%的程序只使用20%的指令大多数程序只使用少量的指令就能够运行。CISCCPU包含有丰富的单元电路,因而功能强、面积大、功耗大。,RISC:精简指令集(ReducedInstructionSetComputer)在通道中只包含最有用的指令确保数据通道快速执行每一条指令使CPU硬件结构设计变得更为简单,RISCCPU包含较少的单元电路,因而面积小、功耗低,CISC与RISC的比较,主要差别:寄存器RISC指令集拥有更多的通用寄存器,每个可以存放数据和地址,寄存器为所有的数据操作提供快速的存储访问。CISC指令集多用于特定目的的专用寄存器。LOADSTORE结构RISC结构Cpu仅处理寄存器中的数据,采用独立的、专用的LOADSTORE指令来完成数据在寄存器和外存之间的传送。(访存费时,处理和存储分开,可以反复的使用保存在寄存器中的数据,而避免多次访问外存)。CISC结构能直接处理存储器中的数据。,CISC与RISC的比较,4、多处理器状态模式;ARM体系结构定义了7种处理器模式:用户(usr)、快中断(fiq)、中断(irq)、管理(svc)、终止(abt)、未定义(und)和系统(sys),大大提高了ARM处理器的效率。,4、多处理器状态模式,5、嵌入式在线仿真调试;ARM体系结构的处理器芯片都嵌入了在线仿真ICE-RT逻辑,便于通过JTAG来仿真调试芯片,省去了价格昂贵的在线仿真器。6、灵活方便的接口;ARM体系结构具有协处理器接口,允许接16个协处理器。既可以使基本的ARM处理器内核尽可能小,方便地扩充ARM指令集,也可以通过未定义指令来支持协处理器的软件仿真。7、低电压功耗的设计。考虑到ARM体系结构的处理器主要用于手持式嵌入式系统中,ARM体系结构在设计中就十分注意功耗的设计。,3.2.2指令流水线,流水线方式是把一个重复的过程分解为若干个子过程,每个子过程可以与其他子过程同时进行。由于这种工作方式与工厂中的生产流水线十分相似,因此,把它称为流水线工作方式。,为了改善硬件资源的使用率和处理器的吞吐量,在当前指令结束之前就开始执行下一条指令。这种技术被称为流水线。(取指,译码,执行,缓冲/数据,回写),3.2.2指令流水线,流水线中的冒险“写后读”冒险当一条指令的结果被用做下一条指令的操作数时,流水线操作被中断。,3.2.2指令流水线,“转移指令”冒险后续该读取到的指令被丢弃,3.2.2指令流水线,为增加处理器指令流的速度,ARM7系列使用3级流水线.允许多个操作同时处理,比逐条指令执行要快。PC指向正被取指的指令,而非正在执行的指令,3.2.2指令流水线,1ARM的3级流水线,注:程序计数器PC指向正在取指的指令而不是正在执行的指令,1ARM的3级流水线,多周期ARM指令的3级流水线操作,1ARM的3级流水线,2、最佳流水线,该例中用6个时钟周期执行了6条指令所有的操作都在寄存器中(单周期执行)指令周期数(CPI)=1,3、LDR流水线举例,下一条指令需要前一条指令的结果,而这时结果还没出来,处理器就会等待,这就称流水线互锁该例中,用6周期执行了4条指令指令周期数(CPI)=1.5,4、分支流水线举例,流水线被阻断注意:内核运行在ARM状态,5、ARM的流水线结构,随着流水线深度(级数)的增加,每一段的工作量被削减了,这使得处理器可以工作在更高的频率,同时改进了处理器的性能;负面作用是增加了系统的延时,即内核在执行一条指令前,需要更多的周期来填充流水线;流水线级数的增加也意味着在某些段之间会产生数据相关。,3.3ARM微处理器的工作模式,3.3ARM微处理器的工作模式,ARM有7个基本工作模式1、用户模式(usr):非特权模式,大部分任务执行在这种模式正常程序执行的模式2、快速中断模式(fiq):当一个高优先级(fast)中断产生时将会进入这种模式高速数据传输或通道处理3、外部中断模式(irq):当一个低优先级(normal)中断产生时将会进入这种模式通常的中断处理,3.3ARM微处理器的工作模式,4、管理模式(svc):当复位或软中断指令执行时将会进入这种模式供操作系统使用的一种保护模式5、中止模式(abt):当存取异常时将会进入这种模式虚拟存储及存储保护6、未定义模式(und):当执行未定义指令时会进入这种模式软件仿真硬件协处理器7、系统模式(sys):供需要访问系统资源的操作系统任务使用特权级的操作系统任务,3.3ARM微处理器的工作模式,当处理器工作在usr模式时,正常执行的程序不能访问某些被保护的系统资源,也不能改变模式,除非异常发生。除用户模式外的6种模式称为特权模式(fiq、irq、svc、abt、und和sys)。特权模式是为了服务中断,或访问保护的资源,它们可以自由地访问系统资源和改变模式。特权模式中,除系统模式外,其他5种模式又称为异常模式,即fiq、irq、svc、abt、und称为异常模式。当特定的异常出现时,进入相应的模式。,用户模式和特权模式,大多数的用户程序运行在用户模式下,此时,应用程序不能够访问一些受操作系统保护的系统资源,应用程序也不能直接进行处理器模式的切换。,用户模式下,当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理中进行处理器模式的切换。,每种模式都有某些附加的寄存器,以避免异常出现时用户模式的状态不可靠。其中,sys模式与usr模式有完全相同的寄存器,但它是特权模式,并不受usr模式的限制。,模式切换,处理器模式可以通过软件进行切换,也可以通过外部中断或者异常处理过程进行切换。,当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式下都有一组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模式时,用户模式下的寄存器不被破坏。,模式切换,系统模式并不是通过异常进入的,它和用户模式具有完全一样的寄存器。但是系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式切换。它主要供操作系统任务使用。通常操作系统的任务需要访问所有的系统资源,同时该任务仍然使用用户模式的寄存器组,而不是使用异常模式下相应的寄存器组,这样可以保证当异常中断发生时任务状态不被破坏。,3.4ARM微处理器的工作状态,3.4ARM微处理器的工作状态,从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:ARM:处理器执行32位的字对齐的ARM指令;Thumb:处理器执行16位的半字对齐的Thumb指令。,ARM的体系结构,ARM的指令存储结构,THUMB的指令存储结构,32位存储结构,16位存储结构,状态切换方法,ARM指令集和Thumb指令集均有切换处理器状态的指令,通过执行工作状态切换指令BX随时切换两种工作状态。并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。,在开始执行代码时,应该处于ARM状态。,进入Thumb状态,当操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的方法,使微处理器从ARM状态切换到Thumb状态。,当处理器处于Thumb状态时发生异常(如IRQ、FIQ、Undef、Abort、SWI等),则异常处理返回时,自动切换到Thumb状态。,切换到ARM状态,当操作数寄存器的状态位为0时,执行BX指令时可以使微处理器从Thumb状态切换到ARM状态。,在处理器进行异常处理时,把PC指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。,ARM与THUMB,THUMB指令是ARM指令的子集,可以相互调用,只要遵循一定的调用规则,Thumb指令与ARM指令的时间效率和空间效率关系为:,存储空间约为ARM代码的6070,指令数比ARM代码多约3040,存储器为32位时ARM代码比Thumb代码快约40,存储器为16位时Thumb比ARM代码快约4050,使用Thumb代码,存储器的功耗会降低约30,3.5ARM体系结构的寄存器组织3.5.1ARM状态下的寄存器组织3.5.1.1通用寄存器3.5.1.2状态寄存器3.5.2Thumb状态下的寄存器组织,3.5ARM体系结构的寄存器组织,ARM一共有37个32位的寄存器31个通用寄存器R0R15;R13_svc、R14_svc;R13_abt、R14_abt;R13_und、R14_und;R13_irq、R14_irq;R8_fiq-R14_fiq6个状态寄存器,这些寄存器都是32位的,但只使用了其中的12位。CPSRSPSR_svc、SPSR_abt、SPSR_und、SPSR_irq和SPSR_fiq,每一组处理器模式都有一组相应的寄存器组;在任意的处理器模式下,可见的寄存器包括15个通用寄存器(R0R14)、1个或2个状态寄存器和程序寄存器。,(下页图:带灰色底纹的单元格表明用户模式或系统模式使用的一般寄存器已被异常模式特定的另一寄存器所替代。),ARM的体系结构,寄存器组织,3.5.1ARM状态下的寄存器组织3.5.1.1通用寄存器3.5.1.2状态寄存器,ARM状态下的寄存器组织,3.5.1.1通用寄存器,通用寄存器包括R0R15,可以分为三类:未分组寄存器R0R7分组寄存器R8R14程序计数器PC(R15)(1)未分组寄存器R0R7(Theunbankedregisters)在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途,是真正的通用寄存器。因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。注意同一寄存器在不同模式下使用时的数据保护。,3.5.1.1通用寄存器,(2)分组寄存器R8R14(Thebankedregisters):每一次所访问的物理寄存器与处理器当前的运行模式有关。对于R8R12来说,每个寄存器对应两个不同的物理寄存器,当使用fiq模式时,访问寄存器R8_fiqR12_fiq;当使用除fiq模式以外的其他模式时,访问寄存器R8_usrR12_usr。,3.5.1.1通用寄存器,对于R13(SP)、R14(LR)来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式与系统模式共用,另外5个物理寄存器对应于其他5种不同的运行模式。采用以下的记号来区分不同的物理寄存器:R13_R14_其中,mode为以下几种模式之一:usr、fiq、irq、svc、abt、und。,3.5.1.1通用寄存器,寄存器R13通常用做堆栈指针,记作SP(stack,heap)寄存器R13在ARM指令中常用作堆栈指针SP,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。而在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针。每一种异常模式都拥有自己的物理的R13。当进入异常模式时,将需要使用的寄存器保存在R13所指的栈中。当退出异常模式时,将保存在R13所指的栈中的寄存器值弹出。,3.5.1.1通用寄存器,R14程序链接寄存器,记作LRR14称作子程序连接寄存器(SubroutineLinkRegister)或连接寄存器LR。当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份。其他情况下,R14用作通用寄存器。与之类似,当发生中断或异常时,对应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用来保存R15的返回值。子程序调用R14存放当前子程序的返回地址。异常中断该异常模式特定的物理R14被设置成该异常模式将要返回的地址。R14也可以作为通用寄存器使用。,3.5.1.1通用寄存器,(3)程序计数器PC(R15)ARM处理器采用多级流水线技术寄存器R15用作程序计数器(PC)。在ARM状态下,指令总是字对齐的,位1:0为0,位31:2用于保存指令地址PC;在Thumb状态下,指令是半字对齐的,位0为0,位15:1用于保存指令地址PC;,3.5.1.1通用寄存器,(3)程序计数器PC(R15)虽然可以用作通用寄存器,但是有一些指令在使用R15时有一些特殊限制,若不注意,执行的结果将是不可预料的。R15值的改变将引起程序执行顺序的变化,这有可能引起程序执行中出现一些不可预料的结果。所以,一般不这么使用。由于ARM采用多级流水线技术,PC总是指向正在取指的指令,而不是正在执行的指令,因此保存在R15的程序地址并不是当前执行指令的地址。对于3级流水线,PC总是指向下两条指令的地址,也即PC总是指向当前指令的下两条指令的地址。因此,对于ARM指令集而言,PC的值为当前指令的地址值加8个字节。(那么对3级流水线的THUMB指令集而言呢?),3.5.1.2状态寄存器,ARM体系结构包含一个当前程序状态寄存器(CPSR,CurrentProgramStatusRegister)和5个备份的程序状态寄存器(SPSRs,SavedProgramStatusRegister)。备份的程序状态寄存器用来进行异常处理,其功能包括:保存ALU中的当前操作信息控制允许和禁止中断设置处理器的运行模式,程序状态寄存器CPSR用来保存当前程序状态的寄存器。所有处理器模式下都可以访问当前程序状态寄存器CPSR。CPSR包含条件码标志、中断禁止位、当前处理器模式以及其它状态和控制信息。,程序状态保存寄存器SPSR_mode当异常发生时,SPSR_mode用来保存CPSR的当前值,从异常返回时,由SPSR_mode恢复CPSR(恢复异常发生时的工作状态)。由于用户模式和系统模式不属于异常模式,他们没有SPSR,当在这两种模式下访问SPSR,结果是未知的。,一共有多少个SPSR?为什么?,f条件码标志位(保存ALU中的当前操作信息)N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。在ARM状态下,绝大多数的指令都是有条件执行的。在Thumb状态下,仅有分支指令是有条件执行的。,C控制位,位0:7为控制位中断禁止位I、F控制允许和禁止中断,I和F为中断/快中断禁止位I1禁止IRQ中断I0允许IRQ中断F1禁止FIQ中断F0允许FIQ中断,C控制位,位0:7为控制位T控制位反映处理器的运行状态,T为处理器工作状态选择位T=1时,程序运行于Thumb状态T=0时,程序运行于ARM状态M控制位决定了处理器的运行模式,M0、M1、M2、M3和M4为处理器模式选择位当发生异常时这些位被改变。如果处理器运行在特权模式,这些位也可以由程序修改。,工作模式位M4:0定义,保留位,其它位8:27留做以后ARM版本的扩展。CPSR中的其余位为保留位,当改变CPSR中的条件码标志位或者控制位时,保留位不要改变,在程序中也不要使用保留位来存储数据。保留位将用于ARM版本的扩展。,3.5.2Thumb状态下的寄存器组织,3.5.2Thumb状态下的寄存器组织,Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集。程序员可以直接访问8个通用的寄存器(R0R7),程序计数器PC、堆栈指针SP、链接寄存器LR和当前状态寄存器CPSP。Thumb状态下的寄存器组织与ARM状态下的寄存器组织的关系:Thumb状态下和ARM状态下的R0R7是相同的。Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的。Thumb状态下的SP对应于ARM状态下的R13。Thumb状态下的LR对应于ARM状态下的R14。Thumb状态下的程序计数器对应于ARM状态下R15,3.6ARM体系结构的存储器格式,3.6ARM体系结构的存储器格式,ARM体系结构所支持的最大寻址空间为4GB(232字节),ARM体系结构将存储器看作是从零地址开始的字节的线性组合。从0字节到3字节放置第一个存储的字数据,从第4个字节到第7个字节放置第二个存储的字数据,依次排列。,ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式,3.6ARM体系结构的存储器格式,大端格式(big-endian):字数据的高位字节存储在低地址中,而字数据的低位字节则存放在高地址中,大端存储模式,3.6ARM体系结构的存储器格式,小端格式(little-endian):与大端存储格式相反。低地址中存放的是字数据的低位字节,高地址存放的是字数据的高位字节。,小端存储模式(缺省),指令长度及数据类型,ARM微处理器的指令长度可以是32位(在ARM状态下),也可以为16位(在Thumb状态下)。,ARM微处理器中支持字节(8位)、半字(16位)、字(32位)三种数据类型,其中,字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0),非对齐的存储访问操作,在ARM种,如果存储单元的地址没有遵守对齐规则,则称为非对齐的存储访问操作。,非对齐的指令预取操作,非对齐的数据访问操作,非对齐的指令预取操作,当处理器处于ARM状态期间,如果写入到寄存器PC中的值是非字对齐的,要么指令执行的结果不可预知,要么地址值中最低两位被忽略。,当处理器处于THUMB状态期间,如果写入到寄存器PC中的值是非半字对齐的,要么指令执行的结果不可预知,要么地址值中最低位被忽略。,非对齐的数据访问操作,对于Load/Store操作,如果是非对齐的数据访问操作,系统定义了三种可能的结果:,1、执行的结果不可预知,2、忽略字单元地址的低两位的值,即访问地址为(addressAND0XFFFFFFFC)的字单元;忽略半字单元地址的最低位的值,即访问地址为(addressAND0XFFFFFFFE)的半字单元。,非对齐的数据访问操作,3、忽略字单元地址的低两位的值;忽略半字单元地址的最低位的值;由存储系统实现这种忽略。也就是说,这时该地址值原封不动地送到存储系统。,当发生非对齐地数据访问时,到底采用上述三种方法中的哪一种,是由各指令指定的。,3.7ARM体系结构的异常中断,3.7.1ARM体系结构所支持的异常类型3.7.2各类异常的具体描述3.7.3ARM体系结构的异常中断,3.7ARM体系结构的异常中断,当正常的程序执行流程发生暂时的停止时,称之为异常(Exceptions),例如处理一个外部的中断请求。当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。在当异常中断处理程序执行完成后,程序返回到发生中断的指令的下条指令处执行。在进行异常中断处理程序时,要保存被中断的程序的执行现场,在从异常中断处理程序退出时,要恢复被中断的程序的执行现场。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。,对异常的响应,当一个异常出现以后,ARM微处理器会执行以下几步操作,将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。,将CPSR复制到相应的SPSR中。,根据异常类型,强制设置CPSR的运行模式位。,强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。,从异常返回,异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:,将连接寄存器LR的值减去相应的偏移量后送到PC中。,将SPSR复制回CPSR中。,若在进入异常处理时设置了中断禁止位,要在此清除。,可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。,R14_=ReturnLinkSPSR_=CPSRCPSR4:0=ExceptionModeNumberCPSR5=0If=ResetorFIQthenCPSR6=1CPSR7=1PC=ExceptionVectorAddress,异常响应伪代码,处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态。ARM微处理器对异常的响应过程用伪码可以描述为:,在ARM状态下执行,禁止快速中断,禁止正常中断,转入异常入口地址,3.7.1ARM体系结构所支持的异常类型,3.7.2各类异常的具体描述,(1)复位处理器上一旦有复位输入,ARM处理器立刻停止执行当前指令。复位后,ARM处理器在禁止中断的管理模式下,从地址0 x00000000或0 xFFFF0000开始执行指令。(2)未定义指令异常UndefinedInstruction当ARM处理器执行协处理器指令时,它必须等待任一外部协处理器应答后,才能真正执行这条指令。若协处理器没有响应,就会出现未定义指令异常。未定义指令异常可用于在没有物理协处理器(硬件)的系统上,对协处理器进行软件仿真,或在软件仿真时进行指令扩展ARM或Thumb指令集。,ARM可以通过增加协处理器来支持一个通用的指令集扩展,也可以通过未定义指令来支持协处理器的软件仿真。,处理器执行以下程序返回,无论是在ARM状态还是Thumb状态:MOVSPC,R14_und以上指令恢复PC(从R14_und)和CPSR(从SPSR_und)的值,并返回到未定义指令后的下一条指令。,3.7.2各类异常的具体描述,(3)SoftwareInterruupt(软件中断),软件中断指令(SWI)用于进入管理模式,常用于请求执行特定的管理功能。该异常由执行SWI指令产生,可使用此机制进行软件仿真。软件中断处理程序执行以下指令可以从SWI模式返回,无论是在ARM状态还是Thumb状态:MOVSPC,R14_svc以上指令恢复PC(从R14_svc)和CPSR(从SPSR_svc)的值,并返回到SWI的下一条指令。,3.7.2各类异常的具体描述,3.7.2各类异常的具体描述,(4)预取中止(取指令存储器中止)若处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号,但当预取的指令被执行时,才会产生指令预取中止异常。(5)数据中止(数据访问存储器中止ABORT(中止)若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常。产生中止异常意味着对存储器的访问失败。ARM微处理器在存储器访问周期内检查是否发生中止异常。,中止异常包括两种类型:指令预取中止:发生在指令预取时。数据中止:发生在数据访问时。,当指令预取访问存储器失败时,存储器系统向ARM处理器发出存储器中止(Abort)信号,预取的指令被记为无效,但只有当处理器试图执行无效指令时,指令预取中止异常才会发生,如果指令未被执行,例如在指令流水线中发生了跳转,则预取指令中止不会发生。,3.7.2各类异常的具体描述,若数据中止发生,系统的响应与指令的类型有关。,当确定了中止的原因后,Abort处理程序均可以执行以下指令从中止模式返回,无论是在ARM状态还是Thumb状态:SUBSPC,R14_abt,#4;指令预取中止SUBSPC,R14_abt,#8;数据中止,3.7.2各类异常的具体描述,(6)IRQ(InterruptRequest),IRQ异常属于正常的中断请求,可通过对处理器的nIRQ引脚输入低电平产生,IRQ的优先级低于FIQ,当程序执行进入FIQ异常时,IRQ可能被屏蔽。当处理器的外部中断请求引脚有效,且CPSR中的I=0,产生IRQ异常。系统的外设可通过该异常请求中断服务。,3.7.2各类异常的具体描述,若将CPSR的I位置为1,则会禁止IRQ中断,若将CPSR的I位清零,处理器会在指令执行完之前检查IRQ的输入。注意只有在特权模式下才能改变I位的状态。,不管是在ARM状态还是在Thumb状态下进入IRQ模式,IRQ处理程序均可以执行以下指令从IRQ模式返回:SUBSPC,R14_irq,#4,3.7.2各类异常的具体描述,(7)FIQ(FastInterruptRequest),FIQ异常是为了支持数据传输或者通道处理而设计的。当处理器的外部中断请求引脚有效,且CPSR中的F=0,产生FIQ异常。FIQ支持数据传送和通道处理,并有足够的私有寄存器,从而在应用中可避免对寄存器保存的需求,减少了开销。,3.7.2各类异常的具体描述,若将CPSR的F位置为1,则会禁止FIQ中断,若将CPSR的F位清零,处理器会在指令执行时检查FIQ的输入。注意只有在特权模式下才能改变F位的状态。,可由外部通过对处理器上的nFIQ引脚输入低电平产生FIQ。不管是在ARM状态还是在Thumb状态下进入FIQ模式,FIQ处理程序均可以执行以下指令从FIQ模式返回:SUBSPC,R14_fiq,#4,3.7.2各类异常的具体描述,异常向量表(ExceptionVectors),异常出现后,强制从异常类型对应的固定存储器地址开始执行程序。这些固定的地址称为异常向量(ExceptionVectors)。,异常优先级(ExceptionPriorities),应用程序中的异常处理,当系统运行时,异常可能会随时发生,为保证在ARM处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异常处理,采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理程序,当ARM处理器发生异常时,程序计数器PC会被强制设置为对应的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 发言稿 设计院
- 爱心资助发言稿
- 时间的脚丫课件
- 挖竹笋教学课件
- 时间图课件教学课件
- 二零二五年度个人房屋维修基金担保合同范本参考
- 二零二五年度离婚子女抚养权变更及监护责任转移合同
- 2025版快递行业与旅游行业联合服务合作协议范本
- 二零二五年婚姻解除出轨赔偿与财产分割协议
- 二零二五版12333薪酬福利政策设计与实施合同
- 2025-2030中国特高压电网建设规划与设备需求分析报告
- 2026版赢在微点顶层设计大一轮物理-专题提升二十 测量电阻的其他几种方法
- 民族文化宫2025年公开招聘17人笔试模拟试题含答案详解
- 2025年幼儿园教师专业考试试题及答案书
- 2025秋新部编版一年级上册语文教学计划+教学进度表
- 机关事业单位工人汽车驾驶员高级、技师国家题库练习题及答案
- 2025年国家公务员考试行测真题及答案(完整版)
- 小型企业网络构建:VPN设置与配置详解
- 2025年辽宁省地质勘探矿业集团有限责任公司校园招聘笔试备考题库带答案详解
- 消化道内异物疑难病例讨论
- 2025年预防接种技能竞赛征集试题
评论
0/150
提交评论