第2章 ARM体系结构_第1页
第2章 ARM体系结构_第2页
第2章 ARM体系结构_第3页
第2章 ARM体系结构_第4页
第2章 ARM体系结构_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式系统与开发第2章ARM体系结构2023/2/5中国矿业大学——信电学院——张林22023/2/5中国矿业大学——信电学院——张林22023/2/5中国矿业大学——信电学院——张林2本章内容ARM微处理器结构ARM体系结构简介ARM微处理器的寄存器结构ARM微处理器的异常处理ARM的存储器结构ARM微处理器指令系统ARM微处理器的接口嵌入式处理器体系结构计算机体系结构(ComputerArchitecture)是程序员所看到的计算机的属性,即概念性结构与功能特性通常所说的计算机体系结构主要指机器语言级机器的系统结构计算机体系结构-8种属性机内数据表示:硬件能直接辨识和操作的数据类型和格式寻址方式:最小可寻址单位、寻址方式的种类、地址运算寄存器组织:操作寄存器、变址寄存器、控制寄存器及专用寄存器的定义、数量和使用规则指令系统:机器指令的操作类型、格式、指令间排序和控制机构存储系统:最小编址单位、编址方式、主存容量、最大可编址空间中断机构:中断类型、中断级别,以及中断响应方式等输入输出结构:输入输出的连接方式、处理机/存储器与输入输出设备间的数据交换方式、数据交换过程的控制信息保护:信息保护方式、硬件信息保护机制。常见的嵌入式处理器体系结构ARM、POWERPC、MIPS、X86、SH2023/2/5中国矿业大学——信电学院——张林32023/2/5中国矿业大学——信电学院——张林42023/2/5中国矿业大学——信电学院——张林5什么是ARMARM(AdvancedRISCMachines)是一类微处理器的通称1985年第一个ARM原型在英国剑桥诞生目前有多个版本,大多数ARM核心的处理器用在嵌入式领域ARM(AdvancedRISCMachinesLimited)是一家公司的名字成立于1990年11月,前身为Acorn计算机公司主要设计ARM系列RISC处理器内核授权ARM内核给生产和销售半导体的合作伙伴ARM公司不生产芯片IP(IntelligenceProperty)另外也提供基于ARM架构的开发设计技术软件工具,评估板,调试工具,应用软件总线架构,外围设备单元等2023/2/5中国矿业大学——信电学院——张林6ARM的业务模型公司的特点是只设计芯片,不生产芯片提供ARM技术知识产权(IP)核,将技术授权给世界上许多著名的半导体、软体和OEM厂商,并提供服务IP授权费ARM创造和设计IP产品(芯片)Partner把ARMIP和其他IP集成进产品(如芯片等)ARMPartnerOEMCustomer版权费单价OEM用来自ARMPartner的芯片设计制造最终用户产品业务拓展/市场格局2023/2/5中国矿业大学——信电学院——张林7ARMPartnershipModel2023/2/5中国矿业大学——信电学院——张林8ARM体系结构的特点支持Thumb/ARM双指令集;指令执行采用3级/5级流水线;带有指令和数据cache,大量使用寄存器,指令执行速度更快;支持大端格式和小端格式两种方法储字数据;支持字节、半字和字3种数据类型;支持七种处理器模式;嵌入了在线仿真ICE-RT逻辑;具有片上总线AMBA(AdvancedMicrocontrollerBusArchitecture);采用存储器映像I/O的方式;具有协处理器接口;采用低电源电压;体积小,成本低,性能高。2023/2/5中国矿业大学——信电学院——张林9ARM体系结构组成32位的ALU37个32位寄存器组织32*8位乘法器32*32位桶形移位寄存器指令译码及控制逻辑指令流水线数据/地址寄存器2023/2/5中国矿业大学——信电学院——张林102023/2/5中国矿业大学——信电学院——张林102023/2/5中国矿业大学——信电学院——张林10本章内容ARM微处理器结构ARM体系结构简介ARM微处理器的寄存器结构ARM微处理器的异常处理ARM的存储器结构ARM微处理器指令系统ARM微处理器的接口ARM微处理器结构ARM体系结构的版本1ARM的微处理器系列22023/2/5中国矿业大学——信电学院——张林12ARM体系结构版本ARM体系结构一直在完善和发展为了清楚的表达每个ARM应用实例所使用的指令集,ARM公司定义了8种主要的ARM体系结构版本,以版本号V1~V8表示V1版只有26位的寻址空间,没有商业化;基本的数据处理指令(不包括乘法);字节、字和半字加载/存储指令;具有分支指令,包括在子程序调用中使用的分支链接指令;有操作系统调所需的软件中断指令2023/2/5中国矿业大学——信电学院——张林13ARM体系结构版本V2ARM3芯片采用了版本2a,是第一片采用片上Cache的ARM处理器26位寻址空间具有乘法和乘加指令;支持协处理器;快速中断模式中使用两个以上的分组寄存器;具有原子性加载/存储指令SWP和SWPB。V3寻址范围扩展到32位,具有独立的程序空间具有乘法和乘加指令;支持协处理器;快速中断模式中具有的两个以上的分组寄存器;具有原子性加载/存储指令SWP和SWPB。2023/2/5中国矿业大学——信电学院——张林14ARM体系结构版本V4不再兼容26位体系结构并明确了哪些指令会引起未定义指令异常发生半字加载/存储指令;字节和半字的加载和符号扩展指令;具有可以转换到Thumb状态的指令;增加了用户模式寄存器的新的特权处理器模式。V5对V4版本的体系结构进行扩展并增加了指令改进了ARM/Thumb状态之间的切换效率;E—增强型DSP指令集,包括全部算法操作和16位乘法操作;J—支持的JAVA增强,提供字节代码执行的硬件和优化软件加速功能。2023/2/5中国矿业大学——信电学院——张林15ARM体系结构版本V6于2001年发布35%代码压缩率的THUMB;DSP扩充:高性能定点DSP功能;JazelleTM:Java性能优化,可提高8倍;Media扩充:音、视频性能优化,可提高4倍V7采用Thumb-2有A、R、M三种类型2023/2/5中国矿业大学——信电学院——张林16ARM体系结构版本V8版将64位架构支持引入ARM架构中64位通用寄存器、SP(堆栈指针)和PC64位数据处理和扩展的虚拟寻址两种主要执行状态:AArch64-64位执行状态,包括该状态的异常模型、内存模型、程序员模型和指令集支持AArch32-32位执行状态,包括该状态的异常模型、内存模型、程序员模型和指令集支持2023/2/5中国矿业大学——信电学院——张林17ARM体系结构版本与处理器家族2023/2/5中国矿业大学——信电学院——张林18ARM体系结构版本与处理器家族ArchitectureFamilyARMv1ARM1ARMv2ARM2,ARM3,AmberARMv3ARM6,ARM7ARMv4StrongARM,ARM7TDMI,ARM8,ARM9TDMI,FA526ARMv5ARM7EJ,ARM9E,ARM10E,XScale,FA626TE,Feroceon,PJ1/MohawkARMv6ARM11ARMv6-MARMCortex-M0,ARMCortex-M0+,ARMCortex-M1ARMv7ARMCortex-A5,ARMCortex-A7,ARMCortex-A8,ARMCortex-A9,ARMCortex-A15,ARMCortex-R4,ARMCortex-R5,ARMCortex-R7,Scorpion,Krait,PJ4/Sheeva,SwiftARMv7-MARMCortex-M3,ARMCortex-M4ARMv8-AARMCortex-A53,ARMCortex-A57,X-GeneARM微处理器结构ARM体系结构的版本1ARM的微处理器系列22023/2/5中国矿业大学——信电学院——张林20ARM7微处理器系列ARM7系列是低功耗的32位RISC处理器,最适合用于对价位和功耗要求较高的消费类应用具有嵌入式ICE-RT逻辑,调试开发方便;极低的功耗,适合对功耗要求较高的应用,如便携式产品;能够提供0.9MIPS/MHz的三级流水线结构;兼容16位的Thumb指令集,代码密度高;对操作系统的支持广泛,如WindowsCE、Linux、PalmOS等;指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容,便于用户的产品升级换代;主频最高可达130M,高速的运算处理能力能胜任绝大多数的复杂应用。主要应用领域:工业控制、Internet设备、网络和调制解调器设备、移动电话等多种多媒体等2023/2/5中国矿业大学——信电学院——张林21ARM系列微处理器核特点ARM7ARM7TDMI-s:整数处理核ARM7TDMI处理器的可综合版本;ARM720T:带MMU的处理器核心,支持操作系统;ARM7EJ-S:带有DSP和JazelleTM

