第二章ARM9体系结构_第1页
第二章ARM9体系结构_第2页
第二章ARM9体系结构_第3页
第二章ARM9体系结构_第4页
第二章ARM9体系结构_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.,第2章ARM9体系结构,.,第2章ARM9体系结构,2.1ARM处理器简介2.2ARM9体系结构2.3ARM存储结构2.4ARM处理器的工作状态和模式2.5ARM9寄存器2.6ARM9异常2.7ARM系统调试接口,.,2.1ARM处理器简介,2.1.1ARM公司简介2.1.2ARM体系结构特点2.1.3ARM指令系统版本2.1.4ARM体系结构演变2.1.5ARM微处理器简介,.,2.1.1ARM公司简介,ARM是AdvanceRISCMachine的缩写,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。ARM公司于1990年11月在英国剑桥成立,前身为Acorn计算机公司。ARM公司是全球领先的16/32位嵌入式RISC微处理器解决方案供应商。,.,2.1.1ARM公司简介,ARM公司是知识产权IP(IntellectualProperty)公司,本身不生产芯片,只转让设计许可,由合作伙伴公司来生产各具特色的芯片。目前,全世界有几十家著名的半导体公司都使用ARM公司的授权,其中包括Intel、IBM、MOTOROLA、SONY、NEC、LG、ATMEL等,从而保证了大量的开发工具和丰富的第三方资源,它们共同保证了基于ARM处理器核的设计可以很快投入市场。ARM公司已成为移动通信、手持设备、多媒体数字消费嵌入式解决方案的RISC标准。,.,2.1.2ARM体系结构的特点,总体思想:在不牺牲性能的同时,尽量简化处理器。同时从体系结构的层面上灵活支持处理器扩展。这种简化和开放的思路使得ARM处理器采用了很简单的结构来实现。ARM处理器是最先进的:目前,ARM32位体系结构被公认为业界领先的32位嵌入式RISC微处理器核,所有ARM处理器都共享这一体系结构。,.,嵌入式微处理器体系结构,冯诺依曼体系结构和哈佛体系机构冯诺依曼体系结构,也称为普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。例如Intel的80 x86系列CPU、ARM早期系列微处理器及MIPS系列微处理器哈佛体系结构是将程序指令存储器和数据存储器分开的存储器结构。例如摩尔罗拉公司的MC68系列、ATMEL公司的AVR系列及ARM9以上系列复杂指令集计算机CISC(ComplexInstructionSetComputer)和精简指令集计算机RISC(ReducedInstructionSetComputer),.,2.1.2ARM体系结构的特点,RISC型处理器结构ARM采用RISC结构,在简化处理器结构,减少复杂功能指令的同时,提高了处理器的速度。减少指令执行时间:考虑到处理器与存储器打交道的指令执行时间远远大于在寄存器内操作的指令执行时间,RISC型处理器采用了Load/Store(加载/存储)结构,即只有Load/Store指令可与存储器打交道,其余指令都不允许进行存储器操作。提高存取速度:为了进一步提高指令和数据的存取速度,RISC型处理器增加了指令高速缓冲I-Cache和数据高速缓冲D-Cache及多处理器结构,使指令的操作尽可能在寄存器之间进行。,.,2.1.2ARM体系结构的特点,.,2.1.2ARM体系结构的特点,多种处理器模式ARM体系结构定义了7种处理器模式:用户、快中断、中断、管理、终止、未定义和系统模式,大大提高了ARM处理器的效率。两种处理器工作状态ARM状态(32位指令)和Thumb状态(16位指令)。虽然ARM处理器本身是32位设计,但考虑到RISC型处理器的指令功能相对较弱,新型的ARM体系结构中定义了16位的Thumb指令集。,.,2.1.2ARM体系结构的特点,嵌入式在线仿真调试ARM体系结构的处理器芯片都嵌入了在线仿真ICE-RT逻辑,便于通过JTAG来仿真调试,省去了价格昂贵的在线仿真器。灵活方便的协处理器接口ARM体系结构具有协处理器接口,允许接16个协处理器。既可以使基本的ARM处理器内核尽可能小,方便地扩充ARM指令集,也可以通过未定义指令来支持协处理器的软件仿真。低电压功耗的设计考虑到ARM处理器主要用于手持式嵌入式系统中,在设计中就十分注意功耗的设计。,.,2.1.3ARM指令系统版本,ARM公司从最初的开发到现在,ARM指令集结构有了巨大的改进,并在不断完善和发展。为了清楚地表达每个ARM内核所使用的指令集,ARM公司定义了一系列的指令集体系结构版本,以vx表示某种版本。,.,2.1.4ARM体系结构的演变,Thumb指令集(T变种)长乘指令(M变种)支持片上调试(D变种)在线观察(I变种)增强型DSP指令(E变种)Java加速器Jazelle(J变种)ARM媒体功能扩展(SIMD变种)ARM可综合版本“-S”,.,2.1.5ARM系列处理器简介,ARM有以下系列处理器:ARM7系列ARM9系列ARM9E系列ARM10系列ARM11系列SecurCore系列Inter的StrongARM和Xscale系列其中,ARM7、ARM9、ARM9E、ARM10和ARM11为5个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。SecurCore系列专门为安全要求较高的应用而设计。,.,2.1.5ARM系列处理器简介,ARM7系列ARM7采用冯诺依曼(Von-Neumann)结构,数据存储器和程序存储器使用同一存储空间,用相同的指令访问。此结构也被大多数计算机所采用。ARM7为三级流水线结构(取指,译码,执行),平均功耗为0.6mW/MHz,时钟速度为66MHz,每条指令平均执行1.9个时钟周期。ARM7系列微处理器包括如下几种类型的核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器,属低端ARM处理器核。,.,2.1.5ARM系列处理器简介,ARM9系列ARM7采用的Neumann结构,取指令和取操作数都是通过一条总线分时进行,这样,在高速运算时,不但不能同时取指令和取操作数,而且还会造成传输通道上的瓶颈现象。ARM9采用哈佛(Harvard)结构,程序存储器与数据存储器分开,提供了较大的存储器带宽。同时,大多数DSP都采用此结构。,.,2.1.5ARM系列处理器简介,ARM9E系列ARM9E系列微处理器包括如下4种类型的核:ARM926EJ-S、ARM946E-S和ARM966E-S,ARM968E-S。见表2-3。ARM9E系列是一种包含有微控制器、DSP、Java功能的综合处理器,并且具有嵌入式在线观察功能(EmbededICE-RT逻辑),更好地适应了实时系统开发的需要。,.,2.1.5ARM系列处理器简介,ARM10系列ARM10系列微处理器包括:ARM1020E和ARM1022E等型号,见表2-4。ARM10系列采用了新的体系结构,其核心为使用了向量浮点单元,有强大的浮点运算能力,并且增加了Cache容量和总线宽度,并且具有低功耗的特点。ARM10系列微处理器主要应用于下一代无线设备、视频消费品等。,.,2.1.5ARM系列处理器简介,ARMStrong/Xscale系列StrongARM是采用ARM体系结构高度集成的32位RISC微处理器。它融合了Intel公司的设计技术,以及ARM体系结构的电源效率,其体系结构在软件上兼容ARMv4,同时又具有Intel技术优点。StrongARM是Intrl公司为手持消费类电子和移动计算与通信设备生产的嵌入式处理器。采用StrongARM架构的处理器有:SA-1、SA-110、SA-1100、SA1110和IXP1200。,.,2.1.5ARM系列处理器简介,Xscale是基于ARMv5体系结构的解决方案,是一款性能全、性价比高、功耗低的处理器,支持16位的Thumb和DSP指令集,主要应用于数字移动电话、个人数字助理和网络产品等。Xscale架构的处理器有:PXA250、PXA255和PXA270等。,.,ARM系列产品命名规则,.,2.2ARM9体系结构,2.2.1ARM9体系结构2.2.2ARM9流水线结构2.2.3ARM9总线结构,.,2.2.1ARM9体系结构,ARM9内核ARM9TDMI、指令接口、数据接口、JTAG接口、跟踪接口等5部分,.,2.2.1ARM9体系结构,在ARM9中,最常用的是ARM920T内核,后页图给出了ARM920T结构框图。ARM920T结构主要部分有:ARM9TDMI内核CPU、MMU、Cache、协处理器接口、运行跟踪信息接口(ETM)、JTAG调试接口、总线接口等7部分构成。,.,ARM920T体系结构框图,.,2.2.2ARM流水线结构,流水线方式:是把一个重复的过程分解为若干个子过程,每个子过程可以与其他子过程同时进行。由于这种工作方式与工厂中的生产流水线十分相似,因此,把它称为流水线工作方式。处理器按照一系列步骤来执行每一条指令。典型的步骤为:1)从存储器读取指令(fetch,取指)2)译码以鉴别它是哪一类指令(dec,译码)3)从寄存器组取得所需的操作数(reg,取操作数)4)将操作数组合以得到结果或存储器地址(exe,执行)5)如果需要,则访问存储器存取数据(mem,存数据)6)将结果回写到寄存器组(res,存数据),.,2.2.2ARM流水线结构,ARM7的三级流水线取指:从程序存储器中取指令,放入指令流水线。(占用存储器访问操作)译码:指令译码。(占用译码逻辑)执行:执行指令/读写REG。(占用ALU及数据路径),.,2.2.2ARM流水线结构,下图为3个单周期指令在流水线上的情况。一条指令需要3个时钟执行,但吞吐量是每个周期1条指令。,.,优秀的流水线结构,Operation,Cycle,123456,Fetch,Decode,Execute,Fetch,Decode,Execute,Fetch,Decode,Execute,Fetch,Decode,Execute,Fetch,Decode,Execute,Decode,Execute,Fetch,Decode,Fetch,Fetch,.,2.2.2ARM流水线结构,ARM9TDMI的五级流水线,ARM7TDMI与ARM9TDMI流水线比较,.,2.2.2ARM流水线结构(8),ARM7和ARM9流水线比较5级流水线的ARM9内核是哈佛架构,拥有独立的指令和数据总线;指令和数据的读取可以在同一周期进行;3级流水的ARM7内核是指令和数据总线复用的冯.诺依曼架构,指令和数据的读取不能在同一周期进行;5级流水线设计把寄存器读取、逻辑运算、结果回写分散在不同的流水当中,每一级流水的操作简洁,提升了处理器的主频。,.,2.2.2ARM流水线结构,随着流水线深度(级数)的增加,每一段的工作量被削减了,这使得处理器可以工作在更高的频率,同时改进了处理器的性能;负面作用是增加了系统的延时,即内核在执行一条指令前,需要更多的周期来填充流水线;流水线级数的增加也意味着在某些段之间会产生数据相关。,.,ARM处理器性能比较,.,2.2.3ARM总线结构,ARM微控制器使用的是AMBA总线体系结构AMBA(AdvancedMicrocontrollerBusArchitecture)是ARM公司公布的总线标准,先进的AMBA规范定义了三种总线:AHB总线(AdvancedHigh-performanceBus):用于连接高性能系统模块。它支持突发数据传输方式及单个数据传输方式,所有时序参考同一个时钟沿。ASB总线(AdvancedSystemBus):用于连接高性能系统模块,它支持突发数据传输模式。APB总线(AdvancePeripheralBus):是一个简单接口支持低性能的外围接口。,.,2.3ARM存储结构,2.3.1ARM存储结构2.3.2ARM存储器组织2.3.3ARM存储器层次,.,2.3.1ARM存储结构,ARM处理器支持以下6种数据类型:8位有符号和无符号字节(Byte)。16位有符号和无符号半字(Halfword)它们必须以两字节的边界对齐(半字对齐)32位有符号和无符号字(Word)它们必须以4字节的边界对齐(字对齐),.,2.3.2ARM存储器组织,ARM存储器以8位为一个单元存储数据(一个字节),每个存储单元分配一个存储地址。ARM将存储器看作是从零地址开始的字节的线性组合。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB(232字节)。,.,2.3.2ARM存储器组织,从零字节到三字节放置第一个存储的字数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列。32位的字数据要使用4个地址单元,16位半字数据要使用2个地址单元。这样,就存在一个所存储的字或半字数据的排列顺序问题。ARM体系结构可以用两种方法存储字数据,称为大端格式和小端格式。,.,2.3.2ARM存储器组织,大端格式(big-endian):字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。,.,2.3.2ARM存储器组织,小端格式(low-endian):与大端存储格式相反。低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。缺省设置为小端格式。,.,2.3.3ARM存储器层次,微处理器希望存储器容量大、速度快。但容量大者速度慢;速度快者容量小。解决方法是构建一个由多级存储器组成的复合存储器系统。两级存储器方案一般包括:一个容量小但速度快的从存储器一个容量大但速度慢的主存储器宏观上看这个存储器系统像一个即大又快的存储器。这个容量小但速度快的元件是Cache,它自动地保存处理器经常用到的指令和数据的拷贝。,.,寄存器组:访问时间约为几个ns。片上RAM:片外RAM比速度快、功耗小、容量小。读写时间约为几个ns。片上Cache:832KB,访问时间约为十几个ns。主存储器:一般为几兆字节数GB的动态存储器,访问时间约50ns。,多级存储器系统,.,2.4ARM处理器的工作状态和模式,2.4.1ARM处理器的工作状态2.4.2ARM处理器的工作模式,.,2.4ARM处理器的工作状态和模式,为了能够体现ARM的特点和性能,ARM处理器有2种工作状态和7种工作模式。两种工作状态:ARM状态:处理器执行32位的字对齐的ARM指令;Thumb状态:处理器执行16位的半字对齐的Thumb指令。两种状态可以切换。程序执行过程中,通过执行带状态切换的分支指令BX,随时在两种工作状态之间进行切换。处理器工作状态的转变,并不影响处理器的工作模式和相应寄存器中的内容。,.,2.4.1ARM处理器的工作状态,从ARM状态切换到Thumb状态,有两种情况处理器从ARM状态切换到Thumb状态。(1)执行指令切换到Thumb状态:执行BX指令(跳转指令),当目标地址为奇数时,则微处理器从ARM状态切换到Thumb状态。此为主动切换。(2)中断返回切换到Thumb状态:当处理器处于Thumb状态时发生异常(如IRQ、FIQ、Undef等),处理完异常后,在异常处理返回时,自动切换回到Thumb状态。此为自动切换。,.,2.4.1ARM处理器的工作状态,从Thumb状态切换到ARM状态:有两种情况处理器从Thumb状态切换到ARM状态。(1)执行指令切换到ARM状态执行BX指令(跳转指令),当目标地址为偶数时,则微处理器从Thumb状态切换到ARM状态。(2)中断处理切换到ARM状态当处理器在Thumb状态时发生异常(如IRQ、FIQ、Undef等),则处理器从Thumb状态自动切换到ARM状态进行异常处理。自动切换。ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容。ARM处理器在开始执行代码时,只能处于ARM状态,.,状态切换的汇编程序实例,AREAAddReg,CODE,READONLYENTRYmainADRr0,ThumbProg+1BXr0;切换到Thumb状态CODE16ThumbProgMOVr2,#2MOVr3,#3ADDr2,r2,r3ADRr0,ARMProg;切换到ARM状态BXr0,CODE32ARMProgMOVr4,#4MOVr5,#5ADDr4,r4,r5stopMOVr0,#0 x18LDRr1,=0 x20026SWI0X123456END,.,2.4.2ARM处理器的工作模式,ARM基于安全保护、中断响应快捷、易于扩展考虑,设计有多种工作模式。用户模式(USR):非特权模式,大部分任务执行在这种模式。正常程序执行的模式快速中断模式(FIQ):当一个高优先级(fast)中断产生时将会进入这种模式。用于高速数据传输或通道处理普通中断模式(IRQ):当一个低优先级(normal)中断产生时将会进入这种模式。用于普通的中断处理,.,2.4.2ARM处理器的工作模式,管理模式(SVC):当复位或软中断指令执行时将会进入这种模式。供操作系统使用的一种保护模式中止模式(ABT):当出现存取异常时将会进入这种模式,用于虚拟存储及存储保护。未定义模式(UND):当执行未定义指令时会进入这种模式,用于软件仿真硬件协处理器系统模式(SYS):供需要访问系统资源的操作系统任务使用,用于特权级的操作系统任务,.,2.4.2ARM处理器的工作模式,7种工作模式总结,.,2.4.2ARM处理器的工作模式,特权模式,除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。,.,2.4.2ARM处理器的工作模式,用户和系统模式,这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。,.,2.4.2ARM处理器的工作模式,处理器模式的切换方式:软件控制进行切换(软中断、改变模式字)通过外部中断和异常进行切换处理器启动时的模式转换图:,管理模式,多种特权模式,用户程序的运行模式,复位后的缺省模式,完成各模式的堆栈设置,注意不要进入用户模式,一般为用户模式User,.,2.5ARM9寄存器,2.5.1ARM寄存器2.5.2ARM通用寄存器2.5.3ARM状态寄存器2.5.4Thumb状态下的寄存器组织,.,2.5.1ARM9寄存器,ARM处理器v4及以上版本有37个32位的寄存器,其中31个为通用寄存器;6个为状态寄存器。31个通用寄存器R0R15;R13_svc、R14_svc;R13_abt、R14_abt;R13_und、R14_und;R13_irq、R14_irq;R8_fiqR14_fiq6个状态寄存器CPSRSPSR_svc、SPSR_abt、SPSR_und、SPSR_irq和SPSR_fiq,ARM状态各模式下的寄存器,ARM状态各模式下的寄存器,所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。,ARM状态各模式下可以访问的寄存器,一般的通用寄存器,在汇编语言中寄存器R0R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。,一般的通用寄存器,其中R0R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。,一般的通用寄存器,寄存器R8R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器,一般的通用寄存器,寄存器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。,一般的通用寄存器,寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。,堆栈指针寄存器R13(SP),寄存器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。,链接寄存器R14(LR),R14为链接寄存器(LR),在结构上有两个特殊功能:在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。,.,2.5.2ARM9通用寄存器,MOVPC,LR,R14(地址A),?,1.程序A执行过程中调用程序B;,操作流程,2.程序跳转至标号Lable,执行程序B。同时硬件将“BLLabel”指令的下一条指令所在地址存入R14(LR);,3.程序B执行最后,将R14寄存器的内容放入PC,返回程序A;,R14(LR)寄存器与子程序调用,程序计数器R15(PC),寄存器R15为程序计数器(PC),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的。,.,2.5.2ARM的通用寄存器,R15在ARM状态下,位1:0为0,位31:2用于保存PC;在Thumb状态下,位0为0,位15:1用于保存PC;关于PC的值:由于ARM采用多级流水线技术,所以PC总是指向正在取指的指令,而不是正在执行的指令。对于ARM9的五级流水线,在第一级取指令,第三级执行指令,因此PC总是指向当前指令(正在执行的指令)的下两条指令的地址,所以PC的值为当前指令的地址值加8个字节。,.,2.5.3ARM的状态寄存器,在ARM微处理器中,有CPSR和SPSR两种程序状态寄存器。CPSR:当前程序状态寄存器(CurrentProgramStatusRegister)用来保存当前的程序状态。所有处理器模式下都可以访问当前程序状态寄存器CPSR。仅一个CPSR。,.,2.5.3ARM的状态寄存器,SPSR_mode-保存程序状态寄存器(SavedProgramStatusRegister)SPSR_mode用来进行异常处理,其功能包括:保存ALU中的当前操作信息当异常发生时,用来保存CPSR的值,从异常返回时,将SPSR_mode复制到CPSR中,恢复CPSR的值。控制允许和禁止中断设置处理器的运行模式,.,2.5.3ARM的状态寄存器,条件码标志位(保存ALU中的当前操作信息)N:正负号/大小标志位(0表示:正数/大于;1表示:负数/小于)Z:零标志位(0表示:结果不为零;1表示:结果为零)C:进位/借位/移出位(0表示:未进位/借位/移出0;1表示:进位/未借位/移出1)V:溢出标志位(0表示:结果未溢出;1表示:结果溢出)Q:DSP指令运算溢出标志位(v5及以上版本的E变种),.,2.5.3ARM9的状态寄存器,控制位I:IRQ中断控制位(1:禁止中断;0:允许中断)、F:FIQ中断控制位(1:禁止中断;0:允许中断T:处理器运行状态标志位(T=1时,程序运行于Thumb状态;T=0时,程序运行于ARM状态)M:处理器运行模式控制位(当发生异常时这些位被改变;如果处理器运行在特权模式,这些位也可以由程序修改),.,2.5.3ARM9的状态寄存器,保留位:CPSR中其余位为保留位。当修改CPSR时,保留位不要改变,在程序中也不要使用保留位来存储数据。保留位将用于ARM版本的扩展。,.,2.5.4Thumb状态下的寄存器组织,Thumb状态下的寄存器集是ARM状态下寄存器集的子集。程序员可以直接访问8个通用的寄存器(R0R7),程序计数器PC、堆栈指针SP、链接寄存器LR和当前状态寄存器CPSP。共有27个寄存器:21个通用寄存器和6个状态寄存器。,.,2.5.4Thumb状态下的寄存器组织,.,2.6ARM异常,2.6.1中断和异常的概念2.6.2ARM异常中断响应过程2.6.3ARM异常类型2.6.4ARM中断向量和中断优先级,.,2.6.1中断和异常的概念,中断是一种过程,指CPU正常执行的程序被某种临时发生的事件所打断,当前程序暂时停止执行,CPU转去处理所发生的事件,处理完毕再返回继续执行暂时停止的程序,这一过程称为中断。中断事件:引起CPU产生中断、并且与CPU当前所执行的程序无关的、由外部硬件产生的事件,也叫中断源。中断事件也常称为外中断。中断是计算机系统基本的功能。利用中断,外设可以与CPU并行工作,当外设需要传输数据或控制时,向CPU发出中断请求信号。CPU响应其请求进行处理。因此,使用中断既可以实现CPU与外设并行工作,又可以实时处理各种紧急事件。,.,2.6.1中断和异常的概念,异常是指CPU在执行指令时出现的错误,即不正常的情况。异常是与当前所执行的程序有关的。如存取数据或指令错误、计算结果溢出等。异常的处理:也用中断的方式进行处理。计算机通常是用中断来处理外中断和异常,因此下面将二者均称为异常。当系统运行时,异常可能会随时发生,为保证在ARM处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异常处理,当异常处理完成以后,返回到主程序继续执行。所有异常都需要处理,尽管有些异常处理程序可能是简单的死循环或直接返回。,.,2.6.1中断和异常的概念,ARM程序的三种执行流程顺序流程:每执行一条ARM指令,程序计数器(PC)的值加4;每执行一条Thumb指令,程序计数器寄存器(PC)的值加2,整个过程是按顺序执行。跳转流程:程序执行了跳转指令,则要跳转到特定的地址标号处执行,包括跳转到子程序。例如,跳转指令,B、BL、BLX和BX。中断流程:当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。在当异常中断处理程序执行完成后,程序返回到发生中断的指令的下条指令处执行。,.,2.6.2ARM异常中断响应过程,进入异常:当发生异常时,处理器尽量完成当前指令,然后立即中止当前指令,脱离当前的程序去处理异常。ARM处理器对异常中断的响应过程如下:1、保存返回地址将引起异常指令的下一条指令的地址保存到新的异常模式x下的R14,即R14-mode中,使异常处理程序执行完后能正确返回原程序。2、保存当前状态寄存器CPSR的内容将CPSR的内容保存到将要执行的异常中断对应的SPSR-mode中,便于中断返回时恢复处理器当前的状态位、中断屏蔽位以及各条件标志位。,.,2.6.2ARM异常中断响应过程,3、设置当前状态寄存器CPSR中的相应位设置CPSR模式控制位CPSR4:0,使处理器进入相应的模式运行;设置IRQ中断标志位(CPSR6=1)禁止IRQ中断;设置FIQ中断标志位(CPSR7=1)禁止FIQ中断,当进入Reset或FIQ模式时。4、转去执行中断处理程序取相应的中断向量给程序计数器PC,使程序开始执行中断处理程序。异常矢量的地址处是一条指向相应程序的转移指令,从而可跳转到相应的异常中断处理程序处,执行异常中断处理程序。,.,2.6.2ARM异常中断响应过程,异常返回:异常处理完毕之后,需要执行以下几步操作从异常返回:1、将返回地址装入PC把连接寄存器LR的值减去相应的偏移量,然后送到PC中。2、恢复CPSR的值将SPSR复制回CPSR中。3、清除中断屏蔽位若在进入异常处理时设置了中断禁止位,要在此清除。注意:复位异常处理程序不需要返回。,.,2.6.3ARM异常类型,.,2.6.3ARM异常类型,复位(RST)处理器上一旦出现复位信号,ARM处理器立刻停止执行当前指令。复位后,ARM处理器转换到禁止中断的管理模式下,从地址0 x00000000处开始执行指令。由此可见,复位也是一种异常。对于复位这种异常,不返回到异常前的程序。,.,2.6.3ARM异常类型,普通中断(IRQ)异常当处理器的普通中断请求引脚有效,且CPSR中的I=0,产生IRQ异常。无论是在ARM状态还是Thumb状态,其返回指令应该为:SUBSPC,R14_irq,#4恢复CPSR的值(SPSR_mode),并返回执行中断前未被执行的指令。,.,异常进入和退出,.,2.6.3ARM异常类型,快速中断(FIQ)异常当处理器所设的快速中断请求有效,且CPSR中的F=0,则产生快速中断异常。FIQ支持数据传送和通道处理,并有足够的私有寄存器,从而可以减少对寄存器保存的开销。无论是在ARM状态还是Thumb状态,执行以下指令从FIQ模式返回:SUBSPC,R14_fiq,#4恢复CPSR的值(SPSR_mode),并返回执行中断前未被执行的指令。,.,指令预取中止(ABT)异常若处理器预取指令的地址不存在,或者该地址不允许当前指令访问,存储器会向CPU发出存储器中止(Abort)信号,其指令被记为无效。但只有当CPU试图执行无效指令时,指令预取中止异常才会发生,否则不发生。对于指令预取中止异常,无论是在ARM状态还是Thumb状态,其返回指令为:SUBSPC,R14_abt,#4恢复CPSR的值(SPSR_mode),并重新执行被中止的指令。,2.6.3ARM异常类型,.,数据中止(ABT)异常如果处理器数据访问指令的地址不存在,或者该地址不允许当前指令访问时,产生数据中止异常。无论是在ARM状态还是Thumb状态,中止异常返回指令为:SUBSPC,R14_abt,#8恢复CPSR的值(SPSR_mode),并重新执行被中止的指令。,2.6.3ARM异常类型,.,软件中断(SWI)异常该异常由执行软件中断指令SWI产生,用于进入管理模式,常用于请求执行特定的管理功能、软件仿真等。无论是在ARM状态下还是在Thumb状态下进入软件中断异常,都可以执行以下指令从SWI模式返回:MOVSPC,R14_svc以上指令恢复PC(从R14_svc)和CPSR(从SPSR_svc)的值,并返回到SWI的下一条指令。,2.6.3ARM异常类型,.,2.6.3ARM异常类型,未定义指令(UND)异常1、发生未定义异常的两种情况(1)遇到了一条ARM处理器和任何协处理器都无法识别的指令,则发生未定义指令异常。(2)当ARM处理器执行协处理器指令时,它必须等待协处理器应答后,才能真正执行这条指令。若协处理器没有响应,就会出现未定义指令异常。,.,2.6.3ARM异常类型,处理器执行以下程序返回,无论是在ARM状态还是T

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论