嵌入式系统讲义——第2章.ppt
嵌入式系统讲义第2章 ARM体系结构第第2 2章章 ARMARM体系结构体系结构1嵌入式系统讲义第2章 ARM体系结构ARMARM:Advanced RISC MachineAdvanced RISC Machine1、CISC体系结构(体系结构(Complex Instruction Set Computer复杂指令集计算机)复杂指令集计算机)传统计算机性能的提高体现在两个方面:提高集成度(增加芯片的晶体管数量)传统计算机性能的提高体现在两个方面:提高集成度(增加芯片的晶体管数量);增加指令集的复杂程度。;增加指令集的复杂程度。带来的问题:指令越来越多,越来越长,从带来的问题:指令越来越多,越来越长,从1字节发展到近字节发展到近30字节。字节。实现复杂指令占用了大量的芯片面积和容量。实现复杂指令占用了大量的芯片面积和容量。20%与与80%的问题的问题 20%的简单指令使用率占的简单指令使用率占80%,而,而80%的复杂指令使用率只占的复杂指令使用率只占20%复杂指令影响复杂指令影响VLSI处理器的实现处理器的实现 指令长度不一致,复杂指令的存在使控制逻辑的设计实现不规整,执指令长度不一致,复杂指令的存在使控制逻辑的设计实现不规整,执行速度无法提高,实现高性能行速度无法提高,实现高性能VLSI芯片很困难。芯片很困难。软硬件设计的抵消问题软硬件设计的抵消问题 增加的指令降低软件复杂度,但使用复杂指令执行时间长,程序总体增加的指令降低软件复杂度,但使用复杂指令执行时间长,程序总体执行时间未必减少。执行时间未必减少。2.1 ARM2.1 ARM体系结构简介体系结构简介2嵌入式系统讲义第2章 ARM体系结构2、RISC体系结构(体系结构(Reduced Instruction Set Computer精简指令集计算机精简指令集计算机)v设计思想:精简指令集的复杂度,简化指令的硬件设计,设计思想:精简指令集的复杂度,简化指令的硬件设计,硬件只执行很有限的最常用的指令,复杂的操作由简单指硬件只执行很有限的最常用的指令,复杂的操作由简单指令合成。令合成。v效果:效果:RISC处理器比同等规模的处理器比同等规模的CISC处理器快处理器快50%75%,更易设计实现,成本大幅度降低。,更易设计实现,成本大幅度降低。vRISC体系结构特点:体系结构特点:指令格式和长度固定,容易设计实现;代码优化编译效率更高;指令指令格式和长度固定,容易设计实现;代码优化编译效率更高;指令单周期完成;便于流水线操作;芯片面积显著减小,易于集成更多功单周期完成;便于流水线操作;芯片面积显著减小,易于集成更多功能。能。最成功的代表:最成功的代表:ARM系列处理器系列处理器3嵌入式系统讲义第2章 ARM体系结构3、ARMARM处理器系列处理器系列ARM处理器目前包括以下几个系列:处理器目前包括以下几个系列:ARM7系列系列ARM9系列系列ARM9E系列系列ARM10E系列系列ARM11系列(最近已推出)系列(最近已推出)Intel的的StrongARMStrongARM和和Xscale4嵌入式系统讲义第2章 ARM体系结构(1)(1)、ARM7TDMIARM7TDMI系列介绍系列介绍 TThumb16TThumb16位压缩指令集位压缩指令集 DD支持片上支持片上DebugDebug调试,使处理器能够响应调试请求调试,使处理器能够响应调试请求 MM增强型增强型MultiplierMultiplier,产生产生6464位结果位结果 IIEmbeddedICEEmbeddedICE硬件,支持片上断点和观察点硬件,支持片上断点和观察点特点:特点:具有协处理器具有协处理器MMU接口接口8K的的CacheJTAG接口接口三级流水线三级流水线主频到主频到100MHz性能超过性能超过4865嵌入式系统讲义第2章 ARM体系结构(2)(2)、ARM9TDMIARM9TDMI系列介绍系列介绍特点:特点:32K的的Cache五级流水线五级流水线支持更高时钟速率支持更高时钟速率,到到400MHz其余与其余与ARM7系列类似系列类似性能是性能是ARM7系列的系列的2倍,超过倍,超过Pentium i5866嵌入式系统讲义第2章 ARM体系结构(3)(3)、ARM10TDMIARM10TDMI系列介绍系列介绍特点:特点:高端处理器高端处理器64K的的Cache六级流水线六级流水线更高时钟速率,更高时钟速率,1GHz其余与其余与ARM9系列类似系列类似性能是性能是ARM9系列的系列的2倍倍7嵌入式系统讲义第2章 ARM体系结构ARM 三级流水线简介三级流水线简介ARM7使用3级流水线机制:v取指:读取程序存储器中的指令,放入指令流水线中。v译码:对指令进行译码,为下一周期准备数据路径需要的控制信号。此时指令占据译码逻辑而不占据数据路径。v执行:指令占据数据路径,寄存器堆被读取,操作数被放到ALU中并进行运算,运算结果被放到目的寄存器中并改变程序状态寄存器的条件标志。8嵌入式系统讲义第2章 ARM体系结构9嵌入式系统讲义第2章 ARM体系结构2.22.2、典型、典型ARMARM芯片与单片机的比较芯片与单片机的比较三星公司三星公司ARM芯片与芯片与89C51指令效率比较指令效率比较S3C44B0XS3C241089C51时钟频率时钟频率66MHz266MHz24MHz总线宽度总线宽度32位位32位位8位位执行速率执行速率66M条指令条指令/秒秒266M条指令条指令/秒秒约约0.5M条指条指令令/秒秒地址空间地址空间4GBytes1GBytes64KBytes指令综合效率指令综合效率S3C44B0X是是89C51的的200400倍倍10嵌入式系统讲义第2章 ARM体系结构S3C2410与与89C51功能资源比较功能资源比较 89C51主要资源:主要资源:P0、P2复用地址数据口复用地址数据口P1 可用作可用作8位位I/O口口3个外部中断口个外部中断口1个个UART口口片内片内8K FLASH256bytes RAM11嵌入式系统讲义第2章 ARM体系结构 S3C2410X主要资源:主要资源:内核带有内核带有1616K高速指令缓存和高速指令缓存和16K数据缓存数据缓存 117个个I/O 口,口,32位数据总线和位数据总线和32位地址总线分开位地址总线分开 LCD控制器控制器(最大支持最大支持256色色STN,使用使用LCD专用专用DMA)3通道通道UART,速率可到速率可到115.2kbits/s,1通道红外接口通道红外接口IrDA 2通道的同步通道的同步IO(SPI),速率达几十速率达几十Mbits;4通道通道DMA 支持多种类型的存储器(支持多种类型的存储器(FLASH、DRAM、SDRAM、SRAM)4通道的通道的PWM定时器和定时器和1通道内部定时器通道内部定时器 具有看门狗定时器具有看门狗定时器 1个实时时钟,具备日历功能个实时时钟,具备日历功能 8通道通道10位位ADC和触摸屏接口和触摸屏接口 1通道通道IIC总线接口总线接口 1通道通道IIS总线接口总线接口 24个外部中断源个外部中断源 内部有内部有26个中断源个中断源12嵌入式系统讲义第2章 ARM体系结构2.3 ARM2.3 ARM处理器工作状态处理器工作状态ARM处理器核可工作于两种状态:vARM状态:32位指令长度vTHUMB状态:16位指令长度 代码存储时,按各自的指令长度存储;程序执行时,处理器可在两种状态之间转换,并且在THUMB状态下先将16位指令解压成32位指令再执行。因此THUMB状态不损失任何性能,但代码长度减少了很多。注意:ARM状态和THUMB状态之间的切换不影响处理器的模式或寄存器的内容ARM处理器在开始执行代码时只能处于ARM状态13嵌入式系统讲义第2章 ARM体系结构2.4 ARM2.4 ARM处理器工作模式处理器工作模式ARM处理器核使用CPSR(当前程序状态寄存器)的低5位定义当前工作模式:14嵌入式系统讲义第2章 ARM体系结构ARM处理器支持处理器支持7种工作模式,每种工作模式可访问的寄存器不同:种工作模式,每种工作模式可访问的寄存器不同:CPSR4:0模式模式用途用途可访问的寄存器可访问的寄存器10000User(用户用户)正常用户模式,程序正常执行时正常用户模式,程序正常执行时应在该模式下应在该模式下PC、R14R0、CPSR10001FIQ快速中断快速中断快速中断模式,支持高速数据传快速中断模式,支持高速数据传送或通道处理送或通道处理PC、R14_fiqR8_fiq、R7R0、CPSR、SPSR_fiq10010IRQ普通中断普通中断普通中断模式普通中断模式PC、R14_irqR13_irq、R12R0、CPSR、SPSR_irq10011SVC管理模式(或操作系统保护模式,管理模式(或操作系统保护模式,处理软件中断处理软件中断SWI)PC、R14_svcR13_svc、R12R0、CPSR、SPSR_svc10111Abort (中止中止)处理存储器故障,实现虚拟存储处理存储器故障,实现虚拟存储器和存储器保护器和存储器保护PC、R14_abtR13_abt、R12R0、CPSR、SPSR_abt11011Undefine(未定义未定义)处理未定义的指令陷阱,支持硬处理未定义的指令陷阱,支持硬件协处理器的软件仿真件协处理器的软件仿真PC、R14_undR13_und、R12R0、CPSR、SPSR_und11111SYS系统系统运行特权操作系统任务运行特权操作系统任务PC、R14R0、CPSR15嵌入式系统讲义第2章 ARM体系结构ARM处理器工作模式说明处理器工作模式说明1.用户模式:用户程序运行时所在的模式。在此模式下应用程序不能访问受操作用户模式:用户程序运行时所在的模式。在此模式下应用程序不能访问受操作系统保护的系统资源,也不能改变系统保护的系统资源,也不能改变ARM核的模式,即不能进行模式切换,除非核的模式,即不能进行模式切换,除非异常(包括中断)发生时自动切换到其它模式。异常(包括中断)发生时自动切换到其它模式。2.特权模式:特权模式:除用户模式外的其他六种模式称为特权模式除用户模式外的其他六种模式称为特权模式。这些模式主要处理程。这些模式主要处理程序异常和软件中断。在这些模式下软件可以自由切换工作模式。序异常和软件中断。在这些模式下软件可以自由切换工作模式。3.异常模式:异常模式:特权模式中除系统模式外的其他特权模式中除系统模式外的其他5种模式。即种模式。即FIQ、IRQ、SVC、Abort、Undefine模式。模式。4.特权模式由异常模式和系统模式组成特权模式由异常模式和系统模式组成5.异常模式处理中断和异常的发生。异常(异常模式处理中断和异常的发生。异常(ARM处理器将中断也视为一种异常情处理器将中断也视为一种异常情况)发生时,处理器自动进入相应模式,每种异常模式都有一些不同的寄存器,况)发生时,处理器自动进入相应模式,每种异常模式都有一些不同的寄存器,称为影子寄存器。供相应的异常处理程序使用。这样保证进入异常模式时使用称为影子寄存器。供相应的异常处理程序使用。这样保证进入异常模式时使用的寄存器与正常的用户模式不同,不会改变正常情况下的用户寄存器,即不破的寄存器与正常的用户模式不同,不会改变正常情况下的用户寄存器,即不破坏正常程序的运行。坏正常程序的运行。6.系统模式与用户模式使用同样的寄存器,但与异常模式使用的寄存器不同。系系统模式与用户模式使用同样的寄存器,但与异常模式使用的寄存器不同。系统模式供操作系统使用,操作系统可以在其他任意模式间切换,使用系统的所统模式供操作系统使用,操作系统可以在其他任意模式间切换,使用系统的所有资源,因为操作系统应该有最高的特权。有资源,因为操作系统应该有最高的特权。16嵌入式系统讲义第2章 ARM体系结构2.5 ARM2.5 ARM寄存器组成寄存器组成2.5.1 概述概述ARM处理器共有处理器共有37个寄存器,分为两类:通用寄存器和状态寄存器个寄存器,分为两类:通用寄存器和状态寄存器1.31个通用寄存器个通用寄存器程序计数器(程序计数器(PC)、)、R0R15;R13_svc、R14_svc;R13_abt、R14_abt;R13_und、R14_und;R13_irq、R14_irq;R13_fiq、R14_fiq;2.6个状态寄存器个状态寄存器CPSR、SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq、SPSR_fiq、不同模式下可以访问的寄存器不同。处理器在每一时刻只不同模式下可以访问的寄存器不同。处理器在每一时刻只能处于一种工作模式,编程时也只能使用相应的寄存器。能处于一种工作模式,编程时也只能使用相应的寄存器。17嵌入式系统讲义第2章 ARM体系结构2.5.2 ARM状态下的寄存器组织通用寄存器和程序计数器用户系统管理中止未定义普通中断快速中断 R0R7R8R8_fiqR9R9_fiqR10R10_fiqR11(FP)R11_fiqR12(IP)R12_fiqR13(SP)R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)状态寄存器CPSR无无SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq1.简介18嵌入式系统讲义第2章 ARM体系结构2.ARM状态的通用寄存器状态的通用寄存器通用寄存器指通用寄存器指R0R15,分为分为3类:类:不分组寄存器不分组寄存器(Unbanked Registers)R0R7 分组寄存器分组寄存器(Banked Registers)R8R14 程序计数器程序计数器R15(PC)1)不分组寄存器)不分组寄存器(Unbanked Registers)R0R7 在所有的模式下共用,每种模式下访问的都是同一组物理寄存器。但需要注意当程序从正在所有的模式下共用,每种模式下访问的都是同一组物理寄存器。但需要注意当程序从正常状态下进入异常模式或在不同模式间切换时,如果使用该组寄存器,首先要对寄存器的值做常状态下进入异常模式或在不同模式间切换时,如果使用该组寄存器,首先要对寄存器的值做保护,以免破坏先前模式下的数据。保护的常用方法是使用堆栈。保护,以免破坏先前模式下的数据。保护的常用方法是使用堆栈。2)分组寄存器)分组寄存器(Banked Registers)R8R14(1)R8R12寄存器:寄存器:FIQ模式和模式和FIQ模式以外的其他模式不同。实际上是两组不同的物理寄模式以外的其他模式不同。实际上是两组不同的物理寄存器。这样做目的是在存器。这样做目的是在FIQ模式时加快快速中断处理的速度,不需要执行寄存器保护工作。模式时加快快速中断处理的速度,不需要执行寄存器保护工作。(2)R13(Stack Pointer)和和R14(Link Register)寄存器:共有寄存器:共有6组不同的物理组不同的物理寄存器。系统模式和用户模式使用同一组物理寄存器,其他模式各有自己的寄存器。系统模式和用户模式使用同一组物理寄存器,其他模式各有自己的一组物理寄存器。这种设计的目的是为了堆栈操作方便。一组物理寄存器。这种设计的目的是为了堆栈操作方便。19嵌入式系统讲义第2章 ARM体系结构1)程序计数器)程序计数器R15(PC)R15专用于程序指令计数,指示即将执行的代码位置。因此该计数器不能随意更专用于程序指令计数,指示即将执行的代码位置。因此该计数器不能随意更改。由于改。由于ARM的指令长度都是的指令长度都是32位(位(4字节),而程序计数器的计数值以字节为单字节),而程序计数器的计数值以字节为单位,所以位,所以PC每次变化每次变化4字节才能取得一个完整有效的指令,字节才能取得一个完整有效的指令,PC的最低的最低2位始终都是位始终都是0才满足这一条件。才满足这一条件。注意:注意:ARM体系采用多级流水线技术,所以体系采用多级流水线技术,所以PC指向的指令地址并不是当前正在执行指向的指令地址并不是当前正在执行 的指令,而是准备取得的指令。对于的指令,而是准备取得的指令。对于3级流水线的级流水线的ARM核,核,PC指向的是比当前指令指向的是比当前指令高两条的指令位置,即地址高高两条的指令位置,即地址高8个字节;对于个字节;对于5级流水线的级流水线的ARM核,核,PC指向的是比当指向的是比当前指令高三条的指令位置,即地址高前指令高三条的指令位置,即地址高12个字节。个字节。20嵌入式系统讲义第2章 ARM体系结构2.ARM程序状态寄存器程序状态寄存器有有两种程序状态寄存器:两种程序状态寄存器:CPSR、SPSR CPSR是所有模式都共用的;每种异常模式又都有一个对应的是所有模式都共用的;每种异常模式又都有一个对应的SPSR,当异常发生时用来保存当异常发生时用来保存CPSR的状态,当异常处理结束返回正常工作状态时的状态,当异常处理结束返回正常工作状态时恢复恢复CPSR。ARM的数据指令在执行时可以影响的数据指令在执行时可以影响CPSR的条件码,根据条件码的的条件码,根据条件码的变化决定指令的流向,也可以通过比较指令和测试指令直接设置变化决定指令的流向,也可以通过比较指令和测试指令直接设置CPSR的条件的条件码。码。21嵌入式系统讲义第2章 ARM体系结构1)条件码说明:N负数标志;如果数据指令运行结果为负,则负数标志;如果数据指令运行结果为负,则N=1;如果非负则如果非负则N=0Z零标志;如果结果为零标志;如果结果为0,则,则Z=1;如果非如果非0,则,则Z=0C进位进位/借位标志;对于加减法运算,结果有进位或借位时借位标志;对于加减法运算,结果有进位或借位时C=1,否则否则C=0;对于移位指令,对于移位指令,C为移位操作中最后移出的位的值。为移位操作中最后移出的位的值。V溢出指令;运算结果有溢出时溢出指令;运算结果有溢出时V=1,否则否则V=02)控制位说明:控制位说明:CPSR的最低的最低8位是控制位。异常发生时将改变控制位的值。在特位是控制位。异常发生时将改变控制位的值。在特权模式下程序员也可以通过软件来改变控制位。权模式下程序员也可以通过软件来改变控制位。(1)中断禁止位)中断禁止位I:I=1,禁止禁止IRQ中断;中断;F=1,禁止禁止FIQ中断中断(2)工作状态位)工作状态位T:T=0表示运行于表示运行于ARM状态;状态;T=1表示运行于表示运行于Thumb状态状态(3)模式位)模式位M4:0:表示处理器工作于表示处理器工作于7中模式中的哪一种中模式中的哪一种3)其他位:)其他位:目前未用目前未用22嵌入式系统讲义第2章 ARM体系结构2.6 ARM2.6 ARM的的异常中断异常中断 ARM系统中使用异常来处理程序执行时的意外事件,包括中断、存储器故障、系统中使用异常来处理程序执行时的意外事件,包括中断、存储器故障、未定义指令、复位等。所有的异常事件都按中断的处理机制来解决。未定义指令、复位等。所有的异常事件都按中断的处理机制来解决。异常中断发生时,程序执行完当前的指令后将跳转到异常中断处理程序中运异常中断发生时,程序执行完当前的指令后将跳转到异常中断处理程序中运行,运行完成后将返回正常的程序继续执行原理的程序。进入异常中断处理程序时,要保行,运行完成后将返回正常的程序继续执行原理的程序。进入异常中断处理程序时,要保存被中断了的程序的执行现场(主要是相关的寄存器),在从异常中断处理程序返回时要存被中断了的程序的执行现场(主要是相关的寄存器),在从异常中断处理程序返回时要恢复被中断的程序的执行现场。每种异常中断都具有各自的备份寄存器组。恢复被中断的程序的执行现场。每种异常中断都具有各自的备份寄存器组。ARM的异常分的异常分3类:类:(1)指令执行引起的直接异常)指令执行引起的直接异常软件中断、未定义指令和预取指中止引起该种异常软件中断、未定义指令和预取指中止引起该种异常(2)指令执行引起的间接异常)指令执行引起的间接异常数据中止引起该异常数据中止引起该异常(3)外部产生的与指令流无关的异常)外部产生的与指令流无关的异常复位、复位、IRQ和和FIQ引起该异常引起该异常23嵌入式系统讲义第2章 ARM体系结构异常类型异常类型向量地址向量地址优先级优先级异常中断含义异常中断含义复位复位(Reset)0 x000000001外部复位引脚有效时系统产生复位异常中断,程序从外部复位引脚有效时系统产生复位异常中断,程序从头开始执行,也可以由软件复位直接产生头开始执行,也可以由软件复位直接产生未定义指令未定义指令(Undefined Instruction)0 x000000046当前指令无效时产生当前指令无效时产生软件中断软件中断(SWI)0 x000000086由由软件(用户)自行定义软件(用户)自行定义指令预取中止指令预取中止(Prefech Abort)0 x0000000C5当当程序存储器故障无法取得有效指令时产生程序存储器故障无法取得有效指令时产生数据访问中止数据访问中止(Data Abort)0 x000000102当数据存储器故障无法取得有效数据时产生当数据存储器故障无法取得有效数据时产生外部中断请求外部中断请求(IRQ)0 x000000184当当处理器的外部中断请求引脚有效并且该中断未被禁处理器的外部中断请求引脚有效并且该中断未被禁止时产生。系统的外设一般通过该种方式工作止时产生。系统的外设一般通过该种方式工作快速中断请求快速中断请求(FIQ)0 x0000001C3当处理器的外部快速中断请求引脚有效并且该中断未当处理器的外部快速中断请求引脚有效并且该中断未被禁止时产生。系统的外设可以通过该种方式工作被禁止时产生。系统的外设可以通过该种方式工作24嵌入式系统讲义第2章 ARM体系结构2.6.1 ARM2.6.1 ARM的的异常中断响应过程异常中断响应过程复位异常将立即终止正在执行的指令,其他的异常中断将在完成当前指复位异常将立即终止正在执行的指令,其他的异常中断将在完成当前指令后转到异常处理程序进行处理。令后转到异常处理程序进行处理。ARMARM处理器对异常中断的响应过程如下:处理器对异常中断的响应过程如下:(1 1)将将CPSRCPSR的内容保存到即将进入模式的的内容保存到即将进入模式的SPSRSPSR中,实现对处理器当前状态、中断中,实现对处理器当前状态、中断屏蔽位和各条件标志位的保存。屏蔽位和各条件标志位的保存。(2 2)设置设置CPSRCPSR的相应位。的相应位。设置模式控制位设置模式控制位M4:0M4:0,使,使处理器进入相应的工作模式。处理器进入相应的工作模式。设置中断标志位设置中断标志位I=1I=1,禁止禁止IRQIRQ中断中断 当进入当进入ResetReset或或FIQFIQ模式时,设置中断标志位模式时,设置中断标志位F=1F=1,禁止禁止FIQFIQ中断中断(3 3)将刚执行完的正常程序指令对应的下一条指令保存到新异常模式的将刚执行完的正常程序指令对应的下一条指令保存到新异常模式的R14R14(LRLR)中,以备异常执行完成后正确返回到正常程序的指令地址。中,以备异常执行完成后正确返回到正常程序的指令地址。(4 4)给程序计数器(给程序计数器(PCPC)强制赋值,使程序跳转到相应模式的矢量地址处开始执强制赋值,使程序跳转到相应模式的矢量地址处开始执行程序。该矢量地址处存放一条指向相应中断处理程序的转移指令,从而可使程行程序。该矢量地址处存放一条指向相应中断处理程序的转移指令,从而可使程序跳转到相应的中断程序处执行异常中断处理。序跳转到相应的中断程序处执行异常中断处理。以上过程由硬件自动完成,不需要程序员用软件编程实现。以上过程由硬件自动完成,不需要程序员用软件编程实现。每种异常模式都有两个寄存器每种异常模式都有两个寄存器R13_R13_和和R14_R14_,分别保存相应模式分别保存相应模式下的堆栈指针和返回地址。堆栈指针可以用来定义一个存储区域保存其他用户寄下的堆栈指针和返回地址。堆栈指针可以用来定义一个存储区域保存其他用户寄存器,如存器,如R0R7,保存完后在新模式下就可以任意使用这些寄存器了。这个过程需保存完后在新模式下就可以任意使用这些寄存器了。这个过程需要程序员用软件编程来完成。要程序员用软件编程来完成。25嵌入式系统讲义第2章 ARM体系结构2.6.2 ARM2.6.2 ARM的的异常中断返回过程异常中断返回过程复位异常处理由硬件自动完成复位异常处理由硬件自动完成,之后将从头开始程序的执行,没有返回过之后将从头开始程序的执行,没有返回过程;其他的异常中断在完成异常处理程序后将返回被中断了的正常程序处继续执行,程;其他的异常中断在完成异常处理程序后将返回被中断了的正常程序处继续执行,要求异常处理程序能精确地恢复异常发生时的用户状态。从异常中断处理程序中返要求异常处理程序能精确地恢复异常发生时的用户状态。从异常中断处理程序中返回时需要执行以下回时需要执行以下4 4个基本操作:个基本操作:(1 1)所有修改过的用户寄存器必须从处理程序的保护堆栈中恢复(出栈)。所有修改过的用户寄存器必须从处理程序的保护堆栈中恢复(出栈)。(2 2)将将SPSR_SPSR_寄存器内容复制到寄存器内容复制到CPSRCPSR中,使得中,使得CPSRCPSR从相应的从相应的SPSRSPSR中恢复,这中恢复,这样就恢复了被中断的程序状态。样就恢复了被中断的程序状态。(3 3)将将R14R14(LRLR)中的值复制到中的值复制到PCPC中,使程序从被中断了的正常程序处开始执行。中,使程序从被中断了的正常程序处开始执行。(4 4)最后清除最后清除CPSRCPSR中的中断禁止标志位中的中断禁止标志位I I 和和/或或 F F。以上过程以上过程需要程序员用软件编程来完成。需要程序员用软件编程来完成。2.6.3 异常中断向量表异常中断向量表 该表中的地址位于程序存储器的最前端,每种模式对应一个该表中的地址位于程序存储器的最前端,每种模式对应一个地址,每个地址的长度是地址,每个地址的长度是32位。在发生异常时,处理器将相应的地址值位。在发生异常时,处理器将相应的地址值自动赋给自动赋给PC,完成第一次跳转,这是一种硬件机制;在每个相应的地址完成第一次跳转,这是一种硬件机制;在每个相应的地址中保存着一条跳转指令,指向异常处理程序的起始位置,这个跳转指令中保存着一条跳转指令,指向异常处理程序的起始位置,这个跳转指令和异常处理程序由程序员编程来完成,由软件实现。中断向量表中地址和异常处理程序由程序员编程来完成,由软件实现。中断向量表中地址0 x00000014不用。不用。26嵌入式系统讲义第2章 ARM体系结构2.6.4 异常中断的优先级异常中断的优先级 当几个异常中断同时发生时,必须按照一定的顺序来处理这些异常当几个异常中断同时发生时,必须按照一定的顺序来处理这些异常中断。在中断。在ARM中通过给异常中断赋予一定的优先级来实现这种处理顺序。优先级中通过给异常中断赋予一定的优先级来实现这种处理顺序。优先级顺序如下:顺序如下:复位(最高优先级);复位(最高优先级);数据异常中止;数据异常中止;FIQ;IRQ;预取指异常中止;预取指异常中止;SWI、未定义指令;未定义指令;如果几个异常同时发生,将首先执行高优先级的异常中断,其他的异如果几个异常同时发生,将首先执行高优先级的异常中断,其他的异常将挂起,执行完高优先级的异常后再执行次高优先级的异常;如果一个低优先常将挂起,执行完高优先级的异常后再执行次高优先级的异常;如果一个低优先级的异常首先发生并开始执行(但未完成),此时一个高优先级的异常也发生了,级的异常首先发生并开始执行(但未完成),此时一个高优先级的异常也发生了,此时高优先级的异常将打断低优先级的异常程序转而去执行高优先级的异常程序,此时高优先级的异常将打断低优先级的异常程序转而去执行高优先级的异常程序,完成之后再去执行未完成的低优先级异常程序;反过来,高优先级的异常首先发完成之后再去执行未完成的低优先级异常程序;反过来,高优先级的异常首先发生并开始执行,此时低优先级的异常将不能打断高优先级异常的执行,只有等到生并开始执行,此时低优先级的异常将不能打断高优先级异常的执行,只有等到高优先级异常完成之后才能开始低优先级异常的执行。这种功能也是一种硬件机高优先级异常完成之后才能开始低优先级异常的执行。这种功能也是一种硬件机制。制。27嵌入式系统讲义第2章 ARM体系结构2.7 ARM 存储数据类型及格式简介存储数据类型及格式简介1.ARM支持的数据类型8位有符号和无符号字节字节16位有符号和无符号半字半字,以2字节为边界对齐32位有符号和无符号字字,以4字节为边界对齐2.存储器组织小端格式28嵌入式系统讲义第2章 ARM体系结构大端格式29