技术,能够实现Java加速功能冯诺伊曼体系结构;ARMTDMI是目前应用最广的微处理器核ARM720T带有MMU和8KB的指令数据混合cache;ARM7EJ-执行ARMv5TEJ指令,5级流水线,提供Java加速指令,没有存储器保护。ARM9ARM920T:带有独立的16KB数据和指令Cache;ARM922T:带有独立的8KB数据和指令Cache;ARM940T–包括更小数据和指令Cache和一个MPU基于ARM9TDMI,带16位的Thumb指令集,增强代码密度最多到35%;在0.13µm工艺下最高性能可达到300MIPS(Dhrystone2.1测试标准);集成了数据和指令Chche;32位AMBA总线接口的MMU支持;可在0.18µm、0.15µm和0.13µm工艺的硅芯片上实现。ARM处理器结构2023/2/5中国矿业大学——信电学院——张林22ARM7

TDMI的含义ARM7TDMI-SARM7TDMI的可综合(synthesizable)版本(软核),对应用工程师来说其编程模型与ARM7TDMI一致;嵌入式Embedded-ICE,支持片上断点和调试点;支持64位乘法;支持片上调试Debug;支持高密度16位的压缩Thumb指令集2023/2/5中国矿业大学——信电学院——张林23ARM处理器核命名含义标志含义说明T支持Thumb指令集Thumb指令集版本1:ARMv4TThumb指令集版本2:ARMv5TThumb-2:ARMv6TD片上调试M支持长乘法32位乘32位得到64位,32位的乘加得到64位IEmbeddedICEEDSP指令增加了DSP算法处理器指令:16位乘加指令,饱和的带符号数的加减法,双字数据操作,cache预取指令JJava加速器Jazelle提高java代码的运行速度S可综合提供VHDL或Verilog语言设计文件2023/2/5中国矿业大学——信电学院——张林24ARM9EARM926EJ-S:Jazelle技术,有MMU,可配置的数据和指令Cache,TCM接口;ARM946E-S:可配置的数据和指令Cache及TCM;ARM966E-S:针对要求高性能和低功耗的可预测的指令执行时间的硬实时应用设计ARM968E-S:最小、功耗最小的

