ARM处理器的工作模式_第1页
ARM处理器的工作模式_第2页
ARM处理器的工作模式_第3页
ARM处理器的工作模式_第4页
ARM处理器的工作模式_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、嵌入式系统设计嵌入式系统设计:ARM:ARM处理器的工作模式处理器的工作模式1.1 ARM处理器的工作状态和模式处理器的工作状态和模式为了能够体现为了能够体现ARM的特点和性能,的特点和性能,ARM处理处理器有两种工作状态和器有两种工作状态和7种工作模式。种工作模式。1.1.1 ARM处理器的工作状态处理器的工作状态 有两种工作状态:有两种工作状态: ARM状态:状态:处理器执行处理器执行32位的字对齐的位的字对齐的ARM指指令;令; Thumb状态:状态:处理器执行处理器执行16位的半字对齐的位的半字对齐的Thumb指令。指令。 两种状态可以切换两种状态可以切换。程序执行过程中,通过执。程序

2、执行过程中,通过执行行带状态切换的分支指令带状态切换的分支指令BX,随时在两种工作状,随时在两种工作状态之间进行切换。并且,处理器工作状态的转变,态之间进行切换。并且,处理器工作状态的转变,并不影响处理器的工作模式和相应寄存器中的内容。并不影响处理器的工作模式和相应寄存器中的内容。1.1 ARM处理器的工作状态和模式处理器的工作状态和模式(2)从从ARM状态切换到状态切换到Thumb状态状态有两种情况有两种情况ARM处理器自动切换到处理器自动切换到Thumb状态。状态。 (1)执行)执行BX指令,当操作数寄存器的位指令,当操作数寄存器的位0为为1时,则时,则微处理器从微处理器从ARM状态切换到

3、状态切换到Thumb状态。此为主动切换。状态。此为主动切换。 (2)当处理器处于)当处理器处于Thumb状态时发生异常(如状态时发生异常(如IRQ、FIQ、Undef等),处理完异常后,在异常处理返回时,自等),处理完异常后,在异常处理返回时,自动切换到动切换到Thumb状态。此为自动切换。状态。此为自动切换。从从Thumb状态切换到状态切换到ARM状态状态有两种情况有两种情况ARM处理器自动切换到处理器自动切换到Thumb状态。状态。 (1)执行)执行BX指令,当操作数寄存器的位指令,当操作数寄存器的位0为为0时,则时,则微处理器从微处理器从Thumb状态切换到状态切换到ARM状态。状态。

4、(2)当处理器在)当处理器在Thumb状态时发生异常(如状态时发生异常(如IRQ、FIQ、Undef等),则处理器从等),则处理器从Thumb状态自动切换到状态自动切换到ARM状态状态进行异常处理进行异常处理1.1 ARM处理器的工作状态和模式处理器的工作状态和模式(3)例例1.1 状态切换程序状态切换程序;从从ARM状态切换到状态切换到Thumb状态状态LDRR0,=Lable+1BXR0;从从Thumb状态切换到状态切换到ARM状态状态LDRR0,=LableBXR0注意:注意: ARM和和Thumb之间状态的切换不影响处理器的之间状态的切换不影响处理器的模式或寄存器的内容。模式或寄存器的

