《arm嵌入式原理技术及应用ch2ppt课件》由会员分享,可在线阅读,更多相关《arm嵌入式原理技术及应用ch2ppt课件(130页珍藏版)》请在金锄头文库上搜索。
1、 2021.12 陈陈 赜赜ARMARM嵌入式技术原理与应用嵌入式技术原理与应用 clshust163 13135699803clshust163 13135699803 第二章 ARM体系结构及编程模型 了解了解ARM技术的应用领域技术的应用领域 熟悉熟悉ARM微处理器系列的基本类型和主要特微处理器系列的基本类型和主要特点点 理解理解ARM微处理器的工作状态和工作模式微处理器的工作状态和工作模式 掌握掌握ARM微处理器的存储器系统和寄存器组微处理器的存储器系统和寄存器组织以及异常中断的应用。织以及异常中断的应用。 2.1 ARM2.1 ARM微处理器的特点微处理器的特点 ARMAdvance
2、d RISC Machines,ARM既可以认为是一个公司的名字,也可以认为是既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术对一类微处理器的通称,还可以认为是一种技术的名字。的名字。 ARM公司于公司于1990年年11月在英国剑桥成立,前月在英国剑桥成立,前身为身为Acorn计算机公司。计算机公司。 ARM公司是全球领先的公司是全球领先的16/32位嵌入式位嵌入式RISC微微处理器解决方案供应商。处理器解决方案供应商。 ARM公司是知识产权公司是知识产权IP公司,本身不生产公司,本身不生产芯片,靠转让设计许可,由合作伙伴公司来生产各芯片,靠转让设计许可,由合
3、作伙伴公司来生产各具特色的芯片。具特色的芯片。 目前,全世界有几十家著名的半导体公司都使目前,全世界有几十家著名的半导体公司都使用用ARM公司的授权,其中包括公司的授权,其中包括MOTOROLA、IBM、Intel、 LG、 SONY、NEC、ATMEL等,从而保等,从而保证了大量的开发工具和丰富的第三方资源,它们共证了大量的开发工具和丰富的第三方资源,它们共同保证了基于同保证了基于ARM处理器核的设计可以很快投入处理器核的设计可以很快投入市场。市场。 ARM公司已成为移动通信、手持设备、多媒体公司已成为移动通信、手持设备、多媒体数字消费嵌入式解决方案的数字消费嵌入式解决方案的RISC标准。标
4、准。采用采用RISCRISC指令集指令集q低功耗、低成本、高性能低功耗、低成本、高性能使用大量的寄存器使用大量的寄存器ARM/THUMBARM/THUMB指令支持指令支持三三/ /五级流水线五级流水线ARM微处理器特点微处理器特点:q采用采用RISCRISC架构的架构的ARMARM处理器一般具有如下特点:处理器一般具有如下特点:固定长度的指令格式,指令归整、简单、基固定长度的指令格式,指令归整、简单、基 本寻本寻址方式有址方式有2 23 3种;种;使用单周期指令,便于流水线操作执行;使用单周期指令,便于流水线操作执行;大量使用寄存器,数据处理指令只对寄存器进行大量使用寄存器,数据处理指令只对寄
5、存器进行操作,只有加载操作,只有加载/ /存储指令可以访问存储器,以提高存储指令可以访问存储器,以提高指令的执行效率。指令的执行效率。qARM ARM 处理器共有处理器共有3737个寄存器,被分为若干个组,这些寄个寄存器,被分为若干个组,这些寄存器包括:存器包括:3131个通用寄存器,包括程序计数器个通用寄存器,包括程序计数器PC PC 指针),指针),均为均为3232位的寄存器;位的寄存器;6 6个状态寄存器,用以标识个状态寄存器,用以标识CPUCPU的工作状态及程序的工作状态及程序的运行状态,均为的运行状态,均为3232位。位。qARM微处理器支持两种指令集微处理器支持两种指令集 qARM
6、指令集和指令集和Thumb指令集指令集 qARM指令为指令为32位的长度,位的长度,Thumb指令为指令为16位长位长度度q Thumb指令集为指令集为ARM指令集的功能子集,但与指令集的功能子集,但与等价的等价的ARM代码相比较,可节省代码相比较,可节省3040以上的以上的存储空间,同时具备存储空间,同时具备32位代码的所有优点。位代码的所有优点。q除此以外,除此以外,ARMARM体系结构还采用了一些特别的技体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗。并降低功耗。 q所有的指令都可根据前面的执行结果决定是否所
7、有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。被执行,从而提高指令的执行效率。q可用加载可用加载/ /存储指令批量传输数据,以提高数据存储指令批量传输数据,以提高数据的传输效率。的传输效率。q可在一条数据处理指令中同时完成逻辑处理和移可在一条数据处理指令中同时完成逻辑处理和移位处理。位处理。q在循环处理中使用地址的自动增减来提高运行在循环处理中使用地址的自动增减来提高运行效率。效率。2.2 ARM2.2 ARM微处理器系列介绍微处理器系列介绍1 .ARM7系列系列 ARM7采用冯采用冯诺依曼诺依曼Von-Neumann)构造,数构造,数据存储器和程序存储器使用同一存储空
8、间,用相同的据存储器和程序存储器使用同一存储空间,用相同的指令访问指令访问 。此结构也被大多数计算机所采用。此结构也被大多数计算机所采用。 ARM7为三级流水线结构取指,译码,执行),为三级流水线结构取指,译码,执行), 平均功耗为平均功耗为0.6mW/MHz,时钟速度为,时钟速度为66MHz,每条指,每条指令平均执行令平均执行1.9个时钟周期。个时钟周期。 ARM7ARM7系列微处理器包括如下几种类型的核:系列微处理器包括如下几种类型的核:ARM7TDMIARM7TDMI、ARM7TDMI-SARM7TDMI-S、 ARM720T ARM720T、ARM7EJARM7EJ。ARM7TMDIA
9、RM7TMDI是目前使用最广泛的是目前使用最广泛的3232位嵌入式位嵌入式RISCRISC处理器,属低端处理器,属低端ARMARM处理器核。处理器核。TDMITDMI的基本含义为对其它系列也适用):的基本含义为对其它系列也适用): T T: 支持支持1616为压缩指令集为压缩指令集ThumbThumb,称为,称为T T变种变种D D: 支持片上支持片上DebugDebug,称为,称为D D变种变种M M:内嵌硬件乘法器:内嵌硬件乘法器 Multiplier Multiplier,称为,称为M M变种变种I I: 嵌入式嵌入式ICEICE,支持片上断点和调试,称为,支持片上断点和调试,称为I I
10、变种变种表表2-1 ARM7系列产品系列产品2. ARM9系列系列ARM7采用的冯采用的冯诺依曼诺依曼 Von Neumann结构,取指结构,取指令和取操作数都是通过一条总线分时进行,这样,令和取操作数都是通过一条总线分时进行,这样,在高速运算时,不但不能同时取指令和取操作数,在高速运算时,不但不能同时取指令和取操作数,而且还会造成传输通道上的瓶颈现象。而且还会造成传输通道上的瓶颈现象。ARM9采用哈佛采用哈佛Harvard)构造,程序存储器与数据构造,程序存储器与数据存储器分开,提供了较大的存储器带宽。同时,大存储器分开,提供了较大的存储器带宽。同时,大多数多数DSP都采用此结构。都采用此结
11、构。 ARM9为五级流水取指,译码,执行,缓冲为五级流水取指,译码,执行,缓冲/数据,数据,回写),平均功耗为回写),平均功耗为0.7mW/MHz。时钟速度为。时钟速度为120MHz-200MHz,每条指令平均执行,每条指令平均执行1.5个时钟个时钟周期。周期。ARM9系列微处理器包含系列微处理器包含ARM920T、ARM922T和和ARM940T三种类型,主要应用在手持产品、视频三种类型,主要应用在手持产品、视频电话、电话、PDA、数字消费产品、机顶盒、家用网关、数字消费产品、机顶盒、家用网关等方面。等方面。表表2-2 ARM9系列产品系列产品3. ARM9E系列系列 ARM9E系列微处理器
12、包括如下系列微处理器包括如下4种种类型的核:类型的核:ARM926EJ-S、ARM946E-S和和ARM966E-S,见表,见表2-3。 表表2-3 ARM9E系列产品系列产品 ARM9E系列是一种包含有微控制器、系列是一种包含有微控制器、DSP、Java功能的综合处理器,强化了数字信号处理能力,功能的综合处理器,强化了数字信号处理能力,适用于需要适用于需要DSP和微控制器结合使用的情况,并且和微控制器结合使用的情况,并且把把Thumb技术和技术和DSP都扩展到了都扩展到了ARM指令中,并指令中,并且具有且具有EmbededICE-RT逻辑,更好地适应了实时逻辑,更好地适应了实时系统开发的需要
13、。同时系统开发的需要。同时ARM9E使用了使用了Jazelle增强增强技术,该技术支持一种新的技术,该技术支持一种新的Java操作状态,在硬件操作状态,在硬件中执行中执行Java字节码。字节码。4. ARM10系列系列 ARM10系列微处理器包括:系列微处理器包括:ARM1020E和和ARM1022E等型号,见表等型号,见表2-4。 ARM10系列采用了新的体系结构,其系列采用了新的体系结构,其核心为使用了向量浮点单元,有强大的浮点核心为使用了向量浮点单元,有强大的浮点运算能力,并且增加了运算能力,并且增加了Cache容量和总线宽容量和总线宽度,并且具有低功耗的特点。度,并且具有低功耗的特点。
14、 ARM10系列系列微处理器主要应用于下一代无线设备、视频微处理器主要应用于下一代无线设备、视频消费品等。消费品等。 表表2-4 ARM10系列产品系列产品5. ARMStrong/Xscale系列系列 StrongARM是采用是采用ARM体系结构高度集成的体系结构高度集成的32位位RISC微处理器。它融合了微处理器。它融合了Intrl公司的设计技术,公司的设计技术,以及以及ARM体系结构的电源效率,其体系结构在软件体系结构的电源效率,其体系结构在软件上兼容上兼容ARMv4,同时又具有,同时又具有Intel技术优点。技术优点。 StrongARM是是Intrl公司公司为手持消手持消费类电子和移
15、子和移动计算与通信算与通信设备生生产的嵌的嵌入式入式处理器。采用理器。采用StrongARM架构的架构的处理器有:理器有:SA-1、SA-110、SA-1100、SA1110和和IXP1200。 Xscale是基于是基于ARMv5体系体系结构的构的解决方案,是一款性能全、性价比高、解决方案,是一款性能全、性价比高、功耗低的功耗低的处理器,支持理器,支持16位的位的Thumb和和DSP指令集,主要指令集,主要应用于数字移用于数字移动电话、个人数字助理和网个人数字助理和网络产品等。品等。 Xscale架架构的构的处理器有:理器有:PXA250、PXA255和和PXA270等。等。 6. ARM11
16、系列系列 ARM11系列微处理器内核最新系列微处理器内核最新内核:内核:ARM1156T2-S内核、内核、ARM1156T2F-S内核、内核、ARM1176JZ-S内核和内核和ARM11JZF-S内核。内核。 7. SecurCore系列系列 SecurCore系列微处理器除了具系列微处理器除了具有有ARM体系结构各种主要特点外,还体系结构各种主要特点外,还在系统安全方面具有如下的特点:在系统安全方面具有如下的特点: (1) 带有灵活的保护单元,确保操作系带有灵活的保护单元,确保操作系统和应用数据的安全;统和应用数据的安全; (2) 采用软内核技术,防止外部对其采用软内核技术,防止外部对其进行
17、扫描探测;进行扫描探测; (3) 可集成用户自己的安全特性和其可集成用户自己的安全特性和其他协处理器。他协处理器。 8.ARM Cortex 系列系列 ARM Cortex发布于布于2019年,年,ARM Cortex系系列的三款列的三款产品全都集成了品全都集成了Thumb-2 指令集,可指令集,可满足各种不同的日益增足各种不同的日益增长的市的市场需求。需求。ARM Cortex系列的三款系列的三款处理器:理器: 1ARM Cortex-A 系列系列:针对复复杂操作系操作系统以及用以及用户应用用设计的的应用用处理器;理器; 2ARM Cortex-R系列系列:实时系系统专用嵌入式用嵌入式处理理
18、器;器; 3ARM Cortex-M系列系列:针对微控制器和低成本微控制器和低成本应用用专门优化的深嵌入式化的深嵌入式处理器。理器。 9 .基于基于32位位ARM核微处理器核微处理器基于基于32位位ARM核微处理器的主要公司有:核微处理器的主要公司有:1ST意法半导体公司意法半导体公司32位位ARM核微处理器。主核微处理器。主要有:要有:STR7、STR9和和STM32系列。系列。2) Freescale公司公司32位微控制器与处理器,主要是位微控制器与处理器,主要是MCF52xx系列。系列。3) OKI公司公司 32位位ARM7DMI核微处理器,主要是核微处理器,主要是ML67xx系列。系列
19、。4) ATMEL 公司微控制器,主要是公司微控制器,主要是AT91FR、AT91M、AT91RM、AT91SAM等系列。等系列。 5) PHILIPS飞利浦飞利浦/ NXP恩智浦恩智浦 ARM单片机,主要是单片机,主要是LPC21xx, LPC22xx等系列。等系列。6) Intel 公司的公司的Strong ARM 系列和系列和XScale 系列。系列。 7)SamSung 公司的公司的ARM系列系列,主要有主要有S3C44B0X、S3C2410X、S3C2440X 、S3C5410X等系列。等系列。 8) TI公司的公司的ARM 处理器主要是处理器主要是OMAP、C5470/C5471等
20、系列。等系列。9) Cirrus Logic公司的公司的ARM 处理器系列,主要是处理器系列,主要是EP9xxx等系列。等系列。 ARM系列产品命名规则系列产品命名规则ARM 926EJ-SARM 926EJ-SFamily number 7: ARM7 9: ARM910: ARM1011: ARM11Memory system 2: Cache, MMU, Process ID 4: Cache, MPU 6: Write buffer, no cacheMemory size 0: Cache size (4-128KB) 2: Reduced cache size 6: TCMSynt
21、hesizableExtensions E: DSP extension J: Jazelle extension T: Thumb support1. ARM体系结构的特点体系结构的特点总体思想总体思想 在不牺牲性能的同时,尽量简化处理器。在不牺牲性能的同时,尽量简化处理器。同时从体系结构的层面上灵活支持处理器扩展。同时从体系结构的层面上灵活支持处理器扩展。这种简化和开放的思路使得这种简化和开放的思路使得ARM处理器采用了处理器采用了很简单的结构来实现。很简单的结构来实现。2.3 ARM体系结构体系结构 ARM处理器是最先进的处理器是最先进的 目前,目前,ARM32位体系结构被公认为业界领位
22、体系结构被公认为业界领先的先的32位嵌入式位嵌入式RISC微处理器核,所有微处理器核,所有ARM处理器都共享这一体系结构。处理器都共享这一体系结构。 1) RISC 1) RISC型处理器结构型处理器结构ARMARM采用采用RISCRISC结构,在简化处理器结构,减少结构,在简化处理器结构,减少复杂功能指令的同时,提高了处理器的速度。复杂功能指令的同时,提高了处理器的速度。考虑到处理器与存储器打交道的指令执行时考虑到处理器与存储器打交道的指令执行时间远远大于在寄存器内操作的指令执行时间,间远远大于在寄存器内操作的指令执行时间,RISCRISC型处理器采用了型处理器采用了Load/StoreLo
23、ad/Store加载加载/ /存储存储构造,即只有构造,即只有Load/StoreLoad/Store指令可与存储器打交道,指令可与存储器打交道,其余指令都不允许进行存储器操作。其余指令都不允许进行存储器操作。为了进一步提高指令和数据的存取速度,为了进一步提高指令和数据的存取速度,RISC型处理器增加了指令高速缓冲型处理器增加了指令高速缓冲I-Cache和和数据高速缓冲数据高速缓冲D-Cache及多处理器结构,使指及多处理器结构,使指令的操作尽可能在寄存器之间进行。令的操作尽可能在寄存器之间进行。只能对寄存器执行算术和逻辑只能对寄存器执行算术和逻辑操作,操作,Load/StoreLoad/St
24、ore体系结构体系结构 2)Thumb指令集指令集虽然虽然ARM处理器本身是处理器本身是32位设计,但考虑到位设计,但考虑到RISC型处理器的指令功能相对较弱,新型的型处理器的指令功能相对较弱,新型的ARM体系结构中定义了体系结构中定义了16位的位的Thumb指令集。指令集。Thumb指令集比通常的指令集比通常的8/16位位CISC/RISC处处理器有更好的代码密度,而芯片面积只增加理器有更好的代码密度,而芯片面积只增加6%,却可以使程序存储器更小。,却可以使程序存储器更小。3)多处理器状态模式多处理器状态模式ARM体系结构定义了体系结构定义了7种处理器模式:用户、种处理器模式:用户、 快中断
25、、中断、管理、终止、未定义和系统模式,快中断、中断、管理、终止、未定义和系统模式,大大提高了大大提高了ARM处理器的效率。处理器的效率。4)两种处理器工作状态两种处理器工作状态ARM状态状态 (执行执行32位位ARM指令指令) Thumb状态。状态。(执行执行16位位Thumb指令指令)5)嵌入式在线仿真调试嵌入式在线仿真调试ARM体系结构的处理器芯片都嵌入了在线仿体系结构的处理器芯片都嵌入了在线仿真真ICE-RT逻辑,便于通过逻辑,便于通过JTAG来仿真调试芯片,来仿真调试芯片,省去了价格昂贵的在线仿真器。省去了价格昂贵的在线仿真器。6)灵活方便的接口灵活方便的接口ARM体系结构具有协处理器
26、接口,允许接体系结构具有协处理器接口,允许接16个协处理器。既可以使基本的个协处理器。既可以使基本的ARM处理器内核尽处理器内核尽可能小,方便地扩充可能小,方便地扩充ARM指令集,也可以通过未指令集,也可以通过未定义指令来支持协处理器的软件仿真。定义指令来支持协处理器的软件仿真。7)低电压功耗的设计低电压功耗的设计考虑到考虑到ARM处理器主要用于手持式嵌入式系统处理器主要用于手持式嵌入式系统中,在设计中就十分注意功耗的设计。中,在设计中就十分注意功耗的设计。 2. ARM9体系结构体系结构比较最常用的是比较最常用的是ARM920T内核,内核,ARM920T结构主要部结构主要部分有分有7部分构成
27、:部分构成: ARM9TDMI内核内核CPU MMU Cache 协处理器接口协处理器接口 运行跟踪信息接口运行跟踪信息接口(ETM) JTAG调试接口调试接口 总线接口总线接口ARM9TDMI体系结构框图体系结构框图ARM9TDMI CPU指令接口指令接口数据地址接口数据地址接口跟踪接口跟踪接口数据接口数据接口 JTAG接口接口指令地址接口指令地址接口ARM9TDMI结构框图结构框图ARM920T体系结构框图体系结构框图 ARM920T体系结构框图体系结构框图ARM9TDMI核性能核性能0.250.25微米的微米的ARM9TDMIARM9TDMI核在执行核在执行3232位位ARMARM代码时
28、代码时的特性综述于下表的特性综述于下表3 3。核的版图示于下页图。核的版图示于下页图。2.4 ARM2.4 ARM流水线结构流水线结构1.流水线技术概述流水线技术概述 流水线方式流水线方式 是把一个重复的过程分解为若干个子过程,每是把一个重复的过程分解为若干个子过程,每个子过程可以与其他子过程同时进行。个子过程可以与其他子过程同时进行。 由于这种工作方式与工厂中的生产流水线十分由于这种工作方式与工厂中的生产流水线十分相似,因此,把它称为流水线工作方式。相似,因此,把它称为流水线工作方式。 处理器按照一系列步骤来执行每一条指令。处理器按照一系列步骤来执行每一条指令。典型的步骤为:典型的步骤为:1
29、从存储器读取指令从存储器读取指令fetch)2译码以鉴别它是哪一类指令译码以鉴别它是哪一类指令dec)3从寄存器组取得所需的操作数从寄存器组取得所需的操作数reg)4将操作数进行组合以得到结果或存储器地址将操作数进行组合以得到结果或存储器地址exe)5如果需要,则访问存储器存取数据如果需要,则访问存储器存取数据mem)6将结果回写到寄存器组将结果回写到寄存器组res)2.ARM7的三级流水线的三级流水线1取指:从程序存储器中取指令,放入指令流水取指:从程序存储器中取指令,放入指令流水线。线。(占用存储器访问操作占用存储器访问操作)2译码:指令译码。译码:指令译码。(占用译码逻辑占用译码逻辑)3
30、执行:执行指令执行:执行指令/读写读写REG。(占用占用ALU及数及数据路径据路径) 下图为下图为3个单周期指令在流水线上的情况。一条指令有个单周期指令在流水线上的情况。一条指令有3个时钟周期的执行时间,但吞吐量是每个周期个时钟周期的执行时间,但吞吐量是每个周期1条指令。条指令。t123PC值如何计算?值如何计算?PC 指向处于读取级的指令地址,而不是处于执行级的指令地址指向处于读取级的指令地址,而不是处于执行级的指令地址PC=当前执行指令地址当前执行指令地址+8ARM单周期指令的单周期指令的3级流水线操作级流水线操作 优秀的流水线结构优秀的流水线结构 OperationCycle 1 2 3
31、 45 6 ADD SUB MOV AND ORR EOR CMP RSBFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteDecodeExecuteFetchDecodeFetchFetch3.ARM9TDMI的五级流水线的五级流水线ARM7TDMI与与ARM9TDMI流水线比较流水线比较 4.ARM7和和ARM9流水线比较流水线比较 5级流水线的级流水线的ARM9内核是哈佛架构,拥有独内核是哈佛架构,拥有独立的指令和数据总线;指令和数据的读取可以立的指令和数据总
32、线;指令和数据的读取可以在同一周期进行;在同一周期进行; 3级流水的级流水的ARM7内核是指令和数据总线复用内核是指令和数据总线复用的冯的冯.诺依曼架构,指令和数据的读取不能在诺依曼架构,指令和数据的读取不能在同一周期进行;同一周期进行; 5级流水线设计把寄存器读取、逻辑运算、结级流水线设计把寄存器读取、逻辑运算、结果回写分散在不同的流水当中,果回写分散在不同的流水当中, 每一级流水每一级流水的操作简洁,提升了处理器的主频。的操作简洁,提升了处理器的主频。 随着流水线深度级数的增加,每随着流水线深度级数的增加,每一段的工作量被削减了,这使得处理器可以工一段的工作量被削减了,这使得处理器可以工作
33、在更高的频率,同时改进了处理器的性能;作在更高的频率,同时改进了处理器的性能; 负面作用是增加了系统的延时,即内核负面作用是增加了系统的延时,即内核在执行一条指令前,需要更多的周期来填充流在执行一条指令前,需要更多的周期来填充流水线;水线; 流水线级数的增加也意味着在某些段流水线级数的增加也意味着在某些段之间会产生数据相关。之间会产生数据相关。 ARM处理器性能比较处理器性能比较25 ARM总线结构总线结构ARM微控制器使用的是微控制器使用的是AMBA总线体系结构总线体系结构AMBAAdvanced Microcontroller Bus Architecture是是ARM公司公布的总线标准,
34、公司公布的总线标准,先进的先进的AMBA规范定义了三种总线:规范定义了三种总线:AHB总线总线Advanced High-performance Bus):):用于连接高性能系统模块。它支持突发数据传输方用于连接高性能系统模块。它支持突发数据传输方式及单个数据传输方式,所有时序式及单个数据传输方式,所有时序 参考同一个时参考同一个时钟沿。钟沿。ASB总线总线Advanced System Bus):用于连接高):用于连接高性能系统模块,它支持突发数据传输模式。性能系统模块,它支持突发数据传输模式。APB总线总线Advance Peripheral Bus):是一个简):是一个简单接口支持低性能
35、的外围接口。单接口支持低性能的外围接口。 q从编程的角度看,从编程的角度看,ARMARM微处理器的工作状态一般有两种,微处理器的工作状态一般有两种,并可在两种状态之间切换:并可在两种状态之间切换:ARMARM状态,此时处理器执行状态,此时处理器执行3232位的字对齐的位的字对齐的ARMARM指令;指令;ThumbThumb状态,此时处理器执行状态,此时处理器执行1616位的、半字对齐的位的、半字对齐的ThumbThumb指令。指令。 ARM处理器有两种工作状态和处理器有两种工作状态和7种工作模式。种工作模式。 2 26 ARM6 ARM微处理器的工作状态与模式微处理器的工作状态与模式 1. A
36、RM处理器的两种工作状态处理器的两种工作状态 qTHUMBTHUMB指令是指令是ARMARM指令的子集指令的子集q可以相互调用,只要遵循一定的调用规则可以相互调用,只要遵循一定的调用规则qThumbThumb指令与指令与ARMARM指令的时间效率和空间效率关系为指令的时间效率和空间效率关系为: :存储空间约为存储空间约为ARMARM代码的代码的60607070指令数比指令数比ARMARM代码多约代码多约30304040存储器为存储器为3232位时位时ARMARM代码比代码比ThumbThumb代码快约代码快约4040存储器为存储器为1616位时位时ThumbThumb比比ARMARM代码快约代
37、码快约40405050使用使用ThumbThumb代码,存储器的功耗会降低约代码,存储器的功耗会降低约3030qARMARM指令集和指令集和ThumbThumb指令集均有切换处理器状态的指令,指令集均有切换处理器状态的指令,并可在两种工作状态之间切换,并可在两种工作状态之间切换,q在开始执行代码时,应该处于在开始执行代码时,应该处于ARMARM状态。状态。状态切换方法两种状态可以切换两种状态可以切换 程序执行过程中,通过执行带状态切换的分支指令程序执行过程中,通过执行带状态切换的分支指令BX,随时在两种工作状态之间进行切换。并且,处理器工作状态的随时在两种工作状态之间进行切换。并且,处理器工作
38、状态的转变,并不影响处理器的工作模式和相应寄存器中的内容。转变,并不影响处理器的工作模式和相应寄存器中的内容。进入Thumb状态q当操作数寄存器的状态位位当操作数寄存器的状态位位0 0为为1 1时,可以采用执时,可以采用执行行BXBX指令的方法,使微处理器从指令的方法,使微处理器从ARMARM状态切换到状态切换到ThumbThumb状态。此为主动切换。状态。此为主动切换。q当处理器处于当处理器处于ThumbThumb状态时发生异常如状态时发生异常如IRQIRQ、FIQFIQ、UndefUndef、AbortAbort、SWISWI等),则异常处理返回时,自动切等),则异常处理返回时,自动切换到
39、换到ThumbThumb状态。此为自动切换。状态。此为自动切换。切换到切换到ARMARM状态状态 在处理器进行异常处理时,把在处理器进行异常处理时,把PCPC指针放入异常指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到也可以使处理器切换到ARMARM状态。状态。有两种情况有两种情况ARM处理器自动切换到处理器自动切换到Thumb状态。状态。(1执行执行BX指令,当操作数寄存器的位指令,当操作数寄存器的位0为为0时,则微时,则微处理器从处理器从Thumb状态切换到状态切换到ARM状态。状态。(2当处理器在当处理器在T
40、humb状态时发生异常如状态时发生异常如IRQ、FIQ、Undef等),则处理器从等),则处理器从Thumb状态自动切换到状态自动切换到ARM状态状态进行异常处理进行异常处理例例: 状态切换程序状态切换程序;从从ARM状态切换到状态切换到Thumb状态状态LDRR0,=Lable+1BXR0;从从Thumb状态切换到状态切换到ARM状态状态LDRR0,=LableBXR0留意:留意: ARM和和Thumb之间状态的切换不影响处理器之间状态的切换不影响处理器的模式或寄存器的内容。的模式或寄存器的内容。 ARM处理器在开始执行代码时,只能处于处理器在开始执行代码时,只能处于ARM状态。状态。1 1
41、处理器模式处理器模式q用户模式用户模式(usr):ARM处理器正常的程序执行处理器正常的程序执行状态状态,大部分任务执行在这种模式。大部分任务执行在这种模式。q快速中断模式快速中断模式(fiq):当一个高优先级:当一个高优先级(fast)中中断产生时将会进入这种模式断产生时将会进入这种模式,用于高速数据传用于高速数据传输或通道处理输或通道处理q外部中断模式外部中断模式(irq):当一个低优先级:当一个低优先级(normal)中断产生时将会进入这种模式。用于中断产生时将会进入这种模式。用于通用的中断处理通用的中断处理2. ARM2. ARM处理器的工作模式处理器的工作模式q管理模式管理模式(sv
42、c):当复位或软中断指令执行时将会:当复位或软中断指令执行时将会进入这种模式进入这种模式, 供操作系统使用的一种保护模式。供操作系统使用的一种保护模式。q中止模式中止模式abt):当存取异常时将会进入这种):当存取异常时将会进入这种模式,用于虚拟存储及存储保护。模式,用于虚拟存储及存储保护。q系统模式系统模式sys):供需要访问系统资源的操作):供需要访问系统资源的操作系统任务使用,运行具有特权的操作系统任务系统任务使用,运行具有特权的操作系统任务q未定义模式未定义模式und):当执行未定义指令时会):当执行未定义指令时会进入这种模式进入这种模式 ,软件仿真硬件协处理器。,软件仿真硬件协处理器
43、。2模式特点模式特点 (1用户模式特点:用户模式特点:应用程序不能够访问受操作系统保护的系统资源。应用程序不能够访问受操作系统保护的系统资源。应用程序不能进行处理器模式的切换。应用程序不能进行处理器模式的切换。(2系统模式特点:系统模式特点: 不属于异常模式,不是通过异常进入的。系统不属于异常模式,不是通过异常进入的。系统模式属于特权模式,可以访问所有的系统资源,也模式属于特权模式,可以访问所有的系统资源,也可以直接进行模式的切换。它主要供操作系统使用。可以直接进行模式的切换。它主要供操作系统使用。 (3特权模式及其特点:特权模式及其特点:特权模式:除用户模式之外的工作模式又称特权模式:除用户
44、模式之外的工作模式又称为特权模式为特权模式特点:特点:应用程序可以访问所有的系统资源应用程序可以访问所有的系统资源可以任意地进行处理器模式的切换可以任意地进行处理器模式的切换(4异常模式及其特点:异常模式及其特点: 异常模式:异常模式: 除用户模式、系统模式之外的五种除用户模式、系统模式之外的五种模式称为异常模式。模式称为异常模式。特点:以各自的中断或异常方式进入,并且处特点:以各自的中断或异常方式进入,并且处理各自的中断或异常。理各自的中断或异常。 对管理模式对管理模式 (svc)进入方式和处理内容有进入方式和处理内容有: 系统上电复位后进入管理模式,运行系统初系统上电复位后进入管理模式,运
45、行系统初始化程序,如中断允许始化程序,如中断允许/制止,主时钟设置,制止,主时钟设置,SDRAM配置,各个功能模块初始化等。配置,各个功能模块初始化等。当执行软件中断指令当执行软件中断指令SWI时,进入管理模式。时,进入管理模式。3 3模式切换模式切换q处理器模式可以通过软件进行切换,也可以通过外处理器模式可以通过软件进行切换,也可以通过外部中断或者异常处理过程进行切换。部中断或者异常处理过程进行切换。q当应用程序发生异常中断时,处理器进入相应的异当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式下都有一组寄存器,供常模式。在每一种异常模式下都有一组寄存器,供相应的异常处理程
46、序使用,这样就可以保证在进入相应的异常处理程序使用,这样就可以保证在进入异常模式时,用户模式下的寄存器不被破坏。异常模式时,用户模式下的寄存器不被破坏。处理器模式的切换方式:处理器模式的切换方式:软件控制进行切换。软件控制进行切换。通过外部中断和异常进行切换通过外部中断和异常进行切换处理器启动时的模式转换图处理器启动时的模式转换图管理模式管理模式(Supervisor)多种特权多种特权模式变化模式变化用户程序的用户程序的运行模式运行模式复位后的缺省复位后的缺省模式模式主要完成各模式的主要完成各模式的堆栈设置,注意不堆栈设置,注意不要进入用户模式要进入用户模式一般为用户模式一般为用户模式User
47、q系统模式并不是通过异常进入的,它和用户系统模式并不是通过异常进入的,它和用户模式具有完全一样的寄存器。但是系统模式模式具有完全一样的寄存器。但是系统模式属于特权模式,可以访问所有的系统资源,属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式切换。也可以直接进行处理器模式切换。 q系统模式它主要供操作系统任务使用系统模式它主要供操作系统任务使用 q 通常操作系统的任务需要访问所有的系统通常操作系统的任务需要访问所有的系统资源,同时该任务仍然使用用户模式的寄存器资源,同时该任务仍然使用用户模式的寄存器组,而不是使用异常模式下相应的寄存器组,组,而不是使用异常模式下相应的寄存器组,这样
48、可以保证当异常中断发生时任务状态不被这样可以保证当异常中断发生时任务状态不被破坏。破坏。2.7 ARM2.7 ARM体系结构的存储器格式体系结构的存储器格式1. ARM1. ARM处理器支持以下处理器支持以下6 6种数据类型:种数据类型:8 8位有符号和无符号字节位有符号和无符号字节(Byte)(Byte)。1616位有符号和无符号半字位有符号和无符号半字(Halfword) (Halfword) 它们必须以两字节的边界对齐它们必须以两字节的边界对齐( (半字对齐半字对齐) )。3232位有符号和无符号字位有符号和无符号字(word)(word)它们必须以它们必须以4 4字节的边界对齐字节的边
49、界对齐( (字对齐字对齐) )。 字对齐:字单元地址的低两位字对齐:字单元地址的低两位 A1A0=0b00A1A0=0b00。即地址末位为。即地址末位为0x0, 0x4, 0x0, 0x4, 0x8, 0xc0x8, 0xc。 半字对齐:半字单元地址的最低位半字对齐:半字单元地址的最低位 A0=0b0 (A0=0b0 (地址末位为地址末位为0x0,0x2,0x4,0x6,0x8,0xa,0xc,0xe)0x0,0x2,0x4,0x6,0x8,0xa,0xc,0xe)。 对对于于指指令令,ARM指指令令系系统统分分为为32位位ARM指指令令集集和和16位位的的Thumb指指令令集集,在在存存储储
50、时时分分别别以以32位和位和16位的两种不同长度存储。位的两种不同长度存储。 对对于于数数据据,ARM支支持持对对32位位字字数数据据,16位位半半字字数数据据,8位位字字节节数数据据操操作作。因因此此数数据据存存储储器器可可以以存存储储32位位,16位位,8位位三三种种不不同同长长度度数数据。据。 在在ARM内内部部,所所有有操操作作都都面面向向32位位的的操操作作数数,只只有有数数据据传传送送指指令令支支持持较较短短的的字字节节和和半半字字的的数数据据类类型型。当当从从存存储储器器读读入入一一个个字字节节或或半半字字时,根据其数据类型将其扩展到时,根据其数据类型将其扩展到32位。位。2.
51、ARM存储器组织存储器组织 ARM存储器以存储器以8位为一个单元存储数据位为一个单元存储数据(一个字节一个字节),每个存储单元分配一个存储地址。,每个存储单元分配一个存储地址。 ARM将存储器看作是从零地址开始的字节的线将存储器看作是从零地址开始的字节的线性组合。作为性组合。作为32位的微处理器,位的微处理器,ARM体系结构所支体系结构所支持的最大寻址空间为持的最大寻址空间为4GB232字节)。字节)。 从零字节到三字节放置第一个存储的从零字节到三字节放置第一个存储的字数据,从第四个字节到第七个字节放置字数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列。第二个存储的字数据,依次排
52、列。 32位的字数据要使用位的字数据要使用4个地址单元,个地址单元,16位半数据要使用位半数据要使用2个地址单元。个地址单元。 这样,就存在一个所存储的字或半字这样,就存在一个所存储的字或半字数据的排列顺序问题。数据的排列顺序问题。ARM体系结构可以体系结构可以用两种方法存储字数据,称为大端格式和用两种方法存储字数据,称为大端格式和小端格式小端格式 。 大端格式大端格式(big-endian):字数据的高字节存储在低地址:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。中,而字数据的低字节则存放在高地址中。 小端格式小端格式(low-endian):与大端存储格式相反。低地址:
53、与大端存储格式相反。低地址中存放的是字数据的低字节,高地址存放的是字数据的高中存放的是字数据的低字节,高地址存放的是字数据的高字节。缺省设置为小端格式。字节。缺省设置为小端格式。2.7 ARM存储器格式存储器格式3 .ARM存储器层次存储器层次 微处理器希望存储器容量大、速度快。但容量微处理器希望存储器容量大、速度快。但容量大者速度慢;速度快者容量小。解决方法是构建一大者速度慢;速度快者容量小。解决方法是构建一个由多级存储器组成的复合存储器系统。个由多级存储器组成的复合存储器系统。 两级存储器方案两级存储器方案一般包括:一般包括:一个容量小但速度快的从存储器一个容量小但速度快的从存储器一个容量
54、大但速度慢的主存储器一个容量大但速度慢的主存储器宏观上看这个存储器系统像一个即大又快的存储宏观上看这个存储器系统像一个即大又快的存储器。这个容量小但速度快的元件是器。这个容量小但速度快的元件是Cache,它自动,它自动地保存处理器经常用到的指令和数据的拷贝。地保存处理器经常用到的指令和数据的拷贝。多级存储器系统多级存储器系统寄存器组寄存器组 访问时间约为几个访问时间约为几个ns。片上片上RAM 与片外与片外RAM比速度快、功耗小、比速度快、功耗小、 容量小。读写时间约为几个容量小。读写时间约为几个ns。片上片上Cache 832KB,访问时间约为十几个访问时间约为十几个ns。主存储器主存储器
55、一般为几兆字节一般为几兆字节1GB 的动态存的动态存 储器,访问时间约储器,访问时间约 50ns。CPU寄存器组寄存器组片上片上RAM片上片上Cache主存储器主存储器硬盘硬盘2.8寄存器组织 ARM ARM微处理器共有微处理器共有3737个个3232位寄存器,其中位寄存器,其中3131个为通用寄存器,个为通用寄存器,6 6个为状态寄存器。但是这些个为状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可编寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决微处理器的工作状态及具体的运程访问的,取决微处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器行模式。但在任何时候,通用
56、寄存器R14R14R0R0、程、程序计数器序计数器PCPC、一个或两个状态寄存器都是可访问、一个或两个状态寄存器都是可访问的。的。 1.ARM状态下的寄存器组织 q通用寄存器:通用寄存器包括通用寄存器:通用寄存器包括R0R0R15R15,可以分为三类:,可以分为三类:未分组寄存器未分组寄存器R0R0R7R7分组寄存器分组寄存器R8R8R14R14程序计数器程序计数器PC(R15)PC(R15)ARMARM状态下的寄存器组织状态下的寄存器组织未分组寄存器未分组寄存器R0R0R7R7q在所有的运行模式下,未分组寄存器都指向同一个物理寄在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被
57、系统用作特殊的用途,因此,在中断或异存器,他们未被系统用作特殊的用途,因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会造成寄存器中数据的破均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。坏,这一点在进行程序设计时应引起注意。分组寄存器分组寄存器R8R8R12R12q每次所访问的物理寄存器与处理器当前的运行模式有关每次所访问的物理寄存器与处理器当前的运行模式有关qR8R8R12R12:每个寄存器对应两个不同的物理寄存器:每个寄存器对应两个不同的物理寄存器当使用
58、当使用fiqfiq模式时,访问寄存器模式时,访问寄存器R8_fiqR8_fiqR12_fiqR12_fiq;当使用除当使用除fiqfiq模式以外的其他模式时,访问寄存器模式以外的其他模式时,访问寄存器R8_usrR8_usrR12_usrR12_usr。分组寄存器分组寄存器R13R13R14R14qR13R13、R14R14:每个寄存器对应:每个寄存器对应6 6个不同的物理寄存器个不同的物理寄存器q其中的一个是用户模式与系统模式共用,另外其中的一个是用户模式与系统模式共用,另外5 5个物理寄个物理寄存器对应于其他存器对应于其他5 5种不同的运行模式种不同的运行模式q采用以下的记号来区分不同的物
59、理寄存器:采用以下的记号来区分不同的物理寄存器:R13_R13_R14_R14_qmodemode为以下几种之一:为以下几种之一:usrusr、fiqfiq、irqirq、svcsvc、abtabt、undund。堆栈指针堆栈指针R13R13qR13R13在在ARMARM指令中常用作堆栈指针,但这只是一种习惯用法,指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。用户也可使用其他的寄存器作为堆栈指针。q在在ThumbThumb指令集中,某些指令强制性的要求使用指令集中,某些指令强制性的要求使用R13R13作为堆作为堆栈指针。栈指针。q由于处理器的每种运行模式均有
60、自己独立的物理寄存器由于处理器的每种运行模式均有自己独立的物理寄存器R13R13,在初始化部分,都要初始化每种模式下的,在初始化部分,都要初始化每种模式下的R13R13,这样,这样,当程序的运行进入异常模式时,可以将需要保护的寄存器当程序的运行进入异常模式时,可以将需要保护的寄存器放入放入R13R13所指向的堆栈,而当程序从异常模式返回时,则所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复。从对应的堆栈中恢复。 子程序连接寄存器子程序连接寄存器R14R14qR14R14也称作子程序连接寄存器或连接寄存器也称作子程序连接寄存器或连接寄存器LRLR。当执行。当执行BLBL子程序调用指令
61、时,可以从子程序调用指令时,可以从R14R14中得到中得到R15R15程序计数器程序计数器PCPC的备份。其他情况下,的备份。其他情况下,R14R14用作通用寄存器。用作通用寄存器。q在每一种运行模式下,都可用在每一种运行模式下,都可用R14R14保存子程序的返回地址,保存子程序的返回地址,当用当用BLBL或或BLXBLX指令调用子程序时,将指令调用子程序时,将PCPC的当前值拷贝给的当前值拷贝给R14R14,执行完子程序后,又将,执行完子程序后,又将R14R14的值拷贝回的值拷贝回PCPC,即可完成子,即可完成子程序的调用返回。程序的调用返回。BL SUB1SUB1:STMFDSP!, ,
62、LR /*将将R14存入堆存入堆栈*/LDMFDSP!,PC/*完成子程序返回完成子程序返回 */程序计数器程序计数器PC(R15)PC(R15)qARMARM状态下,位状态下,位1:01:0为为0 0,位,位31:231:2用于保存用于保存PCPC;qThumbThumb状态下,位状态下,位00为为0 0,位,位31:131:1用于保存用于保存PCPC;qR15R15虽然也可用作通用寄存器,但一般不这么使用,因为虽然也可用作通用寄存器,但一般不这么使用,因为对对R15R15的使用有一些特殊的限制,当违反了这些限制时,的使用有一些特殊的限制,当违反了这些限制时,程序的执行结果是未知的。程序的执
63、行结果是未知的。q由由于于ARMARM体体系系结结构构采采用用了了多多级级流流水水线线技技术术,对对于于ARMARM指指令令集集而而言言,PCPC总总是是指指向向当当前前指指令令的的下下两两条条指指令令的的地地址址,即即PCPC的的值为当前指令的地址值加值为当前指令的地址值加8 8个字节。个字节。程序状态寄存器程序状态寄存器(CPSR/SPSR)(CPSR/SPSR) 寄存器寄存器R16R16用作用作CPSR(CPSR(当前程序状态寄存器当前程序状态寄存器) ),CPSRCPSR可在任何运行模式下被访问,它包括条件标志位、中可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式
64、标志位,以及其他一些相关的断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。控制和状态位。q每一种运行模式下又都有一个专用的物理状态寄存器,称每一种运行模式下又都有一个专用的物理状态寄存器,称为为SPSRSPSR备份的程序状态寄存器),异常发生时,备份的程序状态寄存器),异常发生时,SPSRSPSR用用于保存于保存CPSRCPSR的值,从异常退出时则可由的值,从异常退出时则可由SPSRSPSR来恢复来恢复CPSRCPSR。q由于用户模式和系统模式不属于异常模式,他们没有由于用户模式和系统模式不属于异常模式,他们没有SPSRSPSR,当在这两种模式下访问,当在这两种模式下访问SPS
65、RSPSR,结果是未知的。,结果是未知的。ThumbThumb状态下的寄存器组织状态下的寄存器组织 ThumbThumb状态下的寄存器集是状态下的寄存器集是ARMARM状态下寄存状态下寄存器集的一个子集器集的一个子集q程序可以直接访问程序可以直接访问8 8个通用寄存器个通用寄存器R7R7R0R0)、程)、程序计数器序计数器PCPC)、堆栈指针)、堆栈指针SPSP)、连接寄存器)、连接寄存器LRLR和和CPSRCPSR。q同样,每一种特权模式下都有一组同样,每一种特权模式下都有一组SPSP、LRLR和和SPSRSPSR。 ThumbThumb状态下的寄存器组织图状态下的寄存器组织图ThumbTh
66、umb状态下的寄存器与状态下的寄存器与ARMARM状态下的寄存器关系状态下的寄存器关系qThumbThumb状态下和状态下和ARMARM状态下的状态下的R0R0R7R7是相同的。是相同的。qThumbThumb状态下和状态下和ARMARM状态下的状态下的CPSRCPSR和所有的和所有的SPSRSPSR是相同的。是相同的。qThumbThumb状态下的状态下的SPSP对应于对应于ARMARM状态下的状态下的R13R13。qThumbThumb状态下的状态下的LRLR对应于对应于ARMARM状态下的状态下的R14R14。qThumbThumb状态下的程序计数器对应于状态下的程序计数器对应于ARMA
67、RM状态下状态下R15R15。ThumbThumb状态下的寄存器与状态下的寄存器与ARMARM状态下的寄存器关系图状态下的寄存器关系图访问访问THUMBTHUMB状态下的高位寄存器状态下的高位寄存器Hi-registersHi-registers) 在在ThumbThumb状态下,高位寄存器状态下,高位寄存器R8R8R15R15并不是标准寄存器集并不是标准寄存器集的一部分,但可使用汇编语言程序受限制的访问这些寄存的一部分,但可使用汇编语言程序受限制的访问这些寄存器,将其用作快速的暂存器。器,将其用作快速的暂存器。使用带特殊变量的使用带特殊变量的MOVMOV指令,数据可以在低位寄存器和高指令,数
68、据可以在低位寄存器和高位寄存器之间进行传送;高位寄存器的值可以使用位寄存器之间进行传送;高位寄存器的值可以使用CMPCMP和和ADDADD指令进行比较或加上低位寄存器中的值。指令进行比较或加上低位寄存器中的值。 程序状态寄存器作用程序状态寄存器作用 ARM ARM体系结构包含一个当前程序状态寄存体系结构包含一个当前程序状态寄存器器CPSRCPSR和五个备份的程序状态寄存器和五个备份的程序状态寄存器SPSRsSPSRs)(1当前程序状态寄存器当前程序状态寄存器 CPSR (Current Program Status Register) -用来保存当前程序状态的寄存器。用来保存当前程序状态的寄存
69、器。 -所有处理器模式下都可以访问当前程序状态寄所有处理器模式下都可以访问当前程序状态寄存器存器CPSR。仅一个。仅一个CPSR。(2保存程序状态寄存器保存程序状态寄存器SPSR_mode (Saved Program Status Register) SPSR_mode用来进行异常处理,其功能包括:用来进行异常处理,其功能包括: 保存保存ALU中的当前操作信息中的当前操作信息 当异常发生时当异常发生时, 用来保存用来保存CPSR的值,从异常返的值,从异常返回时,将回时,将 SPSR_mode复制到复制到CPSR中,恢复中,恢复CPSR的值。的值。 控制允许和禁止中断控制允许和禁止中断 修改修
70、改SPSR的值的值 设置处理器的运行模式设置处理器的运行模式修改修改SPSR的值的值 程序状态寄存器的每一位的安排程序状态寄存器的每一位的安排 程序状态寄存器的条件码标志程序状态寄存器的条件码标志 N N、Z Z、C C、V V均为条件码标志位。它们均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行且可以决定某条指令是否被执行q在在ARMARM状态下,绝大多数的指令都是有条件执行的。状态下,绝大多数的指令都是有条件执行的。q在在ThumbThumb状态下,仅有分支指令是有条件执行的。状态下,仅有分支指令是有条件执行
71、的。 影响标志位的指令影响标志位的指令标志位标志位含含 义义N N当用两个补码表示的带符号数进行运算时,当用两个补码表示的带符号数进行运算时,N=1 N=1 表示运算的结表示运算的结果为负数;果为负数;N=0 N=0 表示运算的结果为正数或零;表示运算的结果为正数或零;Z ZZ=1 Z=1 表示运算的结果为零;表示运算的结果为零;Z=0Z=0表示运算的结果为非零;表示运算的结果为非零;C C加法运算结果进位时,加法运算结果进位时,C=1C=1,减法运算借位时,减法运算借位时,C=0C=0;移位操作的非加移位操作的非加/ /减运算指令,减运算指令,C C为移出的最后一位;为移出的最后一位;其他的
72、非加其他的非加/ /减运算指令,减运算指令,C C的值通常不改变。的值通常不改变。V V加加/ /减法运算指令,减法运算指令,V=1V=1表示符号位溢出。表示符号位溢出。对于其他的非加对于其他的非加/ /减运算指令,减运算指令,C C的值通常不改变。的值通常不改变。Q Q在在ARM v5ARM v5及以上版本的及以上版本的E E系列处理器中,系列处理器中,Q Q标志指示标志指示DSPDSP运算指运算指令是否溢出。在其他版本中,令是否溢出。在其他版本中,Q Q标志位无定义。标志位无定义。程序状态寄存器的控制位程序状态寄存器的控制位 状态寄存器的低状态寄存器的低8 8位位I I、F F、T T和和
73、M4M4:00)称为控制)称为控制位,发生异常时这些位可以被改变。如果处理器运行特权模位,发生异常时这些位可以被改变。如果处理器运行特权模式,这些位也可以由程序修改。式,这些位也可以由程序修改。q中断禁止位中断禁止位I I、F F:q I=1 I=1 禁止禁止IRQIRQ中断中断; I; I0 0 允许允许IRQIRQ中断中断q F=1 F=1 禁止禁止FIQFIQ中断中断; F; F0 0 允许允许FIQFIQ中断中断qT T标志位:该位反映处理器的运行状态标志位:该位反映处理器的运行状态q T=1 T=1时,程序运行于时,程序运行于ThumbThumb状态状态q T=0 T=0时,程序运行
74、于时,程序运行于ARMARM状态状态q q运行模式位运行模式位M4M4:00是模式位,决定处理器的运行模式是模式位,决定处理器的运行模式 处理器运行模式及可以访问的寄存器处理器运行模式及可以访问的寄存器M4:0处理器模式处理器模式可访问的寄存器可访问的寄存器0b10000用户模式用户模式PC,CPSR,R0-R140b10001FIQ模式模式PC,CPSR, SPSR_fiq,R14_fiq-R8_fiq, R7R00b10010IRQ模式模式PC,CPSR, SPSR_irq,R14_irq, R13_irq, R12R00b10011管理模式管理模式PC,CPSR, SPSR_svc,R1
75、4_svc, R13_svc, R12R0,0b10111中止模式中止模式PC,CPSR, SPSR_abt,R14_abt,R13_abt, R12R0,0b11011未定义模式未定义模式PC,CPSR, SPSR_und,R14_und, R13_und, R12R0,0b11111系统模式系统模式PC,CPSRARM v4及以上版本)及以上版本), R14R0 1. 中断和异常的概念中断和异常的概念 1)中断中断 当当CPU正在执行程序时,系统发生了一件正在执行程序时,系统发生了一件急需处理的事件,急需处理的事件,CPU暂时停下正在执行的程序,暂时停下正在执行的程序,转去处理相应的事件,
76、事件处理完后,转去处理相应的事件,事件处理完后,CPU再返再返回执行原来的程序,这种情况称为中断。回执行原来的程序,这种情况称为中断。 2.9 2.9 异异 常常 中断事件:引起中断事件:引起CPU产生中断、并且与产生中断、并且与CPU当前当前所执行的程序无关的、由外部硬件产生的事件,也所执行的程序无关的、由外部硬件产生的事件,也叫中断源。中断事件也常称为外中断。叫中断源。中断事件也常称为外中断。 中断是计算机系统基本的功能中断是计算机系统基本的功能 利用中断,外利用中断,外设可以与设可以与CPU并行工作,当外设需要传输数据或控并行工作,当外设需要传输数据或控制时,向制时,向CPU发出中断请求
77、信号。发出中断请求信号。CPU响应其请求响应其请求进行处理。因此,使用中断既可以实现进行处理。因此,使用中断既可以实现CPU与外设与外设并行工作,又可以实时处理各种紧急事件。并行工作,又可以实时处理各种紧急事件。2.异常异常 是指是指CPU在执行指令时出现的错误,即在执行指令时出现的错误,即不正常的情况。异常是与当前所执行的程序不正常的情况。异常是与当前所执行的程序有关的。如存取数据或指令错误、计算结果有关的。如存取数据或指令错误、计算结果溢出等。溢出等。 异常的处理:也用中断的方式进行处理。异常的处理:也用中断的方式进行处理。 计算机通常是用中断来处理外中断和异常,计算机通常是用中断来处理外
78、中断和异常,因此下面将二者均称为异常。因此下面将二者均称为异常。 对异常的说明对异常的说明 当系统运行时,异常可能会随时发生,当系统运行时,异常可能会随时发生,为保证在为保证在ARM处理器发生异常时不至于处于处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进未知状态,在应用程序的设计中,首先要进行异常处理,采用的方式是在异常向量表中行异常处理,采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常的特定位置放置一条跳转指令,跳转到异常处理程序。处理程序。 当当ARMARM处理器发生异常时,程序计数处理器发生异常时,程序计数器器PCPC会被强制设置为对应的异常向量,从而跳
79、会被强制设置为对应的异常向量,从而跳转到异常处理程序,当异常处理完成以后,返转到异常处理程序,当异常处理完成以后,返回到主程序继续执行。回到主程序继续执行。我们需要处理所有的异常,尽管我们可以简单我们需要处理所有的异常,尽管我们可以简单的在某些异常处理程序处放置死循环。的在某些异常处理程序处放置死循环。3. ARM的异常的异常 ARM有有7种异常种异常(1)复位复位 处理器上一旦有复位输入,处理器上一旦有复位输入,ARM处理器立刻停处理器立刻停止执行当前指令。复位后,止执行当前指令。复位后,ARM处理器在禁处理器在禁止中断的管理模式下,从地址止中断的管理模式下,从地址0x00000000或或0
80、xFFFF0000开始执行指令。开始执行指令。 (2)未定义指令异常未定义指令异常 当当ARM处理器执行协处理器指令时,它处理器执行协处理器指令时,它必须等待任一外部协处理器应答后,才必须等待任一外部协处理器应答后,才能真正执行这条指令。若协处理器没有能真正执行这条指令。若协处理器没有响应,就会出现未定义指令异常。响应,就会出现未定义指令异常。 未定义指令异常可用于在没有物理协处未定义指令异常可用于在没有物理协处理器硬件的系统上,对协处理器进理器硬件的系统上,对协处理器进行软件仿真,或在软件仿真时进行指令行软件仿真,或在软件仿真时进行指令扩展。扩展。3)软件中断异常软件中断异常 该异常由执行该
81、异常由执行SWI指令产生,可使用此机制进指令产生,可使用此机制进行软件仿真。行软件仿真。4)预取中止取指令存储器中止)预取中止取指令存储器中止) 若处理器预取指令的地址不存在,或该地址不若处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止允许当前指令访问,存储器会向处理器发出中止信号,但当预取的指令被执行时,才会产生指令信号,但当预取的指令被执行时,才会产生指令预取中止异常。预取中止异常。5)数据中止访问数据存储器中止)数据中止访问数据存储器中止) 若处理器数据访问指令的地址不存在,或该地若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止
82、异常。址不允许当前指令访问时,产生数据中止异常。6) IRQ异常异常 当处理器的外部中断请求引脚有效,且当处理器的外部中断请求引脚有效,且CPSR中的中的I=0,产生,产生IRQ异常。异常。系统的外设可通过该异常请求中断服务。系统的外设可通过该异常请求中断服务。7) FIQ异常异常 当处理器的外部中断请求引脚有效,且当处理器的外部中断请求引脚有效,且CPSR中的中的F=0,产生,产生FIQ异常。异常。 FIQ支持数据传送和通道处理,并有足够支持数据传送和通道处理,并有足够的私有寄存器,从而在应用中可避免对寄存的私有寄存器,从而在应用中可避免对寄存器保存的需求,减少了开销。器保存的需求,减少了开
83、销。4. ARM异常中断响应过程异常中断响应过程 当发生异常时,除了复位异常立当发生异常时,除了复位异常立即中止当前指令外,处理器尽量完成即中止当前指令外,处理器尽量完成当前指令,然后脱离当前的程序去处当前指令,然后脱离当前的程序去处理异常。理异常。ARM处理器对异常中断的响处理器对异常中断的响应过程如下应过程如下 : (1) 保存返回地址保存返回地址 将引起异常指令的下一条指令的地址保存到将引起异常指令的下一条指令的地址保存到新的异常模式新的异常模式x下的下的R14,即,即R14-中,中,使异常处理程序执行完后能正确返回原程序。使异常处理程序执行完后能正确返回原程序。 (2) 保存当前状态寄
84、存器保存当前状态寄存器CPSR的内容的内容 将将CPSR的内容保存到将要执行的异常中断对的内容保存到将要执行的异常中断对应的应的SPSR中,便于中断返回时恢复处理器当前中,便于中断返回时恢复处理器当前的状态位、中断屏蔽位以及各条件标志位。的状态位、中断屏蔽位以及各条件标志位。 (3) 设置当前状态寄存器设置当前状态寄存器CPSR中的相应位中的相应位 设置设置CPSR模式控制位模式控制位CPSR4:0,使处,使处理器进入相应的执行模式;理器进入相应的执行模式; 设置中断标志位设置中断标志位CPSR6=1),禁止),禁止IRQ中断;中断; 设置中断标志位设置中断标志位CPSR7=1禁止禁止FIQ中
85、中断,当进入断,当进入Reset或或FIQ模式时。模式时。 (4)转去执行中断处理程序转去执行中断处理程序 取相应的中断向量给程序计数器取相应的中断向量给程序计数器PC,使程序开始执行中断处理程序。使程序开始执行中断处理程序。 一般地说,矢量地址处将包含一条指向相一般地说,矢量地址处将包含一条指向相应程序的转移指令,从而可跳转到相应的异常应程序的转移指令,从而可跳转到相应的异常中断处理程序处执行异常中断处理程序中断处理程序处执行异常中断处理程序 。R14_ = Return LinkR14_ = Return LinkSPSR_ = CPSRSPSR_ = CPSRCPSR4:0 = Exce
86、ption Mode NumberCPSR4:0 = Exception Mode NumberCPSR5 = 0CPSR5 = 0If = Reset or FIQ thenIf = Reset or FIQ thenCPSR6 = 1CPSR6 = 1CPSR7 = 1CPSR7 = 1PC = Exception Vector AddressPC = Exception Vector Address异常响应伪代码q处理器处于处理器处于ThumbThumb状态,则当异常向量地址加载入状态,则当异常向量地址加载入PCPC时,时,处理器自动切换到处理器自动切换到ARMARM状态。状态。ARMA
87、RM微处理器对异常的响应过微处理器对异常的响应过程用伪码可以描述为:程用伪码可以描述为:在ARM状态下执行禁止快速中断禁止正常中断转入异常入口地址 注意使用异常模式下的特有寄存器注意使用异常模式下的特有寄存器 每个异常模式对应有两个寄存器每个异常模式对应有两个寄存器R13_、R14_分别保存相分别保存相应模式下的堆栈指针、返回地址;堆栈指应模式下的堆栈指针、返回地址;堆栈指针可用来定义一个存储区域保存其它用户针可用来定义一个存储区域保存其它用户寄存器,在程序初始化时应该对各种模式寄存器,在程序初始化时应该对各种模式堆栈设置,便于随时使用。堆栈设置,便于随时使用。 FIQ模式还有额外的专用寄存器
88、模式还有额外的专用寄存器R8_fiqR12_fiq,使用这些寄存器可以加快快速,使用这些寄存器可以加快快速中断的处理速度。中断的处理速度。 5.异常返回异常返回(1)异常返回应执行的操作异常返回应执行的操作 异常处理完毕之后,异常处理完毕之后,ARM微处理器会执行微处理器会执行以下几步操作从异常返回:以下几步操作从异常返回: 将返回地址装入将返回地址装入PC 把连接寄存器把连接寄存器LR的值减的值减去相应的偏移量,然后送到去相应的偏移量,然后送到PC中。中。 恢复恢复CPSR的值的值 将将SPSR复制回复制回CPSR中。中。 清除中断屏蔽位清除中断屏蔽位 若在进入异常处理时设若在进入异常处理时
89、设置了中断禁止位,要在此清除。置了中断禁止位,要在此清除。 可以认为应用程序总是从复位异常处理可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不程序开始执行的,因此复位异常处理程序不需要返回。需要返回。(2)各种异常返回方法各种异常返回方法 FIQ中断返回中断返回不管是在不管是在ARM状态还是在状态还是在Thumb状态下进入状态下进入FIQ模式,模式,FIQ处理程序均可以执行以下指令从处理程序均可以执行以下指令从FIQ模式返回:模式返回:SUBS PC,R14-fiq ,#4 指令预取中止(指令预取中止( Abort )异常返回)异常返回 当指令预取访问存储器失败时,存储
90、器系统向当指令预取访问存储器失败时,存储器系统向ARM处处理器发出存储器中止理器发出存储器中止Abort信号,预取的指令被记为无信号,预取的指令被记为无效,但只有当处理器试图执行无效指令时,指令预取中止效,但只有当处理器试图执行无效指令时,指令预取中止异常才会发生,如果指令未被执行。异常才会发生,如果指令未被执行。 例如在指令流水线中发生了跳转,则预取指令中止不会例如在指令流水线中发生了跳转,则预取指令中止不会发生。发生。如果发生了指令预取中止异常,无论是在如果发生了指令预取中止异常,无论是在ARM状态还状态还是是Thumb状态,其返回指令为:状态,其返回指令为:SUBS PC, R14_ab
91、t, #4;重新执行被中止的指令;重新执行被中止的指令 数据中止(数据中止( Abort )异常返回)异常返回 如果发生了数据中止异常,无论是在如果发生了数据中止异常,无论是在ARM状态还是状态还是Thumb状态,其返回指令为:状态,其返回指令为:SUBS PC, R14_abt, #8 重新执行被中止的指令重新执行被中止的指令 软件中断指令软件中断指令SWI异常返回异常返回 用于进入管理模式,常用于请求用于进入管理模式,常用于请求执行特定的管理功能。软件中断处理执行特定的管理功能。软件中断处理程序执行以下指令可以从程序执行以下指令可以从SWI模式返模式返回,无论是在回,无论是在ARM状态还是
92、状态还是Thumb状状态:态: MOVS PC , R14_svc 以上指令恢复以上指令恢复PC从从R14_svc和和CPSR从从SPSR_svc的值,并返的值,并返回到回到SWI的下一条指令。的下一条指令。 未定义指令异常返回未定义指令异常返回 当当ARM处理器遇到不能处理的处理器遇到不能处理的指令时,会产生未定义指令异常。指令时,会产生未定义指令异常。采用这种机制,可以通过软件仿真采用这种机制,可以通过软件仿真扩展扩展ARM或或Thumb指令集。指令集。 处理器执行以下程序返回,无处理器执行以下程序返回,无论是在论是在ARM状态还是状态还是Thumb状态:状态:MOVS PC, R14_u
93、nd 以上指令恢复以上指令恢复PC从从R14_und和和CPSR从从SPSR_und的值,的值,并返回到未定义指令后的下一条指并返回到未定义指令后的下一条指令。令。ARM中断向量中断向量异常中断向量表说明:异常中断向量表说明: 存储器的前存储器的前8个字中除了地址个字中除了地址0x00000014之外,全部被用作异常矢量地址。之外,全部被用作异常矢量地址。 这是因为在早期的这是因为在早期的26位地址空间的位地址空间的ARM处理器中,曾使用地址处理器中,曾使用地址0x00000014来捕获落来捕获落在地址空间之外的在地址空间之外的load和和store存储器地址。存储器地址。 这些陷阱称为这些陷阱称为“地址异常地址异常”,因为,因为32位位的的ARM不会产生落在它的不会产生落在它的32位地址空间之外位地址空间之外的地址,所以地址异常在当前的体系结构中的地址,所以地址异常在当前的体系结构中没有作用,没有作用,0x00000014的矢量地址也就不的矢量地址也就不再使用了。再使用了。 ARM中断的优先级中断的优先级优先级优先级异异 常常1最高)最高)复位复位2数据中止数据中止3FIQ4IRQ5预取指令中止预取指令中止6最低)最低)未定义指令、未定义指令、SWI