ARM9E系列处理器,针对嵌入式实时应用设计;ARM9E是针对微控制器、DSP和Java的单处理器解决方案;ARM

Jazelle

技术提供8倍的Java加速性能(ARM926EJ-S);5-级整数流水线;在0.13µm工艺下最高性能可达到300MIPS(Dhrystone2.1测试标准);可选择的

向量浮点单元VFP9协处理器指令优秀海浮点性能,对于3D图形加速和实时控制可达到

215MFLOPS。高性能的AHB总线,带MMU可在0.18µm,0.15µm,0.13µm工艺的硅芯片上实现。ARM10EARM1020E:带DSP指令集,在片调试功能,独立的32KB数据和指令Cache,MMU支持;ARM1022E:与ARM1020E相同,只是独立的数据和指令Cache变为16KB;ARM1026EJ-S:同时具有MPU和MMU,可综合版本;带分支预测的6级整数流水线;在0.13µm工艺下最高性能可达到430MIPS(Dhrystone2.1测试标准);对于3D图形运算和实时控制采用VFP协处理器,浮点运算性能最高可达650MFLOPS;双64位AMBA总线接口和64位内部总路线接口;优化的缓存结构提高了处理器访问低速存储器的性能;可在0.18µm,0.15µm,0.13µm工艺的硅芯片上实现ARM处理器结构2023/2/5中国矿业大学——信电学院——张林25ARM11ARM11MPCore:可综合的多处理器核,1至4个处理器可配置;ARM1136J(F)-S:可配置的数据和指令Cache,可提供1.9倍的MPEG4编码加速功能;ARM1156T2(F)-S:带集成浮点协处理器,带内存保护单元MPU

