1、2 2/47/47一一ARM体系结构体系结构1.ARM特点特点2.ARM体系结构版本体系结构版本3.ARM处理器处理器核核及处理器及处理器二二ARM编程模型编程模型1.处理器处理器:工作状态工作状态、运行模式运行模式、寄存器组织寄存器组织、异常异常存储器存储器:数据类型数据类型、存储格式、存储格式2.I/O组织:组织:存储器映存储器映像编址像编址yyyy-M-3 3/47/47第七章习题作业:作业:4 4、5 5 思考:思考:1 13 3第 七 章 结 束5 5/47/47 ARM是是Advanced RISC Machines的缩写,的缩写,该公司设计了大量该公司设计了大量高性能、高性能、廉
2、价、耗能低廉价、耗能低的的RISC(精精简指令集简指令集)处理器处理器;ARM公司的特点是公司的特点是只设只设计而不生产计而不生产。它将。它将技术授技术授权权给世界上许多著名的半给世界上许多著名的半导体、软件和导体、软件和OEM厂商,厂商,并提供服务。并提供服务。将技术授权给其它芯片厂商形成各具特色的ARM芯片6 6/47/47ARM的应用领域的应用领域工业控制领域工业控制领域 过程控制、电力控制、数控机床、过程控制、电力控制、数控机床、ABS无线通讯领域无线通讯领域 基站、带蓝牙基站、带蓝牙/定位等的手机定位等的手机/PDA、GPS网络应用网络应用 ADSL、路由器、交换机、路由器、交换机、
3、VoIP消费类电子产品消费类电子产品 DVD、机顶盒、游戏机、机顶盒、游戏机成像成像产品产品 数码相机、打印机、录像机数码相机、打印机、录像机安全产品安全产品 ATM机、机、POS机、考勤系统、机、考勤系统、SIM卡卡u 到目前为止,基于到目前为止,基于ARM技术的技术的微处理器应用微处理器应用约占据了约占据了32位嵌入式微处理器位嵌入式微处理器75以上的市场份额;以上的市场份额;u 全球全球80%的的GSM/3G手机、手机、99%的的CDMA手机以及绝大手机以及绝大多数多数PDA产品均采用产品均采用ARM体系的体系的嵌入式处理器嵌入式处理器,“掌掌上计算上计算”相关的所有领域皆为其所主宰;相
4、关的所有领域皆为其所主宰;7 7/47/47ARM体系结构的特点体系结构的特点RISC简单的结构使简单的结构使ARM内核非常小、功耗低、成本低内核非常小、功耗低、成本低统一和固定长度的统一和固定长度的指令域指令域,简化了指令的译码,便于指,简化了指令的译码,便于指令流水线设计令流水线设计采用采用装载装载/保存结构保存结构,数据处理操作只针对寄存器的内容,数据处理操作只针对寄存器的内容,而不直接对存储器进行操作而不直接对存储器进行操作支持支持Thumb(16 位)位)/ARM(32 位)位)双指令集双指令集,能很,能很好的兼容好的兼容8 位位/16 位器件位器件每条数据处理指令都对算术逻辑单元和
5、移位器控制,实每条数据处理指令都对算术逻辑单元和移位器控制,实现了现了ALU和移位器的最大利用和移位器的最大利用寻址方式寻址方式灵活简单,执行效率高灵活简单,执行效率高地址自动增加和减少寻址模式,地址自动增加和减少寻址模式,优化程序循环优化程序循环多寄存器装载和存储指令实现最大多寄存器装载和存储指令实现最大数据吞吐量数据吞吐量所有指令的所有指令的条件执行条件执行实现最快速的代码执行实现最快速的代码执行8 8/47/47ARM体系结构的版本体系结构的版本ARM架构自诞生至今已发展并定义架构自诞生至今已发展并定义了了V1到到V7七种不同的版本。七种不同的版本。V1版架构版架构 只在原型机只在原型机
6、ARM1中出现过中出现过1.支持基本的数据处理指令支持基本的数据处理指令(无乘法无乘法)2.支持字节、半字和字的支持字节、半字和字的LOAD/STORE指令指令3.支持转移指令,包括子程序调用及链接指令支持转移指令,包括子程序调用及链接指令4.支持软件中断指令支持软件中断指令SWI5.寻址空间位寻址空间位64MB(26位)位)9 9/47/47V2版架构版架构 已废弃不再使用已废弃不再使用1.支持乘法和乘加指令支持乘法和乘加指令2.支持协处理器操作指令支持协处理器操作指令3.支持基本的存储器与寄存器交换指令支持基本的存储器与寄存器交换指令SWP/SWPB4.支持快速中断模式支持快速中断模式V3
7、版架构版架构 已废弃不再使用已废弃不再使用1.寻址范围扩展到寻址范围扩展到4GB(32位)位)2.快速中断模式具有两个以上的分组寄存器快速中断模式具有两个以上的分组寄存器3.增加状态寄存器增加状态寄存器CPSR/SPSR,及从异常处理返回,及从异常处理返回的的MSR/MRS指令,便于异常的处理指令,便于异常的处理4.增加了中止和未定义两种处理器模式增加了中止和未定义两种处理器模式1010/47/47V4版架构版架构 目前应用最广的目前应用最广的ARM体系结构,体系结构,ARM7、ARM8、ARM9和和StrongARM都采用该版架构都采用该版架构1.增加了有增加了有/无符号的半字和有符号字节的
8、无符号的半字和有符号字节的Load/Store指令指令2.增加了增加了16位位Thumb指令集指令集3.完善了软件中断完善了软件中断SWI指令的功能指令的功能4.增加了处理器的特权模式增加了处理器的特权模式V5版架构版架构 ARM10和和XScale都采用该版架构都采用该版架构1.改进了改进了ARM/Thumb状态之间的切换效率;状态之间的切换效率;2.E-增强增强DSP指令集指令集,包括全部算法操作和包括全部算法操作和16位乘法操作;位乘法操作;3.J-支持新的支持新的JAVA,提供字节代码执行的加速功能提供字节代码执行的加速功能4.增加了带有链接和交换指令增加了带有链接和交换指令BLX5.
9、增加了计数前导零指令增加了计数前导零指令CLZ6.增加了软件断点指令增加了软件断点指令7.为协处理器增加更多可选择的指令为协处理器增加更多可选择的指令1111/47/47V6版架构版架构 ARM11处理器采用该版架构处理器采用该版架构1.增加了多媒体功能扩展增加了多媒体功能扩展SIMD,提高了嵌入式应,提高了嵌入式应用系统的音、视频处理能力用系统的音、视频处理能力2.改进了内存管理改进了内存管理3.改进了混合端与不对齐数据支持,使得小端系统改进了混合端与不对齐数据支持,使得小端系统支持大端数据支持大端数据V7版架构版架构 Cortex-A8处理器采用该版架构处理器采用该版架构 2005年发布,
10、采用年发布,采用Thumb-2技术。技术。1212/47/47ARM处理器核、处理器及芯片产品处理器核、处理器及芯片产品1313/47/47ARM720TARM922TI.MX21芯片芯片冯诺依曼冯诺依曼哈佛哈佛CPUMPUMCU1414/47/47项目项目ARM7ARM9ARM10ARM11流水线流水线3568典型频率典型频率MHz80150260335功耗功耗mW/MHz0.060.19(+cache)0.5(+cache)0.4(+cache)性能性能MIPS/MHz0.971.11.31.2架构架构冯冯 诺伊曼诺伊曼哈佛哈佛哈佛哈佛哈佛哈佛ARM处理器(核)比较处理器(核)比较1515
11、/47/471616/47/47ARM处理器(核)命名规则处理器(核)命名规则ARMxyzTDMIEJF-Sx系列号系列号 y存储管理存储管理/保护单元保护单元zCacheTThumb指令集指令集DJTAG调试器调试器M快速乘法器快速乘法器I嵌入式跟踪宏单元嵌入式跟踪宏单元E增强增强DSP指令指令JJazelle技术技术F向量浮点单元向量浮点单元S可综合的内核可综合的内核ARM7TDMI-SARM926EJ-SARM966ESARM1022E2:带带MMU4:带带MPU6:无无MMU和和MPU0:标准标准cache2:小小cache6:可变可变cache1717/47/47ARM系系列列微处理
12、器核微处理器核特点特点ARM7ARM7TDMI:整数处理核:整数处理核ARM7TDMI 处理器的可综处理器的可综合版本;合版本;ARM720T:带:带MMU的处理的处理器核心,支持操作系统;器核心,支持操作系统;ARM7EJ-S:带有:带有DSP和和Jazelle TM 技术,能够实现技术,能够实现Java加速功能加速功能l 冯冯 诺伊曼体系结构;诺伊曼体系结构;l ARMTDMI是目前应用最广的微处理器是目前应用最广的微处理器核核l ARM720T带有带有MMU和和8KB的指令数据的指令数据混合混合cache;l ARM7EJ-执行执行ARMv5TEJ指令,指令,5级流级流水线,提供水线,提
13、供Java加速指令,没有存储器加速指令,没有存储器保护。保护。ARM9ARM920T:带有独立的:带有独立的16KB 数据和指令数据和指令Cache;ARM922T:带有独立的:带有独立的8位位KB 数据和指令数据和指令Cache;ARM940T包括更小数据和包括更小数据和指令指令Cache和一个和一个MPUl 基于基于ARM9TDMI,带,带16位的位的Thumb指指令集,增强代码密度最多到令集,增强代码密度最多到35%;l 在在0.13m工艺下最高性能可达到工艺下最高性能可达到300MIPS(Dhrystone 2.1测试标准);测试标准);l 集成了数据和指令集成了数据和指令Chche;
14、l 32位位AMBA总线接口的总线接口的MMU支持;支持;l 可在可在0.18m、0.15m和和0.13m工艺的工艺的硅芯片上实现。硅芯片上实现。ARM处理器(核)简介处理器(核)简介1818/47/47ARM9EARM926EJ-S:Jazelle 技术,有技术,有MMU,可配置的数据和指令,可配置的数据和指令Cache,TCM接口;接口;ARM946E-S:可配置的数据和指:可配置的数据和指令令Cache及及TCM;ARM966E-S:针对要求高性能和:针对要求高性能和低功耗的可预测的指令执行时间的低功耗的可预测的指令执行时间的硬实时应用设计硬实时应用设计 ARM968E-S:最小、功耗最
15、小:最小、功耗最小的的 ARM9E系列处理器,针对嵌入系列处理器,针对嵌入式实时应用设计;式实时应用设计;lARM9E是针对微控制器、是针对微控制器、DSP和和Java的单的单处理器解决方案;处理器解决方案;lARM Jazelle 技术提供技术提供 8倍的倍的 Java 加速性加速性能能(ARM926EJ-S);l5-级整数流水线;级整数流水线;l在在0.13m工艺下最高性能可达到工艺下最高性能可达到300MIPS(Dhrystone 2.1测试标准);测试标准);l可选择的可选择的 向量浮点单元向量浮点单元VFP9 协处理器指令协处理器指令优秀海浮点性能,对于优秀海浮点性能,对于3D图形加
16、速和实时控图形加速和实时控制可达到制可达到 215MFLOPS。l高性能的高性能的AHB总线,带总线,带MMUl可在可在0.18m,0.15m,0.13m工艺的硅芯工艺的硅芯片上实现。片上实现。ARM10EARM1020E:带:带DSP指令集,在指令集,在片调试功能,独立的片调试功能,独立的32KB数据和数据和指令指令Cache,MMU支持;支持;ARM1022E:与:与ARM1020E相同,相同,只是独立的数据和指令只是独立的数据和指令Cache变为变为16KB;ARM1026EJ-S:同时具有:同时具有MPU和和MMU,可综合版本;,可综合版本;l带分支预测的带分支预测的6级整数流水线;级
17、整数流水线;l在在0.13m工艺下最高性能可达到工艺下最高性能可达到430MIPS(Dhrystone 2.1测试标准);测试标准);l对于对于3D图形运算和实时控制采用图形运算和实时控制采用VFP协处理协处理器,浮点运算性能最高可达器,浮点运算性能最高可达650MFLOPS;l双双64位位AMBA总线接口和总线接口和64位内部总路线接位内部总路线接口;口;l优化的缓存结构提高了处理器访问低速存储优化的缓存结构提高了处理器访问低速存储器的性能;器的性能;l可在可在0.18m,0.15m,0.13m工艺的硅芯工艺的硅芯片上实现片上实现1919/47/47ARM11ARM11 MPCore:可综合
18、:可综合的多处理器核,的多处理器核,1至至4个处理个处理器可配置;器可配置;ARM1136J(F)-S:可配置:可配置的数据和指令的数据和指令Cache,可提,可提供供1.9位的位的MPEG4编码加速编码加速功能;功能;ARM1156T2(F)-S:带集成:带集成浮点协处理器,带内存保护浮点协处理器,带内存保护单元单元MPU;ARM1176JZ(F)-S:带针对:带针对CPU和系统安全架构扩展的和系统安全架构扩展的TrustZone技术。技术。l增强的增强的Thumb、Jazelle、DSP扩展扩展支持;支持;l带片上和系统安全带片上和系统安全TrustZone 技术支技术支持持;l在在0.1
19、3m工艺下最高可达到工艺下最高可达到550MHz;lMPCore在在0.13m工艺下最高性能可工艺下最高性能可达到达到740MIPS(Dhrystone 2.1测试标测试标准);准);l支持多媒体指令支持多媒体指令SIMD;l采用三种电源模式:全速采用三种电源模式:全速/待命待命/休眠休眠l集成集成DMA的的TCMl低功耗、高性能。低功耗、高性能。SecurCoreSC100:第一个:第一个32位安全处位安全处理器;、理器;、SC110:在:在SC100上增加密钥协处理器;上增加密钥协处理器;SC200:带:带Jazelle技术的技术的高级安全处理器;高级安全处理器;SC210:在:在SC20
20、0上增加密上增加密钥协处理器钥协处理器lSecurCore是专门为智能卡、安全是专门为智能卡、安全IC提供的提供的32位安全处理器,位安全处理器,为电子商务、为电子商务、银行、网络、移动多媒体、公共交通提银行、网络、移动多媒体、公共交通提供安全解决方案;供安全解决方案;l体积小、功耗低,代码压缩密度高;体积小、功耗低,代码压缩密度高;l为快速增长的为快速增长的Java卡平台提供卡平台提供Java加速功能;加速功能;2020/47/47Cortex Cortex-A:面向应用的:面向应用的微处理器,针对复杂操微处理器,针对复杂操作系统和应用程序设计;作系统和应用程序设计;Cortex-R:针对实
21、时系:针对实时系统的嵌入式处理器;统的嵌入式处理器;Cortex-M:针对成本敏:针对成本敏感应用优化的深度嵌入感应用优化的深度嵌入式处理器;式处理器;l2004年发布,提供增强的媒年发布,提供增强的媒体和数字处理能力,增加了系体和数字处理能力,增加了系统性能;统性能;l支持支持ARM、Thumb、Thumb-2指令集;指令集;lThumb-2指令集提供了更高指令集提供了更高的代码存储密度,进一步降低的代码存储密度,进一步降低成本;成本;Intel系系列列(Marvell)StrongARM:ARMv4体体系系XScale:ARMv5TE体系,体系,增加增加MMX指令指令lStrongARM主
22、要应用于手持设备和主要应用于手持设备和PDA,5级流水线,具有独立的数据级流水线,具有独立的数据和指令和指令Cache,不支持,不支持Thumb指令集,指令集,目前已停产;目前已停产;lXScale是目前是目前Intel公司主推的高性公司主推的高性能嵌入式处理器,分通用处理器、网能嵌入式处理器,分通用处理器、网络处理器和络处理器和I/O处理器三类。其中通用处理器三类。其中通用处理器有处理器有PXA25x、PXA26x、PXA27x三个系列,被广泛应用于智三个系列,被广泛应用于智能手机、能手机、PDA领域。领域。2121/47/47ARM处理器的工作状态处理器的工作状态ARM状态状态 执行执行3
23、2位字方式的位字方式的ARM指令指令Thumb状态状态 执行执行16位半字方式的位半字方式的Thumb指令指令Jazelle状态状态 执行可变长的、以字节为单位的执行可变长的、以字节为单位的Jazelle(Java)指令)指令注意:注意:1.1.处理器处理器复位复位后处于后处于ARMARM状态;状态;2.2.处理器处理器异常处理异常处理时进入时进入ARMARM状态;状态;3.3.若处理器在若处理器在ThumbThumb状态进入异常,则状态进入异常,则异常返回异常返回仍然自动转换到仍然自动转换到ThumbThumb状态状态;4.4.状态切换状态切换不影响工作模式及寄存器不影响工作模式及寄存器内容
24、。内容。2222/47/47ARM处理器工作状态的切换处理器工作状态的切换 使用跳转指令使用跳转指令BX可将处理器内核在可将处理器内核在ARM状状态态和和Thumb状态状态之间进行切换。之间进行切换。;从从Arm状态切换到状态切换到Thumb状态状态 LDR R0,=Lable+1 BX R0;从从Thumb状态切换到状态切换到ARM状态状态 LDR R0,=Lable BX R0 地址最低位为地址最低位为1 1,表示,表示切换到切换到ThumbThumb状态状态 地址最低位为地址最低位为0 0,表示,表示切换到切换到ARMARM状态状态跳转地址标号跳转地址标号,最低最低2bit2bit为为0
25、 02323/47/47处理器模式处理器模式说明说明备注备注 用户用户(usr)正常程序执行模式正常程序执行模式 不能直接切换到其它模式不能直接切换到其它模式 系统系统(sys)运行操作系统的特运行操作系统的特权任务权任务与用户模式类似,但具有可以与用户模式类似,但具有可以直接切换到其它模式等特权直接切换到其它模式等特权 快中断快中断(fiq)支持高速数据传输支持高速数据传输及通道处理及通道处理FIQ异常响应时进入此模式异常响应时进入此模式 中断中断(irq)用于通用中断处理用于通用中断处理 IRQ异常响应时进入此模式异常响应时进入此模式 管理管理(svc)操作系统保护模式操作系统保护模式系统
26、复位和软件中断响应时进系统复位和软件中断响应时进入此模式入此模式 中止中止(abt)用于支持虚拟内存用于支持虚拟内存和和/或存储器保护或存储器保护在在ARM7TDMI没有大用处没有大用处 未定义未定义(und)支持硬件协处理器支持硬件协处理器的软件仿真的软件仿真未定义指令异常响应时进入此未定义指令异常响应时进入此模式模式ARM处理器的运行模式处理器的运行模式 除用户模式外,其它模式均为除用户模式外,其它模式均为特权模式特权模式。ARMARM内部寄存器和一些内部寄存器和一些片内外设在硬件设计上只允许(或片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。者可选为只允许)特权模式下访问。
27、此外,特权模式可以自由的切换处此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切理器模式,而用户模式不能直接切换到别的模式。换到别的模式。未定义未定义(und)中止中止(abt)管理管理(svc)中断中断(irq)快中断快中断(fiq)系统系统(sys)这五种模式称为这五种模式称为异常模式异常模式。它们。它们除了可以通过程序切换进入外,也可除了可以通过程序切换进入外,也可以由特定的异常进入。每种异常模式以由特定的异常进入。每种异常模式都有一些独立的寄存器,以避免异常都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。退出时用户模式的状态不可靠。这两种模式都不能由异常进入,而且
28、它们这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。使用完全相同的寄存器组。系统模式是特权模式,操作系统在该模式系统模式是特权模式,操作系统在该模式下访问用户模式的寄存器就比较方便,而且操下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问作系统的一些特权任务可以使用这个模式访问一些受控的资源。一些受控的资源。系统系统(sys)用户用户(usr)2424/47/47寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存
29、器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄状态寄存器存器CPSRCPSRSPSR无无SPSR_svc SPS
30、R_abtSPSR_und SPSR_irq SPSR_fiq无无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用户用户无无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系统系统SPSR_svcCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R
31、4R3R2R1R0未定义未定义SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中断中断SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中断快中断ARM状态各模式下的寄存器组织状态各模式下的寄存器组织R0R0R7R7为为不分组寄存器不分组寄存器注意:在异常处理中进行模注意:在异常处理中进行模式切换时,可能会破坏寄存式切换时,可能会破坏寄存器中的数据,需要保护;器中的数据,需要保护;R14_fiqR14_irqR14_un
32、dR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R8R8R14R14为为分组寄存器分组寄存器。不同处理器模式下它们对不同处理器模式下它们对应不同的物理寄存器。应不同的物理寄存器。R8 R8R12R12有一个分组专用于有一个分组专用于FIQFIQ模式。这样在发生模式。这样在发生FIQFIQ中断中断后,可以加速后,可以加速FIQFIQ的处理速度。的处理速度。R14R14为为链接寄存器链接寄存器LRLR,具有两个特殊功能:,具有两个特殊功能:用于
33、保存子程序返回地址;用于保存子程序返回地址;根据不同的异常模式保存为异常返回地根据不同的异常模式保存为异常返回地址(有些异常有一个小的固定偏移量)。址(有些异常有一个小的固定偏移量)。2525/47/47Lable程序程序1程序程序2R14R14(LR)寄存器与子程序调用BL Lable地址地址A?MOV PC,LRR14(地址地址A)Lable?1.1.程序程序1 1执行过程中执行过程中调用程序调用程序2 2;2.2.程序跳转至标号程序跳转至标号LableLable,执行程序,执行程序2 2。3.3.同时硬件将同时硬件将“BL BL LableLable”的下一条指令的下一条指令所在地址存入
34、所在地址存入R14R14(LRLR););3.3.程序程序2 2执行完后,将执行完后,将R14R14 (LRLR)寄存器的内容放入)寄存器的内容放入PCPC,返回程序,返回程序1 1继续执行;继续执行;2626/47/471.1.异常返回地址的处理与子程序调用类似,都是由硬件异常返回地址的处理与子程序调用类似,都是由硬件自动完成。区别在于有些异常有一个小自动完成。区别在于有些异常有一个小常量偏移常量偏移。2.2.当发生异常嵌套时,这些异常之间可能会发生冲突。当发生异常嵌套时,这些异常之间可能会发生冲突。如用户模式下发生如用户模式下发生IRQIRQ中断嵌套中断嵌套时,时,R14_irqR14_i
35、rq中低级中中低级中断返回主程序的地址将被高级中断的返回地址所覆盖;断返回主程序的地址将被高级中断的返回地址所覆盖;R14(LR)寄存器与异常处理R14R14_irq用户模式下的程序用户模式下的程序0IRQ模式下的程序模式下的程序1指令指令m+1.指令指令m+n指令指令m地址地址A地址地址A未被破坏未被破坏IRQ模式下的程序模式下的程序2return指令指令j+1.指令指令j+k指令指令j地址地址B地址地址BR14_irq 被破坏被破坏returnreturn1.1.执行用户模式执行用户模式下的程序下的程序0 0;2.2.发生发生IRQIRQ中断中断后,硬件将带后,硬件将带偏移的返回地偏移的返
36、回地址存入址存入IRQIRQ模式模式下的下的R14_irqR14_irq寄寄存器,存器,用户模用户模式下的式下的R14R14没有没有被破坏被破坏;3.IRQ3.IRQ服务程服务程序序1 1执行完后,执行完后,可将可将R14_irqR14_irq寄寄存器的内容减存器的内容减去偏移量后存去偏移量后存入入PCPC,返回之,返回之前被中断的程前被中断的程序;序;4.4.如果在如果在IRQIRQ处理程序中打处理程序中打开开IRQIRQ中断,并中断,并且再次发生且再次发生IRQIRQ中断;中断;5.5.硬件将返回硬件将返回地址保存在地址保存在R14_irqR14_irq寄存器寄存器中,中,原来保存原来保存
37、的返回地址信的返回地址信息将被覆盖,息将被覆盖,造成错误造成错误;6.6.在程序在程序2 2返回返回到程序到程序1 1,然后,然后在返回到用户在返回到用户模式下被中断模式下被中断的程序时,发的程序时,发生错误,将不生错误,将不能正确返回;能正确返回;解决办法是确解决办法是确保保R14R14的对应版本的对应版本在发生中断嵌套在发生中断嵌套时不再保存任何时不再保存任何有意义的值(将有意义的值(将R14R14入栈),或者入栈),或者切换到其它处理切换到其它处理器模式下。器模式下。2727/47/47R15(PC)寄存器的读操作1.1.ARMARM指令以字为单位,因此指令以字为单位,因此R15R15的
38、的最低两位总是为最低两位总是为0 0;2.2.R15R15的值是处理器的值是处理器正在取指的指令地址正在取指的指令地址。因为有流水线,它与。因为有流水线,它与当前正在执行指令的地址之间存在一个当前正在执行指令的地址之间存在一个偏移偏移(对于确定的(对于确定的ARMARM芯片该值为常量)。芯片该值为常量)。3.3.当使用指令当使用指令STR/STMSTR/STM保存保存R15R15时,不同芯片中时,不同芯片中(可能是三级流水可能是三级流水的的ARM7ARM7或五级流水的或五级流水的ARM9)PCARM9)PC偏移量可能是偏移量可能是8 8或或1212,因此需,因此需事先计算出该芯片的事先计算出该
39、芯片的PCPC偏移量偏移量。MOV R0,PC?PCPCPC-4PC-4PC-8PC-8正在执行正在执行正在译码正在译码正在取指正在取指流水线、流水线、ARM状态下状态下指令地址指令地址程序代码程序代码SUB R1,PC,#4 ;将将正在译码的指令的地址正在译码的指令的地址保存在保存在R1中中STR PC,R0 ;保存当前保存当前PC值值=正在执行的指令的地址正在执行的指令的地址+偏移量偏移量LDR R0,R0 ;然后重装然后重装SUB R0,R0,R1 ;计算偏移量计算偏移量是同一条指令是同一条指令2828/47/471.1.写入写入R15 R15 的值被当作指令地址,程序将从这个的值被当作
40、指令地址,程序将从这个地址处继续执行(相当于执行地址处继续执行(相当于执行无条件跳转无条件跳转););2.2.由于由于ARMARM指令以字为边界,因此写入指令以字为边界,因此写入R15R15的值的值最低两位通常为最低两位通常为0b000b00。具体的规则取决于内核。具体的规则取决于内核结构的版本:结构的版本:在在V3V3及以下版本中,写入及以下版本中,写入R15R15的值的最低两位被忽略,的值的最低两位被忽略,因此跳转地址由指令的实际目标地址(写入因此跳转地址由指令的实际目标地址(写入R15R15的值)的值)和和0 xFFFFFFFC0 xFFFFFFFC相与得到;相与得到;在在V4V4及以上
41、版本中,写入及以上版本中,写入R15R15的值的最低两位如果不的值的最低两位如果不为为0 0,结果将不可预测。,结果将不可预测。R15(PC)寄存器的写操作2929/47/47NZCV IM0M1M2M3M4TF.31 30 29 28 27 26 8 7 6 5 4 3 2 1 0程序状态寄存器程序状态寄存器PSRPSR条件代码标志条件代码标志保留保留控制位控制位溢出溢出oVerflow进进/借位扩展借位扩展 Carry零零 Zero负负Negative禁止禁止I IRQ禁止禁止 FIQThumb状态状态模式模式 ModeNZCVIM0M1M2M3M4TF一般指令带一般指令带S后缀后缀时,执
42、行结果会影响条件代码标志;但有时,执行结果会影响条件代码标志;但有一些指令的执行总是会影响条件代码标志。一些指令的执行总是会影响条件代码标志。所有所有ARM指令都可由指令都可由条件域条件域来指定是否需要执行,而来指定是否需要执行,而Thumb指令中只有分支指令可按条件执行。指令中只有分支指令可按条件执行。每个异常模式还有每个异常模式还有SPSR用于保存在异常发生之前的用于保存在异常发生之前的CPSR。CPSR和和SPSR可通过特殊指令(可通过特殊指令(MRS/MSR)进行访问。)进行访问。3030/47/47M4:0模式模式可见的可见的Thumb状态寄存器状态寄存器可见的可见的ARM状态寄存器
43、状态寄存器10000用户用户R0R7,SP,LR,PC,CPSRR0R14,PC,CPSR 10001快中断快中断R0R7,SP_fiq,LR_fiq,PC,CPSR,SPSR_fiq R0R7,R8_fiqR14_fiq,PC,CPSR,SPSR_fiq 10010中断中断R0R7,SP_irq,LR_irq,PC,CPSR,SPSR_fiq R0R12,R13_irq,R14_irq,PC,CPSR,SPSR_irq 10011管理管理R0R7,SP_svc,LR_svc,PC,CPSR,SPSR_svc R0R12,R13_svc,R14_svc,PC,CPSR,SPSR_svc 101
44、11中止中止R0R7,SP_abt,LR_abt,PC,CPSR,SPSR_abt R0R12,R13_abt,R14_abt,PC,CPSR,SPSR_abt 11011未定义未定义R0R7,SP_und,LR_und,PC,CPSR,SPSR_und R0R12,R13_und,R14_und,PC,CPSR,SPSR_und11111系统系统R0R7,SP,LR,PC,CPSR R0R14,PC,CPSR 程序状态寄存器程序状态寄存器CPSR模式位设置表模式位设置表3131/47/47ThumbThumb状态与状态与ARMARM状态的寄存器映射关系状态的寄存器映射关系 R1 R2 R3
45、R4 R5 T humb R6 R7(C PSR)(SPSR)R1 R2 R3 R4 R5 A R M R6 R7 R8(C PSR)(SPSR)R9 R10 R11 R12 R0 R0 状态 状态 堆栈指针(SP)连接寄存器(LR)程序计数器(PC)当前程序状态寄存器 被保存程序状态寄存器 堆栈指针(R13)连接寄存器(R14)程序计数器(R15)当前程序状态寄存器 被保存程序状态寄存器 R8 R9 R10 R11 R12 堆栈指针(R13)连接寄存器(R14)程序计数器(R15)低低寄寄存存器器高高寄寄存存器器 Thumb状态下高寄存器(状态下高寄存器(R8R15)不是标准寄存器集的一部)
46、不是标准寄存器集的一部分,但可以使用分,但可以使用MOV、CMP和和ADD指令对高寄存器操作。指令对高寄存器操作。3232/47/47异常异常exception 异常指正常执行的程序流因故被暂时中止;异常指正常执行的程序流因故被暂时中止;ARM支持支持7种异常类型、种异常类型、5种异常模式;种异常模式;若同时发生多个异常,将按优先级顺序处理;若同时发生多个异常,将按优先级顺序处理;异常类型异常类型对应异常模式对应异常模式优先级优先级复位复位Supervisor1(最高优先级)(最高优先级)数据中止数据中止Abort2FIQFIQ3IRQIRQ4指令预取中止指令预取中止Abort5未定义指令未定
47、义指令Undefined6SWISupervisor7(最低优先级)(最低优先级)优先级降低优先级降低3333/47/47复位异常复位异常Reset当当nRESET引脚信号变为低电平时,引脚信号变为低电平时,ARM立立即停止执行当前指令即停止执行当前指令,产生复位异常;,产生复位异常;当当nRESET再次变为高电平后,再次变为高电平后,ARM处理器处理器执行下列操作:执行下列操作:1.强制强制CPSR中的中的M4:0变为变为b10011,进入,进入管理模式;管理模式;2.置位置位CPSR中的中的I和和F位;位;3.清零清零CPSR中的中的T位;位;4.强制强制PC从地址从地址0 x00开始取第
48、一条指令;开始取第一条指令;5.返回到返回到ARM状态状态并恢复执行;并恢复执行;3434/47/47中止异常中止异常Abort中止异常包括中止异常包括指令预取中止和数据指令预取中止和数据 中止中止;预取中止时,预取中止时,ARMARM将预取的指令标记为将预取的指令标记为无效,但在指令到达流水线的执行阶段时无效,但在指令到达流水线的执行阶段时才进入异常。如果指令在流水线中因为发才进入异常。如果指令在流水线中因为发生分支而没有被执行,中止将不会发生。生分支而没有被执行,中止将不会发生。数据中止时,数据访问被记为无效,中止数据中止时,数据访问被记为无效,中止程序应根据中止原因作出处理,使数据可程序
49、应根据中止原因作出处理,使数据可以被访问。以被访问。中止异常表示对存储器的访问失败,这种机中止异常表示对存储器的访问失败,这种机制实际保证了制实际保证了虚拟存储技术虚拟存储技术的实现。的实现。3535/47/47中断异常(中断异常(IRQ、FIQ)中断请求(中断请求(IRQIRQ)是一个由)是一个由nIRQnIRQ引脚信号低引脚信号低电平所产生的电平所产生的正常中断正常中断(nIRQnIRQ是内核信号,是内核信号,对用户不可见)。对用户不可见)。IRQIRQ的优先级低于的优先级低于FIQFIQ,对,对于于FIQFIQ异常它是被屏蔽的。在一个特权模式中异常它是被屏蔽的。在一个特权模式中可通过置位
50、可通过置位CPSRCPSR中的中的I I 位来禁止位来禁止IRQIRQ。快速中断请求快速中断请求(FIQ)(FIQ)适用于对一个突发事件的适用于对一个突发事件的快速响应。快速响应。ARMARM状态中状态中FIQFIQ模式多设置了模式多设置了7 7个个分组寄存器(分组寄存器(R8_fiqR14_fiqR8_fiqR14_fiq)可)可加速上下文加速上下文切换的速度切换的速度。在一个特权模式中可通过置位。在一个特权模式中可通过置位CPSRCPSR中的中的F F位来禁止位来禁止FIQFIQ异常。异常。3636/47/47未定义指令异常未定义指令异常 当当ARMARM处理器遇到一条自己和处理器遇到一条