5、内容。 ARM处理器在开始执行代码时,只能处于处理器在开始执行代码时,只能处于ARM状态。状态。1.1.2 ARM处理器的工作模式处理器的工作模式一、一、 ARM9的的7种工作模式种工作模式 1、用户模式(、用户模式(usr):非特权模式,大部分任务非特权模式,大部分任务执行在这种模式。执行在这种模式。正常程序执行的模式正常程序执行的模式2、快速中断模式(、快速中断模式(fiq):):当一个高优先级当一个高优先级(fast)中断产生时将会进入这种模式。中断产生时将会进入这种模式。 高速数据传输或通高速数据传输或通道处理道处理3、外部中断模式(、外部中断模式(irq):):当一个低优先级当一个低

6、优先级(normal)中断产生时将会进入这种模式。中断产生时将会进入这种模式。 通常的中通常的中断处理断处理4、管理模式(、管理模式(svc):当复位或软中断指令执行当复位或软中断指令执行时将会进入这种模式。时将会进入这种模式。 供操作系统使用的一种保护供操作系统使用的一种保护模式模式1.1.2 ARM处理器的工作模式处理器的工作模式(2) 5、中止模式(、中止模式(abt):):当存取异常时将会进入这当存取异常时将会进入这种模式种模式虚拟存储及存储保护虚拟存储及存储保护 6、未定义模式(、未定义模式(und):):当执行未定义指令时会当执行未定义指令时会进入这种模式进入这种模式软件仿真硬件协

7、处理器软件仿真硬件协处理器 7、系统模式(、系统模式(sys):):供需要访问系统资源的操供需要访问系统资源的操作系统任务使用作系统任务使用特权级的操作系统任务特权级的操作系统任务1.1.2 ARM处理器的工作模式处理器的工作模式(2)二、模式分类及特点二、模式分类及特点 七种模式可以划分成四类七种模式可以划分成四类 1、用户模式特点:、用户模式特点: 应用程序不能够访问受操作系统保护的系统资源。应用程序不能够访问受操作系统保护的系统资源。 应用程序不能进行处理器模式的切换。应用程序不能进行处理器模式的切换。 2、系统模式特点:、系统模式特点: 不属于异常模式,不是通过异常进入的。系统模式属于

8、不属于异常模式,不是通过异常进入的。系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行模特权模式,可以访问所有的系统资源,也可以直接进行模式的切换。它主要供操作系统使用。式的切换。它主要供操作系统使用。 3、特权模式及其特点:、特权模式及其特点:特权模式:特权模式:除用户模式之外的工作模式又称为特权模式除用户模式之外的工作模式又称为特权模式特点:特点:应用程序可以访问所有的系统资源应用程序可以访问所有的系统资源可以任意地进行处理器模式的切换可以任意地进行处理器模式的切换1.1.2 ARM处理器的工作模式处理器的工作模式(3)4、异常模式及其特点:、异常模式及其特点: 异常模式:异常模

9、式:除用户模式、系统模式之除用户模式、系统模式之外的五种模式称为异常模式。外的五种模式称为异常模式。特点:以各自的中断或异常方式进入,特点:以各自的中断或异常方式进入,并且处理各自的中断或异常。对管理模式并且处理各自的中断或异常。对管理模式 (svc)进入方式和处理内容有进入方式和处理内容有: 系统上电复位后进入管理模式,运行系统初始化系统上电复位后进入管理模式,运行系统初始化程序,如中断允许程序,如中断允许/禁止,主时钟设置,禁止,主时钟设置,SDRAM配置,配置,各个功能模块初始化等。各个功能模块初始化等。当执行软件中断指令当执行软件中断指令SWI时,进入管理模式。时,进入管理模式。1.1

10、.2 ARM处理器的工作模式处理器的工作模式(4) 处理器模式的切换方式:处理器模式的切换方式: 软件控制进行切换。软件控制进行切换。 通过外部中断和异常进行切换通过外部中断和异常进行切换处理器启动时的模式转换图处理器启动时的模式转换图管理模式管理模式(Supervisor)多种特权多种特权模式变化模式变化用户程序的用户程序的运行模式运行模式复位后的缺复位后的缺省模式省模式主要完成各模式的主要完成各模式的堆栈设置,注意不堆栈设置,注意不要进入用户模式要进入用户模式一般为用户模式一般为用户模式User1.2 ARM9寄存器寄存器本节主要内容本节主要内容1、ARM寄存器概述寄存器概述2、ARM通用

11、寄存器通用寄存器3、ARM状态寄存器状态寄存器1.2 ARM9寄存器寄存器1.2.1、ARM寄存器概述寄存器概述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_fiq-R14_fiq 6 个状态寄存器个状态寄存器CPSRSPSR_svc、SPSR_abt、SPSR_und、SPSR_irq和和SPSR_fiq1.

12、2 ARM9寄存器寄存器(2) 每一类处理器模每一类处理器模式都有一组相应的式都有一组相应的寄存器组;寄存器组; 在任意的处理器在任意的处理器模式下,可见的寄模式下,可见的寄存器包括存器包括1515个通用个通用寄存器(寄存器(R0R0R14R14)、)、1 1个或个或2 2个个状态寄存器和程序状态寄存器和程序寄存器。寄存器。 带灰色底纹的单带灰色底纹的单元格表示,用户模元格表示,用户模式或系统模式使用式或系统模式使用的一般寄存器,已的一般寄存器,已被异常模式特定的被异常模式特定的另一寄存器所替代。另一寄存器所替代。1.2 ARM寄存器寄存器(4)1.2.2 ARM的通用寄存器的通用寄存器 通用

13、寄存器包括通用寄存器包括R0R15,可以分为三类:,可以分为三类: 未分组寄存器未分组寄存器R0R7 分组寄存器分组寄存器R8R14 程序计数器程序计数器PC(R15) 一、未分组寄存器一、未分组寄存器R0R7在所有的运行模式下,未分组寄存器都指向同一个物在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途,理寄存器,他们未被系统用作特殊的用途,是真正的通用是真正的通用寄存器寄存器。因此,在中断或异常处理进行运行模式转换时,由于因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会不同的处理器运行模式均使用相同的物理寄存器

14、,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。起注意。1.2 ARM寄存器寄存器(5)二、分组的寄存器二、分组的寄存器R8R14 对于对于R8R12,每一次所访问的物理寄存器,与处理,每一次所访问的物理寄存器,与处理器当前的工作模式有关。器当前的工作模式有关。1、R8R12当处理器工作于当处理器工作于fiq模式时,访问的寄存器为模式时,访问的寄存器为R8_fiqR12_fiq;除除fiq模式以外的其他模式,访问的寄存器为模式以外的其他模式,访问的寄存器为R8_usrR12_usr。2、R13和和R14:每个寄存器对应每个寄存

15、器对应6个不同的物理寄存器,其中的一个是用户个不同的物理寄存器,其中的一个是用户模式与系统模式共用,另外模式与系统模式共用,另外5个物理寄存器,对应于其他个物理寄存器,对应于其他5种不种不同的异常模式。同的异常模式。采用以下的记号来区分不同的物理寄存器:采用以下的记号来区分不同的物理寄存器: R13_ R14_ 其中,其中,mode为以下几种模式之一:为以下几种模式之一:usr、fiq、irq、svc、abt、und。1.2 ARM寄存器寄存器(6) R13:寄存器寄存器R13在在ARM指令中指令中常用作堆栈指针常用作堆栈指针SP。但这只是一种习惯用法,用户也可使用其他的寄存器但这只是一种习惯

16、用法,用户也可使用其他的寄存器作为堆栈指针。而在作为堆栈指针。而在Thumb指令集中,某些指令强制性的指令集中,某些指令强制性的要求使用要求使用R13作为堆栈指针。作为堆栈指针。 R14:寄存器寄存器R14也称作子程序链接寄存器也称作子程序链接寄存器(Subroutine Link Register)或)或链接寄存器链接寄存器LR。 当执行当执行BL子程序调用指令时,子程序调用指令时,R14中得到中得到R15(程序(程序计数器计数器PC)的备份。其他情况下,)的备份。其他情况下,R14用作通用寄存器。用作通用寄存器。与之类似,当发生中断或异常时,对应的分组寄存器与之类似,当发生中断或异常时,对

17、应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和和R14_und用来用来保存保存R15的返回值。的返回值。1.2 ARM寄存器寄存器(7)三、程序计数器三、程序计数器PC(R15) 寄存器寄存器R15用作程序计数器(用作程序计数器(PC)。在在ARM状态下,位状态下,位1:0为为0,位,位31:2用于保存用于保存PC;在在Thumb状态下,位状态下,位0为为0,位,位31:1用于保存用于保存PC; 使用使用R15时注意:时注意:虽然虽然R15可以用作通用寄存器,可以用作通用寄存器,但是有一些指令在使用但是有一些指令在使用R15时有一些特殊限制,若时有一些特殊限制,

18、若不注意,执行的结果将是不可预料的。所以,一般不注意,执行的结果将是不可预料的。所以,一般不这么使用。不这么使用。 关于关于PC的值:的值:由于由于ARM采用多级流水线技术,采用多级流水线技术,所以所以PC总是指向正在取指的指令,而不是正在执总是指向正在取指的指令,而不是正在执行的指令。也即行的指令。也即PC总是指向当前指令的下两条指总是指向当前指令的下两条指令的地址。因此,对于令的地址。因此,对于ARM指令集而言,指令集而言,PC的值的值为当前指令的地址值加为当前指令的地址值加8个字节。个字节。1.2 ARM寄存器寄存器(8)1.2.3 ARM的状态寄存器的状态寄存器一、两种程序状态寄存器一

19、、两种程序状态寄存器在在ARM微处理器中,有微处理器中,有CPSR和和SPSR两种程序状态寄存器。两种程序状态寄存器。1、当前程序状态寄存器、当前程序状态寄存器 CPSR (Current Program Status Register) 用来保存当前程序状态的寄存器。用来保存当前程序状态的寄存器。 所有处理器模式下都可以访问当前程序状态寄存器所有处理器模式下都可以访问当前程序状态寄存器CPSR。仅一个。仅一个CPSR。2、保存程序状态寄存器、保存程序状态寄存器SPSR_mode (Saved Program Status Register)SPSR_mode用来进行异常处理,其功能包括:用来

20、进行异常处理,其功能包括: 保存保存ALU中的当前操作信息中的当前操作信息当异常发生时当异常发生时, 用来保存用来保存CPSR的值,从异常返回时,将的值,从异常返回时,将 SPSR_mode复制到复制到CPSR中,恢复中,恢复CPSR的值。的值。 控制允许和禁止中断控制允许和禁止中断修改修改SPSR的值的值 设置处理器的运行模式设置处理器的运行模式修改修改SPSR的值的值问题:问题:一共有多少个一共有多少个SPSR?为什么?为什么?1.2.3 ARM的状态寄存器的状态寄存器(2)二、二、ARM状态寄存器的格式状态寄存器的格式1、条件码标志位、条件码标志位(保存(保存ALU中的当前操作信息)中的

21、当前操作信息)N:正负号:正负号/大小大小 标志位标志位0表示:正数表示:正数/大于;大于;1表示:负数表示:负数/小于小于Z:零标志位:零标志位0表示:结果不为零;表示:结果不为零;1表示:结果为零表示:结果为零C:进位:进位/借位借位/移出位移出位0表示:未进位表示:未进位/借位借位/移出移出0;1表示:进位表示:进位/未借位未借位/移出移出1V:溢出标志位:溢出标志位0表示:结果未溢出;表示:结果未溢出;1表示:结果溢出表示:结果溢出31 30 29 28 27 876543210NZCV(保留)(保留)IFT M4 M3 M2 M1 M01.2.3 ARM9的状态寄存器的状态寄存器(3

22、)2、控制位、控制位 I、F中断控制位中断控制位控制允许和禁止中断控制允许和禁止中断 I1 禁止禁止IRQ中断中断I0 允许允许IRQ中断中断 F1 禁止禁止FIQ中断中断F0 允许允许FIQ中断中断 T控制控制(标志标志)位位反映处理器的运行状态反映处理器的运行状态 T=1时,程序运行于时,程序运行于Thumb状态状态 T=0时,程序运行于时,程序运行于ARM状态状态 M控制位控制位决定了处理器的运行模式决定了处理器的运行模式 当发生异常时这些位被改变。当发生异常时这些位被改变。 如果处理器运行在特权模式,这些位也可以由如果处理器运行在特权模式,这些位也可以由程序修改。程序修改。M4:010

23、000100011001010011101111101111111模式模式用户用户快中断快中断中断中断管理管理中止中止未定义未定义系统系统1.2.3 ARM9的状态寄存器的状态寄存器(4)3、保留位、保留位 CPSR中的其余位为保留位,当改变中的其余位为保留位,当改变CPSR中中的条件码标志位或者控制位时,保留位不要改变,的条件码标志位或者控制位时,保留位不要改变,在程序中也不要使用保留位来存储数据。保留位将在程序中也不要使用保留位来存储数据。保留位将用于用于ARM版本的扩展。版本的扩展。1.2.4 Thumb状态下的寄存器组织状态下的寄存器组织Thumb状态下的寄存器集是状态下的寄存器集是A

24、RM状态下寄存状态下寄存器集的子集。程序员可以直接访问器集的子集。程序员可以直接访问8个通用的寄存个通用的寄存器(器(R0R7),程序计数器),程序计数器PC、堆栈指针、堆栈指针SP、链、链接寄存器接寄存器LR和当前状态寄存器和当前状态寄存器CPSP。本节主要内容本节主要内容1、中断和异常的概念、中断和异常的概念2、ARM的异常中断介绍的异常中断介绍3、ARM的异常中断响应过程的异常中断响应过程 4、中断向量和中断优先级、中断向量和中断优先级 1.3 ARM异常异常 1.3 ARM异常异常 1.3.1 中断和异常的概念中断和异常的概念 1、中断、中断 当当CPU正在执行程序时,系统发生了一件急

25、正在执行程序时,系统发生了一件急需处理的事件,需处理的事件,CPU暂时停下正在执行的程序,转去处理相暂时停下正在执行的程序,转去处理相应的事件,事件处理完后,应的事件,事件处理完后,CPU再返回执行原来的程序,这再返回执行原来的程序,这种情况称为中断。这是中断的本来意义。种情况称为中断。这是中断的本来意义。 中断事件:中断事件:引起引起CPU产生中断、并且与产生中断、并且与CPU当前所执行当前所执行的程序无关的、由外部硬件产生的事件,也叫中断源。中断的程序无关的、由外部硬件产生的事件,也叫中断源。中断事件也常称为事件也常称为外中断外中断。 常说的中断:常说的中断:有时指的是中断的本意,有时指的

26、是外部有时指的是中断的本意,有时指的是外部中断事件,即外中断。中断事件,即外中断。 中断是计算机系统基本的功能中断是计算机系统基本的功能 利用中断,外设可以与利用中断,外设可以与CPU并行工作,当外设需要传输数据或控制时,向并行工作,当外设需要传输数据或控制时,向CPU发发出中断请求信号。出中断请求信号。CPU响应其请求进行处理。因此,使用中响应其请求进行处理。因此,使用中断既可以实现断既可以实现CPU与外设并行工作,又可以实时处理各种紧与外设并行工作,又可以实时处理各种紧急事件。急事件。1.3 ARM异常异常 2、异常、异常 是指是指CPU在执行指令时出现的错误,即不正常的在执行指令时出现的

27、错误,即不正常的情况。异常是与当前所执行的程序有关的。如存取情况。异常是与当前所执行的程序有关的。如存取数据或指令错误、计算结果溢出等。数据或指令错误、计算结果溢出等。 异常的处理:异常的处理:也用中断的方式进行处理。也用中断的方式进行处理。 计算机通常是用中断来处理外中断和异常,因此计算机通常是用中断来处理外中断和异常,因此下面将二者均称为异常。下面将二者均称为异常。 3、ARM程序的三种执行流程程序的三种执行流程 顺序流程:顺序流程:每执行一条每执行一条ARM指令,程序计数器指令,程序计数器 (PC)的值加)的值加4;每执行一条;每执行一条Thumb指令,程序计指令,程序计数器寄存器(数器

28、寄存器(PC)的值加)的值加2,整个过程是按顺序执,整个过程是按顺序执行。行。 对异常的说明对异常的说明当系统运行时,异常可能会随时发生,为当系统运行时,异常可能会随时发生,为保证在保证在ARMARM处理器发生异常时不至于处于未知处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异状态,在应用程序的设计中,首先要进行异常处理,采用的方式是在异常向量表中的特常处理,采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理定位置放置一条跳转指令,跳转到异常处理程序,当程序,当ARMARM处理器发生异常时,程序计数器处理器发生异常时,程序计数器PCPC会被强制设置为对应的

29、异常向量,从而跳会被强制设置为对应的异常向量,从而跳转到异常处理程序,当异常处理完成以后,转到异常处理程序,当异常处理完成以后,返回到主程序继续执行。返回到主程序继续执行。我们需要处理所有的异常,尽管我们可以我们需要处理所有的异常,尽管我们可以简单的在某些异常处理程序处放置死循环。简单的在某些异常处理程序处放置死循环。1.3 ARM异常异常 1.3 ARM异常异常 跳转流程:跳转流程:程序执行了跳转指令,则要跳转到特程序执行了跳转指令,则要跳转到特定的地址标号处执行,包括跳转到子程序。例如,定的地址标号处执行,包括跳转到子程序。例如,跳转指令,跳转指令,B、BL、BLX和和BX。 中断流程:中

30、断流程:当异常中断发生时,系统执行完当前当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。指令后,将跳转到相应的异常中断处理程序处执行。在当异常中断处理程序执行完成后,程序返回到发在当异常中断处理程序执行完成后,程序返回到发生中断的指令的下条指令处执行。生中断的指令的下条指令处执行。 在进行异常中断处理程序时,要保存被中断的程序的执在进行异常中断处理程序时,要保存被中断的程序的执行现场,在从异常中断处理程序退出时,要恢复被中断的程行现场,在从异常中断处理程序退出时,要恢复被中断的程序的执行现场。序的执行现场。 中断处理与子程序调用的区别:中断处理与子程序调用的区别:

31、中断是随机的,并且与中断是随机的,并且与正在执行的程序无关;子程序调用是程序的主动行为,并且正在执行的程序无关;子程序调用是程序的主动行为,并且与正在执行的程序密切相关。与正在执行的程序密切相关。1.3.2 ARM的异常的异常 ARM有有7种异常种异常1、复位、复位 处理器上一旦有复位输入,处理器上一旦有复位输入,ARM处理器立刻停止执处理器立刻停止执行当前指令。复位后,行当前指令。复位后,ARM处理器在禁止中断的管理模处理器在禁止中断的管理模式下,从地址式下,从地址0 x00000000或或0 xFFFF0000开始执行指令。开始执行指令。2、未定义指令异常、未定义指令异常 当当ARM处理器

32、执行处理器执行协处理器指令协处理器指令时,它必须等待任时,它必须等待任一外部协处理器应答后,才能真正执行这条指令。若协一外部协处理器应答后,才能真正执行这条指令。若协处理器没有响应,就会出现未定义指令异常。处理器没有响应,就会出现未定义指令异常。 未定义指令异常可用于在没有物理协处理器(硬件)未定义指令异常可用于在没有物理协处理器(硬件)的系统上,对协处理器进行软件仿真,或在软件仿真时的系统上,对协处理器进行软件仿真,或在软件仿真时进行指令扩展。进行指令扩展。1.3 ARM异常异常 3、软件中断异常、软件中断异常 该异常由执行该异常由执行SWI指令产生,可使用此机制进行软指令产生,可使用此机制

33、进行软件仿真。件仿真。4、预取中止(取指令存储器中止)、预取中止(取指令存储器中止) 若处理器预取指令的地址不存在,或该地址不允许若处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号,但当前指令访问,存储器会向处理器发出中止信号,但当预取的指令被执行时,才会产生指令预取中止异常。当预取的指令被执行时,才会产生指令预取中止异常。5、数据中止(访问数据存储器中止)、数据中止(访问数据存储器中止) 若处理器数据访问指令的地址不存在,或该地址不若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常。允许当前指令访问时,产生数据中止异常。1.3

34、 ARM异常异常 6、IRQ异常异常 当处理器的外部中断请求引脚有效,且当处理器的外部中断请求引脚有效,且CPSR中的中的I=0,产生,产生IRQ异常。异常。 系统的外设可通过该异常请求中断服务。系统的外设可通过该异常请求中断服务。7、FIQ异常异常 当处理器的外部中断请求引脚有效,且当处理器的外部中断请求引脚有效,且CPSR中的中的F=0,产生,产生FIQ异常。异常。 FIQ支持数据传送和通道处理,并有足够的支持数据传送和通道处理,并有足够的私有寄存器,从而在应用中可避免对寄存器保私有寄存器,从而在应用中可避免对寄存器保存的需求,减少了开销。存的需求,减少了开销。1.3 ARM异常异常 1.

35、3.3 ARM异常中断响应过程异常中断响应过程 一、进入异常一、进入异常 当发生异常时,除了复位异常立即中止当前指令外,处理当发生异常时,除了复位异常立即中止当前指令外,处理器尽量完成当前指令,然后脱离当前的程序去处理异常。器尽量完成当前指令,然后脱离当前的程序去处理异常。ARM处理器对异常中断的响应过程如下处理器对异常中断的响应过程如下 : 1、保存返回地址、保存返回地址 将引起异常指令的下一条指令的地址保存到新的异常模式将引起异常指令的下一条指令的地址保存到新的异常模式x下的下的R14,即,即R14-中,使异常处理程序执行完后能中,使异常处理程序执行完后能正确返回原程序。正确返回原程序。

36、2、保存当前状态寄存器、保存当前状态寄存器CPSR的内容的内容 将将CPSR的内容保存到将要执行的异常中断对应的的内容保存到将要执行的异常中断对应的SPSR中,中,便于中断返回时恢复处理器当前的状态位、中断屏蔽位以及便于中断返回时恢复处理器当前的状态位、中断屏蔽位以及各条件标志位。各条件标志位。1.3 ARM异常异常 3、设置当前状态寄存器、设置当前状态寄存器CPSR中的相应位中的相应位设置设置CPSR模式控制位模式控制位CPSR4:0,使处理器进,使处理器进入相应的执行模式;入相应的执行模式;设置中断标志位设置中断标志位(CPSR6=1),禁止),禁止IRQ中断;中断;设置中断标志位设置中断

