ARM处理器的工作模式解析课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《ARM处理器的工作模式解析课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 处理器 工作 模式 解析 课件
- 资源描述:
-
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状态。状态。(2)当处理器
4、在)当处理器在Thumb状态时发生异常(如状态时发生异常(如IRQ、FIQ、Undef等),则处理器从等),则处理器从Thumb状态自动切换到状态自动切换到ARM状态状态进行异常处理进行异常处理1.1 ARM处理器的工作状态和模式处理器的工作状态和模式(3)例例1.1 状态切换程序状态切换程序;从从ARM状态切换到状态切换到Thumb状态状态LDRR0,=Lable+1BXR0;从从Thumb状态切换到状态切换到ARM状态状态LDRR0,=LableBXR0注意:注意:ARM和和Thumb之间状态的切换不影响处理器的之间状态的切换不影响处理器的模式或寄存器的内容。模式或寄存器的内容。ARM处理
5、器在开始执行代码时,只能处于处理器在开始执行代码时,只能处于ARM状态。状态。1.1.2 ARM处理器的工作模式处理器的工作模式一、一、ARM9的的7种工作模式种工作模式 1、用户模式(、用户模式(usr):非特权模式,大部分任务非特权模式,大部分任务执行在这种模式。执行在这种模式。正常程序执行的模式正常程序执行的模式2、快速中断模式(、快速中断模式(fiq):):当一个高优先级当一个高优先级(fast)中断产生时将会进入这种模式。中断产生时将会进入这种模式。高速数据传输或通高速数据传输或通道处理道处理3、外部中断模式(、外部中断模式(irq):):当一个低优先级当一个低优先级(normal)
6、中断产生时将会进入这种模式。中断产生时将会进入这种模式。通常的中通常的中断处理断处理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.2 ARM处理器的工作模式处理器的工作模式
10、(4)处理器模式的切换方式:处理器模式的切换方式:软件控制进行切换。软件控制进行切换。通过外部中断和异常进行切换通过外部中断和异常进行切换处理器启动时的模式转换图处理器启动时的模式转换图管理模式管理模式(Supervisor)多种特权多种特权模式变化模式变化用户程序的用户程序的运行模式运行模式复位后的缺复位后的缺省模式省模式主要完成各模式的主要完成各模式的堆栈设置,注意不堆栈设置,注意不要进入用户模式要进入用户模式一般为用户模式一般为用户模式User1.2 ARM9寄存器寄存器本节主要内容本节主要内容1、ARM寄存器概述寄存器概述2、ARM通用寄存器通用寄存器3、ARM状态寄存器状态寄存器1.
11、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.2 ARM9寄存器寄存器(2)每一类处理器模每一类处
12、理器模式都有一组相应的式都有一组相应的寄存器组;寄存器组;在任意的处理器在任意的处理器模式下,可见的寄模式下,可见的寄存器包括存器包括1515个通用个通用寄存器(寄存器(R0R0R14R14)、)、1 1个或个或2 2个个状态寄存器和程序状态寄存器和程序寄存器。寄存器。带灰色底纹的单带灰色底纹的单元格表示,用户模元格表示,用户模式或系统模式使用式或系统模式使用的一般寄存器,已的一般寄存器,已被异常模式特定的被异常模式特定的另一寄存器所替代。另一寄存器所替代。1.2 ARM寄存器寄存器(4)1.2.2 ARM的通用寄存器的通用寄存器 通用寄存器包括通用寄存器包括R0R15,可以分为三类:,可以分
13、为三类:未分组寄存器未分组寄存器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:每个寄存器对应每个寄存器对应6个不同的物理寄存器,其中的一个是用户个不同的物理寄存器
15、,其中的一个是用户模式与系统模式共用,另外模式与系统模式共用,另外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用作通用寄存器。用作通用寄存器。与之类似,当发生中断或异常时,对应的分组寄存器与之类似,当发生中断或异常时,对应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_
17、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的状态寄存器的状态寄存器一、两种程序状态寄存器一、两种程序状态寄存器在在ARM微处理器中,有微处理器中,有CPSR和和SPS
19、R两种程序状态寄存器。两种程序状态寄存器。1、当前程序状态寄存器、当前程序状态寄存器 CPSR(Current Program Status Register)用来保存当前程序状态的寄存器。用来保存当前程序状态的寄存器。所有处理器模式下都可以访问当前程序状态寄存器所有处理器模式下都可以访问当前程序状态寄存器CPSR。仅一个。仅一个CPSR。2、保存程序状态寄存器、保存程序状态寄存器SPSR_mode(Saved Program Status Register)SPSR_mode用来进行异常处理,其功能包括:用来进行异常处理,其功能包括:保存保存ALU中的当前操作信息中的当前操作信息当异常发生时
20、当异常发生时,用来保存用来保存CPSR的值,从异常返回时,将的值,从异常返回时,将 SPSR_mode复制到复制到CPSR中,恢复中,恢复CPSR的值。的值。控制允许和禁止中断控制允许和禁止中断修改修改SPSR的值的值 设置处理器的运行模式设置处理器的运行模式修改修改SPSR的值的值问题:问题:一共有多少个一共有多少个SPSR?为什么?为什么?1.2.3 ARM的状态寄存器的状态寄存器(2)二、二、ARM状态寄存器的格式状态寄存器的格式1、条件码标志位、条件码标志位(保存(保存ALU中的当前操作信息)中的当前操作信息)N:正负号:正负号/大小大小 标志位标志位0表示:正数表示:正数/大于;大于
21、;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)2、控制位、控制位 I、F中断控制位中断控制位控制允许和禁止中断控制允许和禁止中断 I1
22、 禁止禁止IRQ中断中断I0 允许允许IRQ中断中断 F1 禁止禁止FIQ中断中断F0 允许允许FIQ中断中断 T控制控制(标志标志)位位反映处理器的运行状态反映处理器的运行状态 T=1时,程序运行于时,程序运行于Thumb状态状态 T=0时,程序运行于时,程序运行于ARM状态状态 M控制位控制位决定了处理器的运行模式决定了处理器的运行模式 当发生异常时这些位被改变。当发生异常时这些位被改变。如果处理器运行在特权模式,这些位也可以由如果处理器运行在特权模式,这些位也可以由程序修改。程序修改。M4:010000100011001010011101111101111111模式模式用户用户快中断快中
23、断中断中断管理管理中止中止未定义未定义系统系统1.2.3 ARM9的状态寄存器的状态寄存器(4)3、保留位、保留位 CPSR中的其余位为保留位,当改变中的其余位为保留位,当改变CPSR中中的条件码标志位或者控制位时,保留位不要改变,的条件码标志位或者控制位时,保留位不要改变,在程序中也不要使用保留位来存储数据。保留位将在程序中也不要使用保留位来存储数据。保留位将用于用于ARM版本的扩展。版本的扩展。1.2.4 Thumb状态下的寄存器组织状态下的寄存器组织Thumb状态下的寄存器集是状态下的寄存器集是ARM状态下寄存状态下寄存器集的子集。程序员可以直接访问器集的子集。程序员可以直接访问8个通用
展开阅读全文