;ARM1176JZ(F)-S:带针对CPU和系统安全架构扩展的TrustZone技术。增强的Thumb、Jazelle、DSP扩展支持;带片上和系统安全TrustZone技术支持;在0.13µm工艺下最高可达到550MHz;MPCore在0.13µm工艺下最高性能可达到740MIPS(Dhrystone2.1测试标准);支持多媒体指令SIMD;采用三种电源模式:全速/待命/休眠集成DMA的TCM低功耗、高性能。SecurCoreSC100:第一个32位安全处理器;、SC110:在SC100上增加密钥协处理器;SC200:带Jazelle技术的高级安全处理器;SC210:在SC200上增加密钥协处理器SecurCore是专门为智能卡、安全IC提供的32位安全处理器,为电子商务、银行、网络、移动多媒体、公共交通提供安全解决方案;体积小、功耗低,代码压缩密度高;为快速增长的Java卡平台提供Java加速功能;ARM处理器结构2023/2/5中国矿业大学——信电学院——张林26CortexCortex-A:面向应用的微处理器,针对复杂操作系统和应用程序设计;Cortex-R:针对实时系统的嵌入式处理器;Cortex-M:针对成本敏感应用优化的深度嵌入式处理器;2004年发布,提供增强的媒体和数字处理能力,增加了系统性能;支持ARM、Thumb、Thumb-2指令集;Thumb-2指令集提供了更高的代码存储密度,进一步降低成本;Intel系列StrongARM:ARMv4体系XScale:ARMv5TE体系,增加MMX指令StrongARM主要应用于手持设备和PDA,5级流水线,具有独立的数据和指令Cache,不支持Thumb指令集,目前已停产;XScale是目前Intel公司主推的高性能嵌入式处理器,分通用处理器、网络处理器和I/O处理器三类。其中通用处理器有PXA25x、PXA26x、PXA27x三个系列,被广泛应用于智能手机、PDA领域。ARM处理器结构2023/2/5中国矿业大学——信电学院——张林27ARM处理器系列类型ARM7ARM9ARM10ARM11流水线3568典型频率(MHz)80150260335功耗(mW/MHz)0.060.19(+cache)0.5(+cache)0.4(+cache)性能MIPS/MHz0.971.11.31.2架构冯诺伊曼哈佛哈佛哈佛2023/2/5中国矿业大学——信电学院——张林282023/2/5中国矿业大学——信电学院——张林282023/2/5中国矿业大学——信电学院——张林28本章内容ARM微处理器结构ARM体系结构简介ARM微处理器的寄存器结构ARM微处理器的异常处理ARM的存储器结构ARM微处理器指令系统ARM微处理器的接口ARM处理器的寄存器结构ARM处理器运行模式1ARM处理器工作状态2ARM处理器寄存器组织3Thumb状态寄存器集42023/2/5中国矿业大学——信电学院——张林30处理器模式说明备注

用户(usr)正常程序执行模式不能直接切换到其它模式

系统(sys)运行操作系统的特权任务与用户模式类似,但具有可以直接切换到其它模式等特权

快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式

中断(irq)用于通用中断处理IRQ异常响应时进入此模式

管理(svc)操作系统保护模式系统复位和软件中断响应时进入此模式

中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处

未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式ARM处理器模式共7种模式2023/2/5中国矿业大学——信电学院——张林31ARM处理器模式特权模式处理器模式说明备注

用户(usr)正常程序工作模式不能直接切换到其它模式