37、标志位(CPSR7=1)禁止)禁止FIQ中断,中断,当进入当进入Reset或或FIQ模式时。模式时。 4、转去执行中断处理程序、转去执行中断处理程序 取相应的中断向量给程序计数器取相应的中断向量给程序计数器PC,使程序开始,使程序开始执行中断处理程序。执行中断处理程序。 一般地说,矢量地址处将包含一条指向相应程序的转一般地说,矢量地址处将包含一条指向相应程序的转移指令,从而可跳转到相应的异常中断处理程序处执行异移指令,从而可跳转到相应的异常中断处理程序处执行异常中断处理程序常中断处理程序 。1.3 ARM异常异常1.3 ARM异常异常 ARM处理器对异常的响应过程可以用伪代处理器对异常的响应过

38、程可以用伪代码描述如下码描述如下 : R14_=return link SPSR_=CPSR CPSR4:0=exception mode number CPSR5=0 /*当运行于当运行于ARM状态时状态时*/ CPSR6=1 /*禁止新的禁止新的IRQ中断中断*/if =Reset or FIQ then CPSR7=1 /*当当Reset 或或FIQ异常中断时异常中断时*/*禁止新禁止新 的的FIQ中断中断*/ PC=exception vector address 注意使用异常模式下的特有寄存器注意使用异常模式下的特有寄存器F 每个异常模式对应有两个寄存器每个异常模式对应有两个寄存器R

