




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式系统原理及应用教程第1页,共100页,2022年,5月20日,19点22分,星期三ARM公司简介 ARM是Advanced RISC Machines的缩写。1991年ARM公司成立于英国剑桥,它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC (精简指令集)处理器。 公司的特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供服务。第2页,共100页,2022年,5月20日,19点22分,星期三ARM公司简介将技术授权给其它芯片厂商形成各具特色的ARM芯片. . .第3页,共100页,2022年,5月20日,19点22分,
2、星期三ARM(Advanced RISC Machines)有3种含义一个公司的名称一类微处理器的通称一种技术的名称第4页,共100页,2022年,5月20日,19点22分,星期三采用RISC架构的ARM微处理器一般具有如下特点:体积小、低功耗、低成本、高性能;支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;大量使用寄存器,指令执行速度更快;大多数数据操作都在寄存器中完成;寻址方式灵活简单,执行效率高;指令长度固定。 第5页,共100页,2022年,5月20日,19点22分,星期三ARM处理器的产品系列非常广,包括ARM7、ARM9、ARM9E、ARM10E、
3、ARM11和SecurCore、Cortex等。以及其它厂商基于ARM体系结构的处理器,除了具有ARM体系结构的共同特点以外,每一系列提供一套特定的性能来满足设计者对功耗、性能、体积的需求。 第6页,共100页,2022年,5月20日,19点22分,星期三ARM公司定义了7种ARM指令集体系结构版本。ARM版本: V1版架构,在原型机ARM1出现过,只有26位寻址空间,没有用于商业产品。 ARM版本: V2版架构,对V1版进行了扩展,例如ARM2和ARM3(V2a)架构。包含了对32位乘法指令和协处理器指令的支持。ARM版本:V3版架构,在1990年设计ARM6中采用了版本3。具有片上高速缓存
4、、MMU和写缓冲等功能。寻址空间增至32位(4GB)。目前V1V3版本目前都已废弃。第7页,共100页,2022年,5月20日,19点22分,星期三ARM版本:V4版架构,在V3版上作了进一步扩充,V4版架构是目前应用最广的ARM体系结构,ARM7、ARM8、ARM9和StrongARM都采用该架构。 ARM版本:V5版架构,是在V4版基础上增加了一些新的指令,如:转移BLX指令 、计数前导零CLZ指令 、BRK中断指令 ,DSP指令集(E增强型 ) 、在ARM10和Xscale都采用该版架构。 ARM版本:V6版架构,V6版架构是2001年发布的,首先在2002年春季发布的ARM11处理器中
5、使用。采用单指令多数据SIMD(Single Instruction, Multiple Data)技术,将语音及图像处理功能提高了4倍。 第8页,共100页,2022年,5月20日,19点22分,星期三ARM版本:V7版架构,ARMv7架构是ARMv6架构的基础上诞生的,该架构采用了Thumb-2技术。Thumb-2技术比纯32位代码少使用31的内存,减小了系统开销;同时能够比已有的基于Thumb技术的解决方案提高38的性能。 V7版架构分为三类: Cortex-A系列,应用处理器,目前提供Cortex-A5、Cortex-A8、Cortex-A9、Cortex-A15等产品。 Cortex
6、-M系列 ,嵌入式控制器,目前提供Cortex-M4、Cortex-M3、Cortex-M1 FPGA和 Cortex-M0处理器。 Cortex-R系列 ,深嵌入式实时系统 ,目前,此系列包含 Cortex-R4 和 Cortex-R4F 处理器。 第9页,共100页,2022年,5月20日,19点22分,星期三ARM命名格式如下: ARMxyzTDMIEJF-Sx:系列号,例如ARM7中的“7”、ARM9中的“9”;y:内部存储管理/保护单元,例如ARM72中的“2”、ARM94中的“4”;z:内含有高速缓存Cache; T:支持16位的Thumb指令集;D:支持JTAG片上调试;M:支持
7、长乘法操作(64位结果)的ARM指令,包含快速乘法器;I:带有嵌入式追踪宏单元ETM(Embedded Trace Macro),用来设置断点和观察点;第10页,共100页,2022年,5月20日,19点22分,星期三E:增强型DSP指令(基于TDMI);J:含有Java加速器Jazelle,与Java虚拟机相比,Java加速器Jazelle使Java代码运行速度提高了8倍,功耗降低到原来的80%;F:向量浮点运算单元;S:可综合版本,意味着处理器内核是以源代码形式提供的。版本V7用字符串ARM Cortex开头,随后附加-A、-R、-M表示处理器的市场定位方向,其后跟有数字,表示该方向产品的
8、序列号。 第11页,共100页,2022年,5月20日,19点22分,星期三第12页,共100页,2022年,5月20日,19点22分,星期三第13页,共100页,2022年,5月20日,19点22分,星期三版本版本变种系列号处理器核V1V1ARM1ARM1V2V2ARM2ARM2V2aARM2aSARM3ARM3V3V3ARM6ARM6、ARM600、ARM610ARM7ARM7、ARM700、ARM710V4V4TARM7TDMI、ARM710T、ARM720T、ARM740TV4ARM8StrongARM、ARM8、ARM810V4TARM9ARM9TDMI、ARM920T、ARM940
9、TV5V5TEARM9EARM10ARM10TDMI、ARM10EV6V6ARM11ARM11、ARM11562-S、ARM1156T2F-S、ARM11JZF-SV7V7-ACotex-AARM Cotex-A8、ARM Cotex-A9、ARM Cotex-A5、ARM Cotex-A15、V7-RCotex-RARM Cotex-R4、V7-MCotex-MARM Cotex-M3、ARM Cotex-M0 、ARM Cotex-M1第14页,共100页,2022年,5月20日,19点22分,星期三2.2.1 RISC体系结构1嵌入式CISC微处理器 传统的CISC(Complex In
10、struction Set Computer,复杂指令集计算机)结构有其固有的缺点,即随着计算机技术的发展而不断引入新的复杂的指令集,为支持这些新增的指令,计算机的体系结构会越来越复杂,然而,在CISC指令集的各种指令中,其使用频率却相差悬殊,大约有20的指令会被反复使用,占整个程序代码的80。而余下的80的指令却不经常使用,在程序设计中只占20,显然,这种结构是不太合理的。第15页,共100页,2022年,5月20日,19点22分,星期三2. 嵌入式RISC微处理器基于以上的不合理性,1979年美国加州大学伯克利分校提出了RISC(Reduced Instruction Set Comput
11、er,精简指令集计算机)的概念,RISC是精简指令集计算机,但RISC并非只是简单地去减少指令,而是把着眼点放在了如何使计算机的结构更加简单合理地提高运算速度上。RISC结构优先选取使用频最高的简单指令,抛弃复杂指令,固定指令长度,减少指令格式和寻址方式,以控制逻辑为主,不用或少用微码控制等措施来达到上述目的。 第16页,共100页,2022年,5月20日,19点22分,星期三RISC体系结构应具有如下特点:采用固定长度的指令格式,指令归整、简单、基本寻址方式有23种。使用单周期指令,便于流水线操作执行。大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/ 存储指令可以访问存储器,以提高
12、指令的执行效率。除此以外,ARM体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗.第17页,共100页,2022年,5月20日,19点22分,星期三RISC体系结构应具有如下特点:所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。可用加载/存储指令批量传输数据,以提高数据的传输效率。可在一条数据处理指令中同时完成逻辑处理和移位处理。在循环处理中使用地址的自动增减来提高运行效率。第18页,共100页,2022年,5月20日,19点22分,星期三RISC和CISC之间的主要区别:指 标RISCCISC指令集 一个周期执行一条指令,通过简单指令
13、的组合实理复杂操作;指令长度固定。 指令长度不固定,执行需要多个周期。流水线流水线每周期前进一步。 指令的执行需要调用微代码的一个微程序。寄存器更多通用寄存器。用于特定目的的专用寄存器。Load/Store结构 独立的Load和Store指令完成数据在寄存器和外部存储器之间的传输。 处理器能够直接处理存储器中的数据。第19页,共100页,2022年,5月20日,19点22分,星期三2.2.2 流水线技术 CPU中的流水线技术是一种将指令分解为多步,并让不同指令的各步操作重叠执行,从而实现几条指令并行处理,以加速程序运行过程的技术。ARM7采用三级流水线、ARM9采用五级流水线,ARM10采用六
14、级流水线、ARM11采用八级流水线。 第20页,共100页,2022年,5月20日,19点22分,星期三2.2.2 流水线技术 以ARM7三级流水线为例,由三个独立的部件分别执行:取指,从存储器中装载一条指令到CPU中;解码,识别并解释将要被执行的指令;执行,将解码识别的指令进行计算处理并将结果写回寄存器。 第21页,共100页,2022年,5月20日,19点22分,星期三第22页,共100页,2022年,5月20日,19点22分,星期三第23页,共100页,2022年,5月20日,19点22分,星期三哈佛结构是一种将程序中指令和数据分开存储的存储器结构。它是一种并行存储体系结构,程序存储器和
15、数据存储器采用不同的总线,从而提供了较大的存储器带宽 。 冯诺伊曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置。ARM7采用了普林斯顿结构,在随后的ARM9、ARM10、ARM11、ARM Cortex等处理器采用了哈佛结构, 第24页,共100页,2022年,5月20日,19点22分,星期三冯诺依曼体系结构模型第25页,共100页,2022年,5月20日,19点22分,星期三哈佛体系结构模型第26页,共100页,2022年,5月20日,19点22分,星期三AMBA(Advanced Microco
16、ntroller Bus Architec-ture)总线规范:是ARM公司设计的一种用于高性能嵌入式系统的总线标准。 AMBA 2.0规范中定义了三种可以组合使用的不同类型的总线:AHB(Advanced High-performance Bus)、ASB(Advanced System Bus)和APB(Advanced Perpheral Bus)。AHB总线适用于连接高性能和高时钟频率的系统模块 ; ASB总线适用于连接高性能的系统模块。它的读/写数据总线采用的是同一条双向数据总线; APB总线适用于连接低功耗的外部设备模块; 第27页,共100页,2022年,5月20日,19点22分
17、,星期三第28页,共100页,2022年,5月20日,19点22分,星期三ARM处理器共有37个寄存器,被分为若干个组(BANK),这些寄存器包括:31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器。6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位,目前只使用了其中的一部分。第29页,共100页,2022年,5月20日,19点22分,星期三寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7
18、(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第30页,共100页,2022年,5月20日,19点22分,星期三ARM处理器又有7种不同的处理
19、器模式,在每一种处理器模式下均有一组相应的寄存器与之对应。即在任意一种处理器模式下,可访问的寄存器包括15个通用寄存器(R0R14)、12个状态寄存器和程序计数器。在所有的寄存器中,有些是在7种处理器模式下共用的同一个物理寄存器,而有些寄存器则是在不同的处理器模式下有不同的物理寄存器。第31页,共100页,2022年,5月20日,19点22分,星期三第32页,共100页,2022年,5月20日,19点22分,星期三第33页,共100页,2022年,5月20日,19点22分,星期三ARM微处理器在较新的体系结构中支持两种指令集:ARM指令集和Thumb指令集。ARM指令为32位的长度Thumb指
20、令为16位长度Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省3040以上的存储空间,同时具备32位代码的所有优点。第34页,共100页,2022年,5月20日,19点22分,星期三从应用的角度出发,对在选择ARM微处理器时所应考虑的主要问题 :ARM微处理器内核的选择 从前面所介绍的内容可知,ARM微处理器包含一系列的内核结构,以适应不同的应用领域,用户如果希望使用WinCE或标准Linux等操作系统以减少软件开发时间,就需要选择ARM720T以上带有MMU(Memory Management Unit)功能的ARM芯片,ARM720T、ARM920T、ARM92
21、2T、ARM946T、Strong-ARM都带有MMU功能。而ARM7TDMI则没有MMU,不支持Windows CE和标准Linux,但目前有uCLinux等不需要MMU支持的操作系统可运行于ARM7TDMI硬件平台之上。事实上,uCLinux已经成功移植到多种不带MMU的微处理器平台上,并在稳定性和其他方面都有上佳表现。 第35页,共100页,2022年,5月20日,19点22分,星期三系统的工作频率 系统的工作频率在很大程度上决定了ARM微处理器的处理能力。ARM7系列微处理器的典型处理速度为0.9MIPS/MHz,常见的ARM7芯片系统主时钟为20MHz-133MHz。ARM9系列微处
22、理器的典型处理速度为1.1MIPS/MHz,常见的ARM9的系统主时钟频率为100MHz-233MHz。 ARM10最高可以达到700MHz。不同芯片对时钟的处理不同,有的芯片只需要一个主时钟频率,有的芯片内部时钟控制器可以分别为ARM核和USB、UART、DSP、音频等功能部件提供不同频率的时钟。 第36页,共100页,2022年,5月20日,19点22分,星期三芯片内存储器的容量 大多数的ARM微处理器片内存储器的容量都不太大,需要用户在设计系统时外扩存储器.但也有部分芯片具有相对较大的片内存储空间,如ATMEL的AT91F40162就具有高达2MB的片内程序存储空间,用户在设计时可考虑选
23、用这种类型,以简化系统的设计。第37页,共100页,2022年,5月20日,19点22分,星期三片内外围电路的选择 几乎所有的ARM芯片均根据各自不同的应用领域,扩展了相关功能模块,并集成在芯片之中,称之为片内外围电路.如USB接口、IIS接口、LCD控制器、键盘接口、RTC、ADC和DAC、DSP协处理器等,设计者应分析系统的需求,尽可能采用片内外围电路完成所需的功能,这样既可简化系统的设计,同时提高系统的可靠性。第38页,共100页,2022年,5月20日,19点22分,星期三ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:ARM状态,此时处理器执行32位的字对齐的ARM指令;
24、Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。ARM指令集和Thumb指令集均有切换处理器状态的指令,并可在两种工作状态之间切换,但ARM微处理器在开始执行代码时,应该处于ARM状态。第39页,共100页,2022年,5月20日,19点22分,星期三进入Thumb状态:当操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的方法,使微处理器从ARM状态切换到Thumb状态。此外,当处理器处于Thumb状态时发生异常(如IRQ、FIQ、Undef、Abort、SWI等),则异常处理返回时,自动切换到Thumb状态。进入ARM状态:当操作数寄存器的状态位为0时,执行BX指令
25、时可以使微处理器从Thumb状态切换到ARM状态。此外,在处理器进行异常处理时,把PC指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。第40页,共100页,2022年,5月20日,19点22分,星期三状态切换的一个例子地址最低位为0,表示切换到ARM状态 使用BX指令将ARM内核的操作状态在ARM状态和Thumb状态之间进行切换。ARM指令集Thumb指令集CODE32LDRR0, =Lable+1BX R0CODE16Lable MOV R1, #12CODE16LDR R0, =LableBX R0CODE32LableMOV R1, #10地址
26、最低位为1,表示切换到Thumb状态跳转地址标号执行完BX指令,处理器切换到Thumb状态,开始执行Thumb指令程序代码指令集关系 从ARM状态切换到Thumb状态的程序代码如下: 从Thumb状态切换到ARM状态的程序代码如下:执行完BX指令,处理器切换到ARM状态,开始执行ARM指令第41页,共100页,2022年,5月20日,19点22分,星期三ARM体系结构将存储器看作是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字数据.从第四个字节到第七个字节放置第二个存储的字数据,依次排列。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB(232字节)。ARM体
27、系结构可以用两种方法存储字数据,称之为大端格式小端格式第42页,共100页,2022年,5月20日,19点22分,星期三大端格式 在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,如图所示。31 2423 1615 87 0字地址84089101145670123低地址高地址第43页,共100页,2022年,5月20日,19点22分,星期三小端格式 在这种格式中,字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中,如图所示。低地址高地址31 2423 1615 87 0字地址84011109876543210第44页,共100页,2022年,5月20日,
28、19点22分,星期三ARM微处理器的指令长度可以是32位(在ARM状态下)16位(在Thumb状态下)ARM微处理器中支持字节(8位)、半字(16位)、字(32位)三种数据类型.其中,字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0)。第45页,共100页,2022年,5月20日,19点22分,星期三在复杂的嵌入式系统设计时,越来越多的会选用带有存储管理单元(MMU)的微处理器芯片。MMU完成的主要功能有:将主存地址从虚拟存储空间映射到物理存储空间。存储器访问权限控制。设置虚拟存储空间的缓冲特性等。第46页,共100页,2022年,5月20日,19点22分,星期三虚拟
29、地址存储系统示意图逻辑地址对换主存辅助存储器物理地址MMU微处理器第47页,共100页,2022年,5月20日,19点22分,星期三ARM920T微处理器核的MMU采用了分页虚拟存储管理方式。它把虚拟存储空间分成一个个固定大小的页,把物理主存储的空间也分成同样大小的一个个页。通过查询存放在主存中的页表,来实现虚拟地址到物理地址的转换。但由于页表存储在主存储中,查询页表所花的代价很大,因此,通常又采用快表技术(TLB translation lookaside buffer)来提高地址变换效率。 第48页,共100页,2022年,5月20日,19点22分,星期三TLB技术中,将当前需要访问的地址
30、变换条目存储在一个容量较小(通常816个字)、访问速度更快(与微处理器中通用寄存器速度相当)的存储器件中。当微处理器访问主存时,先在TLB中查找需要的地址变换条目,如果该条目不存在,再从存储在主存中的页表中查询,并添加到TLB中。这样,当微处理器下一次又需要该地址变换条目时,可以从TLB中直接得到,从而提高了地址变换速度。第49页,共100页,2022年,5月20日,19点22分,星期三使能MMU时,其控制存储访问的过程是:首先在TLB中查找虚拟地址,如果该虚拟地址对应的地址变换条目不在TLB中,则到页表中查询对应的地址变换条目,并把查询到的结果添加到TLB中。如果TLB已满,还需根据一定的淘
31、汰算法进行替换。得到地址变换条目后,进行一下步骤的操作。第50页,共100页,2022年,5月20日,19点22分,星期三ARM微处理器支持7种运行模式,分别为:用户模式(usr): ARM处理器正常的程序执行状态。快速中断模式(fiq):用于高速数据传输或通道处理。外部中断模式(irq):用于通用的中断处理。管理模式(svc):操作系统使用的保护模式。数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。系统模式(sys):运行具有特权的操作系统任务。未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。第51页,共
32、100页,2022年,5月20日,19点22分,星期三特权模式处理器模式说明备注 用户 (usr)正常程序工作模式不能直接切换到其它模式 系统 (sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权 快中断 (fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式 中断 (irq)用于通用中断处理IRQ异常响应时进入此模式 管理 (svc)操作系统保护代码系统复位和软件中断响应时进入此模式 中止 (abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处 未定义 (und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式除用户模式外,
33、其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。 未定义 (und) 中止 (abt) 管理 (svc) 中断 (irq) 快中断 (fiq) 系统 (sys)第52页,共100页,2022年,5月20日,19点22分,星期三异常模式处理器模式说明备注 用户 (usr)正常程序工作模式不能直接切换到其它模式 系统 (sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权 快中断 (fiq)支持高速数据传输及通道处理FIQ异常响应时进
34、入此模式 中断 (irq)用于通用中断处理IRQ异常响应时进入此模式 管理 (svc)操作系统保护代码系统复位和软件中断响应时进入此模式 中止 (abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处 未定义 (und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式 未定义 (und) 中止 (abt) 管理 (svc) 中断 (irq) 快中断 (fiq)这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。第53页,共100页,
35、2022年,5月20日,19点22分,星期三用户和系统模式处理器模式说明备注 用户 (usr)正常程序工作模式不能直接切换到其它模式 系统 (sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权 快中断 (fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式 中断 (irq)用于通用中断处理IRQ异常响应时进入此模式 管理 (svc)操作系统保护代码系统复位和软件中断响应时进入此模式 中止 (abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处 未定义 (und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式这两种模式都不能由
36、异常进入,而且它们使用完全相同的寄存器组。系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。 系统 (sys) 用户 (usr)第54页,共100页,2022年,5月20日,19点22分,星期三处理器启动时的模式转换图管理模式SVC(Supervisor)多种特权模式变化用户程序的运行模式 复位后缺省模式主要完成各模式的堆栈设置,注意不要进入用户模式一般为用户模式User2.5 处理器模式第55页,共100页,2022年,5月20日,19点22分,星期三ARM微处理器中的寄存器不能被同时访问,
37、具体哪些寄存器是可编程访问的,取决微处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14R0、程序计数器PC、一个或两个状态寄存器都是可访问的。 第56页,共100页,2022年,5月20日,19点22分,星期三寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_fi
38、qR12(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第57页,共100页,2022年,5月20日,19点22分,星期三寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1
39、)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_fiqR15R14_fiqR14_irqR14_undR14
40、_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abtCPSR所
41、有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。第58页,共100页,2022年,5月20日,19点22分,星期三寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_abtR1
42、3_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用户无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系统SPSR_abtCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14
43、_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定义SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中断SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中断第59页,共100页,2022年,5月20日,19点22分,星期三1.通用寄存器通用寄存器包括R0R15,可以分
44、为三类:未分组寄存器R0R7;分组寄存器R8R14;程序计数器PC(R15)。第60页,共100页,2022年,5月20日,19点22分,星期三寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_a
45、btR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0在汇编语言中寄存器R0R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使
46、用通用寄存器的指令。第61页,共100页,2022年,5月20日,19点22分,星期三2.未分组寄存器R0R7在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途,因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。第62页,共100页,2022年,5月20日,19点22分,星期三寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R
47、4R5(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_fiqR13_fiqR13_irqR13_undR13_abtR
48、13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0其中R0R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。第63页,共100页,2022年,5月20日,19点22分,星期三3.分组寄存器R8R14对于分组寄存器,他们每一次所访问的物理寄存器与处理器当前的运行模式有关。对于R8R12来说,每个寄存器对应两个不同的物理寄存器,当使用fiq模式时,访问寄存器R8_fiqR12_fiq;当使用除fiq模式以外的其他模式时,访问寄存器R8
49、_usrR12_usr。对于R13、R14来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式与系统模式共用,另外5个物理寄存器对应于其他5种不同的运行模式。第64页,共100页,2022年,5月20日,19点22分,星期三采用以下的记号来区分不同的物理寄存器:R13_R14_其中,mode为以下几种模式之一:usr、fiq、irq、svc、abt、und。第65页,共100页,2022年,5月20日,19点22分,星期三寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a
50、4)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_fiqR14_fiqR14_irqR14_
51、undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器第66页,共100页,2022年,5月20日,19点22分,星期三寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2
52、)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_fiqR12_fiqR12R11_fiqR11R10_fiqR10R9_fi
53、qR9R8_fiqR8寄存器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。第67页,共100页,2022年,5月20日,19点22分,星期三寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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)
54、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寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_a
55、btR13_svcR13第68页,共100页,2022年,5月20日,19点22分,星期三寄存器R13在ARM指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。而在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针。 第69页,共100页,2022年,5月20日,19点22分,星期三寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(S
56、B,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堆栈指针寄存器R13(SP)寄存器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使
57、用。但是在Thumb指令集中存在使用R13的指令。第70页,共100页,2022年,5月20日,19点22分,星期三R14也称作子程序链接寄存器(Subroutine Link Register)或链接寄存器LR。当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份。其他情况下,R14用作通用寄存器。与之类似,当发生中断或异常时,对应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用来保存R15的返回值。第71页,共100页,2022年,5月20日,19点22分,星期三寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理
58、中止未定义中断快中断通用寄存器和程序计数器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_abtS
59、PSR_abtSPSR_undSPSR_irqSPSR_fiq链接寄存器R14(LR)R14为链接寄存器(LR),在结构上有两个特殊功能:在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。第72页,共100页,2022年,5月20日,19点22分,星期三寄存器R14常用在如下的情况:在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,将PC的当前值拷贝给R14,执行完子程序后,又将R14的值拷贝回PC,即可完成子程序的调用返回。 第73页,共100页,2022
60、年,5月20日,19点22分,星期三Lable程序A程序BR14R14寄存器与子程序调用BL Lable地址A?MOV PC,LRR14(地址A)Lable?1.程序A执行过程中调用程序B;操作流程2.程序跳转至标号Lable,执行程序B。同时硬件将“BL Lable”指令的下一条指令所在地址存入R14;3.程序B执行最后,将R14寄存器的内容放入PC,返回程序A;第74页,共100页,2022年,5月20日,19点22分,星期三R14寄存器与异常发生 异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。区别在于有些异常有一个小常量的偏移。第75页,共10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机电工程发展的学术研究与试题及答案
- 西方国家政治家的人格特征研究试题及答案
- 机电工程考试成功经验2025年试题及答案
- 软件开发生命周期管理及试题与答案
- 网络工程师考试准备技巧与试题及答案
- 西方政治制度与教育科技融合的研究试题及答案
- 机电工程知识传承与试题及答案总结
- 网络工程师个案研究试题及答案
- 常见网络协议解析试题及答案
- 网络工程师职业发展的外部环境分析试题及答案
- 2023年四川省水电投资经营集团普格电力有限公司招聘笔试题库含答案解析
- (完整版)高级法学英语课文翻译
- 无人机项目融资商业计划书
- 食品营养学(暨南大学)智慧树知到答案章节测试2023年
- GA 1810-2022城镇燃气系统反恐怖防范要求
- GB/T 2518-2008连续热镀锌钢板及钢带
- 商户撤场退铺验收单
- 部编版小学道德与法治三年级下册期末质量检测试卷【含答案】5套
- 断亲协议书范本
- 五年级语文下册第八单元【教材解读】课件
- 外科围手术期患者心理问题原因分析及护理干预
评论
0/150
提交评论