系统(sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权

快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式

中断(irq)用于通用中断处理IRQ异常响应时进入此模式

管理(svc)操作系统保护代码系统复位和软件中断响应时进入此模式

中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处

未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。

未定义(und)

中止(abt)

管理(svc)

中断(irq)

快中断(fiq)

系统(sys)2023/2/5中国矿业大学——信电学院——张林32ARM处理器模式异常模式处理器模式说明备注

用户(usr)正常程序工作模式不能直接切换到其它模式

系统(sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权

快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式

中断(irq)用于通用中断处理IRQ异常响应时进入此模式

管理(svc)操作系统保护代码系统复位和软件中断响应时进入此模式

中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处

未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式

未定义(und)

中止(abt)

管理(svc)

中断(irq)

快中断(fiq)这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。2023/2/5中国矿业大学——信电学院——张林33ARM处理器模式用户和系统模式处理器模式说明备注

用户(usr)正常程序工作模式不能直接切换到其它模式

系统(sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权

快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式

中断(irq)用于通用中断处理IRQ异常响应时进入此模式

管理(svc)操作系统保护代码系统复位和软件中断响应时进入此模式

中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处

未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。

系统(sys)

用户(usr)2023/2/5中国矿业大学——信电学院——张林34处理器的模式与切换除了用户模式之外的其他6种处理器模式称为特权模式特权模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换除系统模式外,其他5种特权模又称为异常模式大多数的用户程序运行在用户模式下,因此应用程序不能够访问一些受操作系统保护的系统资源,应用程序也不能直接进行处理器模式的切换用户模式下,当需要进行处理器模式切换时,应用程序可以主动产生异常,在异常处理中进行处理器模式的切换处理器模式可以通过软件进行切换,也可以通过异常进行切换当发生异常时,处理器进入相应的异常模式。在每一种异常模式下都有一组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模式时,用户模式下的寄存器不被破坏系统模式并不是通过异常进入的,它和用户模式具有完全一样的寄存器。但是系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式切换主要供操作系统任务使用。通常操作系统的任务需要访问所有的系统资源,同时该任务仍然使用用户模式的寄存器组,而不是使用异常模式下相应的寄存器组,这样可以保证当异常发生时任务状态不被破坏ARM处理器的寄存器结构ARM处理器运行模式1ARM处理器工作状态2ARM处理器寄存器组织3Thumb状态寄存器集42023/2/5中国矿业大学——信电学院——张林36处理器的工作状态从编程的角度看,ARM微处理器的工作状态一般有两种ARM状态,处理器执行32位的字对齐的ARM指令Thumb状态,处理器执行16位的、半字对齐的Thumb指令ARM处理器可在两种状态之间切换,且不影响处理器的模式及寄存器2023/2/5中国矿业大学——信电学院——张林37ARM指令集与Thumb指令集ARM处理器是基于RISC原理设计的,指令集和相关译码机制较为简单ARMV4版中增加了16位Thumb指令集ARM指令集效率高,但是代码密度低Thumb指令集具有较高的代码密度,却仍然保持ARM的大多数性能上的优势,它是ARM指令集的子集2003年后出现了更高性能的Thumb-2指令集所有的ARM指令都可以条件执行,而Thumb指令仅有一条指令条件执行ARM程序和Thumb程序可相互调用,相互之间的状态切换开销几乎为零2023/2/5中国矿业大学——信电学院——张林38ARM指令集与Thumb指令集ARM指令集与Thumb指令集的关系Thumb指令集具有灵活、小巧的特点ARM指令集支持ARM核所有的特性,具有高效、快速的特点2023/2/5中国矿业大学——信电学院——张林39ARM状态与Thumb状态的切换被动切换CPU复位后总是进入ARM状态异常产生后总是进入ARM状态异常返回后总是进入异常之前状态主动切换(BX指令)进入Thumb状态当操作数寄存器的状态位(Rn[0])为1时,执行BX指令时可以使微处理器从ARM状态切换到Thumb状态进入ARM状态当操作数寄存器的状态位(Rn[0])为0时,执行BX指令时可以使微处理器从Thumb状态切换到ARM状态ARM处理器的寄存器结构ARM处理器运行模式1ARM处理器工作状态2ARM处理器寄存器组织3Thumb状态寄存器集42023/2/5中国矿业大学——信电学院——张林41处理器寄存器组织ARM处理器内部有37个用户可见的寄存器寄存器被安排成部分重叠的寄存器组在不同的工作模式和处理器状态下,程序员可以访问的寄存器也不尽相同2023/2/5中国矿业大学——信电学院——张林42寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiq*R9(SB,v6)R9R9_fiq*R10(SL,v7)R10R10_fiq*R11(FP,v8)R11R11_fiq*R12(IP)R12R12_fiq*R13(SP)R13R13_svc*R13_abt*R13_und*R13_irq*R13_fiq*R14(LR)R14R14_svc*R14_abt*R14_und*R14_irq*R14_fiq*R15(PC)R15状态寄存器R16(CPSR)CPSRSPSR无SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM状态各模式下的寄存器2023/2/5中国矿业大学——信电学院——张林43寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM状态各模式下的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_svcCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。2023/2/5中国矿业大学——信电学院——张林44寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用户无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系统SPSR_svcCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定义SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中断SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中断ARM状态各模式下可以访问的寄存器2023/2/5中国矿业大学——信电学院——张林45寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0在汇编语言中寄存器R0~R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。2023/2/5中国矿业大学——信电学院——张林46寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0其中R0~R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。2023/2/5中国矿业大学——信电学院——张林47寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8~R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器2023/2/5中国矿业大学——信电学院——张林48寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8~R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。2023/2/5中国矿业大学——信电学院——张林49寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR132023/2/5中国矿业大学——信电学院——张林50寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆栈指针寄存器R13(SP)寄存器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。2023/2/5中国矿业大学——信电学院——张林51寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq链接寄存器R14(LR)R14为链接寄存器(LR),在结构上有两个特殊功能:在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。2023/2/5中国矿业大学——信电学院——张林52Lable程序A程序BR14R14(LR)寄存器与子程序调用BLLable地址A???MOVPC,LRR14(地址A)Lable???1.程序A执行过程中调用程序B;操作流程2.程序跳转至标号Lable,执行程序B。同时硬件将“BLLable”指令的下一条指令所在地址存入R14(LR);3.程序B执行最后,将R14寄存器的内容放入PC,返回程序A;链接寄存器(R14)2023/2/5中国矿业大学——信电学院——张林53链接寄存器(R14)R14寄存器与异常发生异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的区别在于有些异常有一个小常量的偏移当发生异常嵌套时,异常之间可能会发生冲突例如:如果用户在用户模式下执行程序时发生了IRQ中断,用户模式R14寄存器不会被破坏。但是如果允许在IRQ模式下的中断处理程序重新使能IRQ中断,并且发生了嵌套的IRQ中断时,外部中断处理程序保存在R14_irq中的任何值都将被嵌套中断的返回地址所覆盖2023/2/5中国矿业大学——信电学院——张林54R14寄存器注意要点R14R14_irq用户模式下的程序IRQ模式下的程序AareturnB...XA地址A地址A1.执行用户模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3.IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;未被破坏R14_irq链接寄存器(R14)2023/2/5中国矿业大学——信电学院——张林55R14寄存器注意要点R14R14_irq用户模式下的程序IRQ模式下的程序AaB...XA地址A地址A1.执行用户模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3.IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;未被破坏IRQ模式下的程序BareturnB...XA地址B地址B4.如果在IRQ处理程序中打开IRQ中断,并且再次发生IRQ中断;5.硬件将返回地址保存在R14_irq寄存器中,原来保存的返回地址将被覆盖,造成错误;R14_irq被破坏6.在程序B返回到程序A,然后在返回到用户模式下被中断的程序时,发生错误,将不能正确返回;returnreturn解决办法是确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将R14入栈),或者切换到其它处理器模式下。链接寄存器(R14)2023/2/5中国矿业大学——信电学院——张林56寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序计数器R15(PC)寄存器R15为程序计数器(PC),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的。2023/2/5中国矿业大学——信电学院——张林57程序计数器(R15)-读取从R15读取的值是处理器正在取指的地址ARM状态当前正在执行指令的地址加上8个字节R15寄存器的最低两位总是为0Thumb状态当前正在执行指令的地址加上4个字节R15寄存器的最低一位总是为0LDRR0,PC??????PCPC-4PC-8正在执行正在译码正在取指流水线状态地址程序代码2023/2/5中国矿业大学——信电学院——张林58程序计数器(R15)-写入写入R15的值被当作一个指令地址,程序从这个地址处继续执行(相当于执行一次无条件跳转)由于ARM指令以字节为边界,因此写入R15的值最低两位通常为0b00,具体的规则取决于内核结构的版本:在ARM结构V3版及以下版本中,写入R15的值的最低两位被忽略,因此跳转地址由指令的实际目标地址(写入R15的值)和0xFFFFFFFC相与得到在ARM结构V4版及以上版本中,写入R15的值的最低两位为0,如果不是,结果将不可预测2023/2/5中国矿业大学——信电学院——张林59寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序状态寄存器CPSR寄存器CPSR为当前程序状态寄存器,在异常模式中,另外一个寄存器“保存程序状态寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。2023/2/5中国矿业大学——信电学院——张林60程序状态寄存器ARM内核包含1个CPSR和5个供异常处理程序使用的SPSRCPSR反映了当前处理器的状态,其包含:4个条件代码标志:负(N)、零(Z)、进位(C)和溢出(V)2个中断禁止位,分别控制一种类型的中断5个对当前处理器模式进行编码的位1个用于指示当前执行指令(ARM还是Thumb)的位每个异常模式还带有一个程序状态保存寄存器(SPSR),用于保存在异常发生之前的CPSRCPSR和SPSR通过特殊指令(MRS、MSR)进行访问2023/2/5中国矿业大学——信电学院——张林61NZCV——IM0M1M2M3M4TF—...313029282726876543210条件代码标志保留控制位溢出标志oVerflow进位或借位扩展Carry零Zero负或小于NegativeIRQ禁止InterruptFIQ禁止Fast状态位Thumb模式位ModeNZCVIM0M1M2M3M4TFCPSR寄存器的格式程序状态寄存器2023/2/5中国矿业大学——信电学院——张林62程序状态寄存器-条件代码标志多数指令可以选择影响条件代码标志位通常如果指令带S后缀,则该指令的执行会影响条件代码标志但有一些指令的执行总是会影响条件代码标志算术操作、逻辑操作、MSR或者LDM指令可以对这些位进行设置条件代码标志位可决定所有ARM指令是否执行此为ARM指令的重要特点,可实现代码的优化2023/2/5中国矿业大学——信电学院——张林63程序状态寄存器-条件代码标志N

运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;Z

指令结果为0时Z=1(通常表示比较结果“相等”),否则Z=0;C

当进行加法运算(包括CMN指令),并且最高位产生进位时C=1,否则C=0。当进行减法运算(包括CMP指令),并且最高位产生借位时C=0,否则C=1。对于结合移位操作的非加法/减法指令,C为从最高位最后移出的值,其它指令C通常不变;V

当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不变。2023/2/5中国矿业大学——信电学院——张林64程序状态寄存器-控制位CPSR的最低8位为控制位,当发生异常时,这些位被硬件改变当处理器处于特权模式时,可用软件操作这些位中断禁止位I、FI位为1,IRQ中断被禁止;I位为0,IRQ中断被使能F位为1,FIQ中断被禁止;F位为0,FIQ中断被使能处理器状态标志位T当T位为1时,处理器正在Thumb状态下运行当T位为0时,处理器正在ARM状态下运行模式位M0~M4决定处理器的操作模式不是所有模式位的组合都定义了有效的处理器模式,如果使用了错误的设置,将引起一个无法恢复的错误2023/2/5中国矿业大学——信电学院——张林65程序状态寄存器-模式位M[4:0]模式可见的Thumb状态寄存器可见的ARM状态寄存器10000用户R0~R7,SP,LR,PC,CPSRR0~R14,PC,CPSR10001快中断R0~R7,SP_fiq,LR_fiq,PC,CPSR,SPSR_fiqR0~R7,R8_fiq~R14_fiq,PC,CPSR,SPSR_fiq10010中断R0~R7,SP_irq,LR_irq,PC,CPSR,SPSR_fiqR0~R12,R13_irq,R14_irq,PC,CPSR,SPSR_irq10011管理R0~R7,SP_svc,LR_svc,PC,CPSR,SPSR_svcR0~R12,R13_svc,R14_svc,PC,CPSR,SPSR_svc10111中止R0~R7,SP_abt,LR_abt,PC,CPSR,SPSR_abtR0~R12,R13_abt,R14_abt,PC,CPSR,SPSR_abt11011未定义R0~R7,SP_und,LR_und,PC,CPSR,SPSR_undR0~R12,R13_und,R14_und,PC,CPSR,SPSR_und11111系统R0~R7,SP,LR,PC,CPSRR0~R14,PC,CPSR2023/2/5中国矿业大学——信电学院——张林66程序状态寄存器-保留位CPSR中的未定义位为了提高程序的可移植性,不要随意改变保留位,并确保保程序的运行不受保留位的值影响2023/2/5中国矿业大学——信电学院——张林67高版本ARM处理器的CPSR条件位:N=1-结果为负,0-结果为正或0Z=1-结果为0,0-结果不为0C=1-进位,0-借位V=1-结果溢出,0结果没溢出Q位:仅ARM5TE/J架构支持指示增强型DSP指令是否溢出J位仅ARM5TE/J架构支持J=1:处理器处于Jazelle状态中断禁止位:I=1:禁止IRQ.F=1:禁止FIQ.TBit仅ARMxT架构支持T=0:处理器处于ARM状态T=1:处理器处于Thumb状态Mode位(处理器模式位):0b10000 User0b10001 FIQ0b10010 IRQ0b10011 Supervisor0b10111 Abort0b11011 Undefined0b11111 System2731NZCVQ2867IFTmode1623

815

54024fsxc

UndefinedJARM处理器的寄存器结构ARM处理器运行模式1ARM处理器工作状态2ARM处理器寄存器组织3Thumb状态寄存器集42023/2/5中国矿业大学——信电学院——张林69Thumb状态的寄存器集Thumb状态下寄存器是ARM状态下的子集Thumb状态R0~R7与ARM状态R0~R7相同;Thumb状态CPSR和SPSR与ARM状态CPSR和SPSR相同;Thumb状态SP映射到ARM状态R13;Thumb状态LR映射到ARM状态R14;Thumb状态PC映射到ARM状态PC(R15)Thumb状态中的高寄存器(R8~R15)不是标准寄存器集的一部分,汇编语言程序员对它们的访问受到限制,可以使用MOV、CMP和ADD指令对高寄存器操作2023/2/5中国矿业大学——信电学院——张林70Thumb状态寄存器在Arm状态寄存器上的映射R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R0

堆栈指针(R13)

连接寄存器(R14)

程序计数器(R15)

低寄存器高寄存器2023/2/5中国矿业大学——信电学院——张林712023/2/5中国矿业大学——信电学院——张林712023/2/5中国矿业大学——信电学院——张林71本章内容ARM微处理器结构ARM体系结构简介ARM微处理器的寄存器结构ARM微处理器的异常处理ARM的存储器结构ARM微处理器指令系统ARM微处理器的接口2023/2/5中国矿业大学——信电学院——张林72异常内部或外部事件使正常的程序产生暂时的停止,称之为异常ARM中,中断是异常的一种,是CPU外部设备告知CPU的一种方法在处理异常之前,ARM内核保存当前的处理器状态(CPSR->SPSR),以便当处理程序结束时可以恢复执行原来的程序(SPSR->CPSR)如果同时发生两个或更多异常,那么将按照固定的优先级来处理异常2023/2/5中国矿业大学——信电学院——张林73VectorTable不同的异常将导致处理器进入不同的工作模式,并执行不同特定地址的指令各异常类型具有不同的优先级。复位——发生时,处理器立即停止当前程序,进入禁止中断的管理模式,并从地址0x00000000或者0xFFFF0000处开始执行;未定义指令——在ARM处理器或协处理器认为当前指令未定义时发生;软件中断——当用户模式下的程序使用指令SWI时,处理器便产生软件中断,进入管理模式,以调用特权操作。指令预取中止——当处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号;只有当预取的指令被执行时,才会产生指令预取中止异常。Vectortablecanbeat

0xFFFF0000onARM720T

andonARM9/10familydevicesFIQIRQ(Reserved)DataAbortPrefetchAbortSoftwareInterruptUndefinedInstructionReset0x1C0x180x140x100x0C0x080x040x001665优先级异常处理2023/2/5中国矿业大学——信电学院——张林74VectorTable不同的异常将导致处理器进入不同的工作模式,并执行不同特定地址的指令各异常类型具有不同的优先级。数据访问中止——若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常;外部中断请求——当处理器的外部中断请求引脚有效,而且CPSR中的I位为0时,产生IRQ异常。系统外设可通过该异常请求中断服务。快速中断请求——处理器的快速中断请求引脚有效,而且CPSR中的F位为0时,产生FIQ异常。Vectortablecanbeat

0xFFFF0000onARM720T

andonARM9/10familydevicesFIQIRQ(Reserved)DataAbortPrefetchAbortSoftwareInterruptUndefinedInstructionReset0x1C0x180x140x100x0C0x080x040x0016652优先级43异常处理2023/2/5中国矿业大学——信电学院——张林7575异常30xFFFF001C0x0000001C快速中断模式快速中断请求(FIQ)40xFFFF00180x00000018外部中断模式外部中断请求(IRQ)20xFFFF00100x00000010中止模式数据访问中止50xFFFF000C0x0000000C中止模式指令预取中止60xFFFF00080x00000008管理模式软件中断(SWI)60xFFFF00040x00000004未定义指令中止模式未定义指令10xFFFF00000x00000000管理模式复位优先级特定地址(高端)特定地址(低端)工作模式异常类型2023/2/5中国矿业大学——信电学院——张林76进入异常无论进入异常前处于ARM或Thumb状态,总在异常对应模式的LR中保存PC值将CPSR复制到适当的SPSR中设置CPSRARM内核在部分异常时置位中断禁止标志,以防止不受控制的异常嵌套总是在ARM状态中处理异常。若在Thumb状态下发生了异常,在异常向量地址装入PC时,自动切换到ARM状态模式位强制设置为与异常类型相对应的值强制PC从相关的异常向量处取指2023/2/5中国矿业大学——信电学院——张林77退出异常将LR(R14)中的值减去偏移量后存入PC,偏移量根据异常的类型而有所不同恢复CPSR(如将SPSR的值复制回CPSR),即恢复之前CPU状态恢复之前中断屏蔽状态恢复之前的CPU模式恢复之前的状态标志2023/2/5中国矿业大学——信电学院——张林78程序AIRQ服务程序系统模式IRQ模式程序寄存器组图示进入异常过程1.程序在系统模式下运行用户程序,假定当前处理器状态为Thumb状态、允许IRQ中断;2.用户程序运行时发生

温馨提示

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

评论

0/150

提交评论