39、13_、R14_分别保存相分别保存相应模式下的堆栈指针、返回地址;堆栈指应模式下的堆栈指针、返回地址;堆栈指针可用来定义一个存储区域保存其它用户针可用来定义一个存储区域保存其它用户寄存器,在程序初始化时应该对各种模式寄存器,在程序初始化时应该对各种模式堆栈设置,便于随时使用。堆栈设置,便于随时使用。F FIQ模式还有额外的专用寄存器模式还有额外的专用寄存器R8_fiqR12_fiq,使用这些寄存器可以,使用这些寄存器可以加快快速中断的处理速度。加快快速中断的处理速度。 1.3 ARM异常异常二、异常返回二、异常返回 1、异常返回应执行的操作、异常返回应执行的操作 异常处理完毕之后,异常处理完毕

40、之后,ARM微处理器会执行以微处理器会执行以下几步操作从异常返回:下几步操作从异常返回: 将返回地址装入将返回地址装入PC 把连接寄存器把连接寄存器LR的值减的值减去相应的偏移量,然后送到去相应的偏移量,然后送到PC中。中。 恢复恢复CPSR的值的值 将将SPSR复制回复制回CPSR中。中。 清除中断屏蔽位清除中断屏蔽位 若在进入异常处理时设置了若在进入异常处理时设置了中断禁止位,要在此清除。中断禁止位,要在此清除。 可以认为应用程序总是从复位异常处理程序开始执行可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。的,因此复位异常处理程序不需要返回。1.3 ARM

41、异常异常2、各种异常返回方法、各种异常返回方法 FIQ中断返回中断返回不管是在不管是在ARM状态还是在状态还是在Thumb状态下进入状态下进入FIQ模式,模式,FIQ处理程序均可以执行以下指令从处理程序均可以执行以下指令从FIQ模式返回:模式返回:SUBS PC,R14-fiq ,#4 指令预取中止(指令预取中止( Abort )异常返回)异常返回当指令预取访问存储器失败时,存储器系统向当指令预取访问存储器失败时,存储器系统向ARM处理处理器发出存储器中止(器发出存储器中止(Abort)信号,预取的指令被记为无效,)信号,预取的指令被记为无效,但只有当处理器试图执行无效指令时,指令预取中止异常

42、才但只有当处理器试图执行无效指令时,指令预取中止异常才会发生,如果指令未被执行,例如在指令流水线中发生了跳会发生,如果指令未被执行,例如在指令流水线中发生了跳转,则预取指令中止不会发生。转,则预取指令中止不会发生。如果发生了如果发生了指令指令预取中止异常,预取中止异常,无论是在无论是在ARM状态还是状态还是Thumb状态,其返回指令为:状态,其返回指令为:SUBS PC, R14_abt, #4;重新执行被中止的指令;重新执行被中止的指令1.3 ARM异常异常数据中止(数据中止( Abort )异常返回)异常返回如果发生了如果发生了数据数据中止异常,中止异常,无论是在无论是在ARM状状态还是态

43、还是Thumb状态,其返回指令为:状态,其返回指令为:SUBS PC, R14_abt, #8重新执行被中止的指令重新执行被中止的指令软件中断指令(软件中断指令(SWI)异常返回)异常返回 用于进入管理模式,常用于请求执行特定的管理用于进入管理模式,常用于请求执行特定的管理功能。软件中断处理程序执行以下指令可以从功能。软件中断处理程序执行以下指令可以从SWI模式返回,无论是在模式返回,无论是在ARM状态还是状态还是Thumb状态:状态:MOVS PC , R14_svc 以上指令恢复以上指令恢复PC(从(从R14_svc)和)和CPSR(从(从SPSR_svc)的值,并返回到)的值,并返回到SWI的下一条指令。的下一条指令。1.3 ARM异常异常 未定义指令异常返回未定义指令异常返回 当当ARM处理器遇到不能处理的指令时,会处理器遇到不能处理的指令

温馨提示

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

评论

0/150

提交评论