嵌入式系统 课件 ARM微控制器基础与实战_第1页
嵌入式系统 课件 ARM微控制器基础与实战_第2页
嵌入式系统 课件 ARM微控制器基础与实战_第3页
嵌入式系统 课件 ARM微控制器基础与实战_第4页
嵌入式系统 课件 ARM微控制器基础与实战_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

第2章ARM体系结构

参考书:《ARM嵌入式处理器结构与应用基础》马忠梅,马广云,徐英慧,等北京航空航天大学出版社12.1ARM体系结构概述2.1.1ARM体系结构的特点0、概述:ARM公司ARM即AdvancedRISCMachines的缩写。ARM公司是知识产权(IP)供应商,成立于1990。ARM公司本身不生产芯片,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片。ARM作为32位嵌入式RISC微处理器业界的领先供应商,商业模式的强大之处在于它在世界范围有超过100个合作伙伴——包括半导体工业的著名公司,从而保证了大量的开发工具和丰富的第三方资源,它们共同保证了基于ARM处理器核的设计可以很快投入市场。2ARM处理器的3大特点是:耗电少,成本低,功能强;16/32位双指令集;全球众多合作伙伴保证供应。ARM体系结构基于精简指令集计算机(RISC)原理。传统的CISC指令集计算机随着计算机的发展引入了各种各样的复杂指令,使得指令集和为实现这些指令的计算机体系结构越来越复杂,已经不堪重负。经过大量的研究和分析,发现在CISC的指令集中,各种指令的使用频度相差悬殊。大概有20%的指令被反复使用,使用量约占整个程序的80%;而有80%左右的指令则很少使用,其使用量约占整个程序的20%。 这就是所谓的20%—80%规律。

3RISC指令集和相关的译码机制比复杂指令集计算机(CISC)的设计更简单。这种简单性得到了:高指令吞吐率;出色的实时中断响应;体积小、性价比高的处理器宏单元。16位Thumb指令集,允许软件16位编码使占用的存储器空间节省高达35%,然而保留了32位系统所有的优势。4ARM还提供了两个前沿特性——嵌入式ICE—RT逻辑和嵌入式跟踪宏核系列,用于辅助嵌入式处理器核的、高集成的SoC器件的调试。允许在代码的任何部分——甚至在ROM中设置断点。ARM当前有5个产品系列:ARM7、ARM9、ARM9E、ARM10和SecurCore。进一步的产品来自于合作伙伴,例如IntelXScale微体系结构和StrongARM产品。51.ARM的RISC型处理器结构中央控制器没有采用微程序的方式。采用了硬接线PLA的方式。减少复杂功能的指令,选用使用频度最高的指令;简化处理器的结构,减少处理器的集成度;采用32位定长指令。除了单机器周期执行1条指令外,每条指令具有多种操作功能,提高了指令使用效率。采用流水线结构,使每一条指令平均在一个机器周期内完成,以提高处理器的速度。采用多寄存器的结构,使指令的操作尽可能在寄存器之间进行。采用Load/Store结构,即只有Load/Store(加载/存储)指令可与存储器打交道,减少访问存储器的频度,节约指令执行时间。为了进一步提高指令和数据的存/取速度,有的还增加指令快存I—Cache和数据快存D—Cache;62.Thumb指令集新型ARM体系结构在32位指令集的基础上又定义了16位的Thumb指令集,可以使程序存储器更小。Thumb指令集比通常的8位和16位CISC/RISC处理器具有更好的代码密度,而芯片面积只增加6%。73.多处理器状态模式ARM可以支持7种处理器模式:用户模式快中断模式中断模式管理模式中止模式系统模式未定义模式除了用户模式外,其余的均为特权模式。这是ARM的特色之一。多处理器模式可以大大提高ARM处理器的效率,并方便操作系统的设计。84.嵌入式在线仿真调试ARM体系结构的处理器芯片都嵌入了在线仿真ICE—RT逻辑由于ICE—RT逻辑的支持,便于通过JTAG来仿真调试ARM体系结构芯片,从而可以省去价格昂贵的在线仿真器。在处理器核中还集成了嵌入式跟踪宏单元(ETM),ETM可以用于监控内部总线,实时跟踪指令和数据的执行。95.灵活和方便的接口ARM体系结构具有协处理器接口,这样,既可以使基本的ARM处理器内核尽可能小,又可以方便地扩充各种功能。ARM允许接16个协处理器。ARM处理器核具有片上总线AMBA(AdvancedMicrocontrollerBusArchitecture)。AMBA定义了3组总线:先进高性能总线AHB(AdvancedHighperformanceBus);先进系统总线ASB(AdvancedSystemBus);先进外围总线APB(AdvancedPeripheralBus)。通过AMBA可以方便地扩充各种处理器及I/O,这样,可以把DSP、其他处理器和I/O接口(如UART、定时器和接口等)都集成在一块芯片中。106、、低低电电压压低低功功耗耗的的设设计计由于于ARM体体系系结结构构的的处处理理器器主主要要用用于于手手持持式式嵌嵌入入式式系系统统之之中中,,ARM体体系系结结构构在在设设计计中中十十分分注注意意低低功功耗耗问问题题。。CMOS电电路路的的功功耗耗关关系系::Pc=(1/2)··f··VDD2·∑Ag··CLg式中,,f为为时钟钟频率率;VDD为工作作电源源电压压;Ag是是逻辑辑门在在1个个时钟钟周期期内翻翻转的的次数数(通通常为为2);CLg为门门的负负载电电容。。因此此,ARM体系系结构构的设设计采采用了了以下下措施施:降低电电源电电压,,可工工作在在3..0V以下下。减少门门的翻翻转次次数,,当某某个功功能电电路不不需要要时,,禁止止门翻翻转。。减少门门的数数目,,即降降低芯芯片的的集成成度。。降低时时钟频频率(但也也会损损失系系统的的性能能)。。112.1.2ARM处处理器器结构构1.ARM体系系结构构是ARM体体系结结构::32位位ALU;;31个个32位通通用寄寄存器器6个状态态寄存器器32×8位乘法法器32×32位桶桶形移位位寄存器器指令译码码及控制制逻辑指令流水水线数据/地地址寄存存器。如图4——1所示示12FIG4-1132.ARM的流流水线结结构计算机中中的1条条指令的的执行可可以分若若干个阶阶段:①取指指,从存存储器中中取出指指令(fetch);;②译码码,指令令译码(dec);③取操操作数,,假定从从寄存器器组中取取操作数数(reg);;④执行运算算(ALU);⑤存储器访访问,操作数数与存储器有有关(mem);⑥结果写回回寄存器(res)。各个阶段的操操作相对都是是独立的。因因此,采用流流水线的重叠叠技术可以大大大提高系统统性能。14ARM体系结结构的单周期期3级流水线线图4—5ARM单周周期3级流流水线取指译码执行取指译码执行取指译码执行时间123153.ARM存存储器结构ARM架构的的处理器,有有的带有指令令Cache和数据Cache,但但片内不带有有片内RAM和片内ROM,因此此,系统所需需的RAM和和ROM须通通过总线外接接。系统所需的RAM和ROM(包括Flash)都通过总线线连接,由于于系统的地址址范围较大(232=4GB),有的片内内还带有存储储器管理单元元MMU。图4—8ARM外接接RAM和ROM16图4—8ARM外接接RAM和ROMROMoeRAMoeRAMwe3RAMwe2RAMwe1RAMwe0A1、A0没没有接入片内内地址线,他他们是确定RAMwe3~RAMwe0的依据。174.ARMI//O结构ARM架构构中的处理理器核和处处理器内核核一般都没没有I/O部件和模模块,ARM架构处处理器的I/O可通通过AMBA(先进进微控制总总线架构))总线来扩扩充。ARM架构构中的I//O直接存储器器存取DMA中断结构。。18(1)存存储器映射射I/O一般的I//O(如串串行接口)有若干个个寄存器::发送数据寄寄存器(只只写);数据接收寄寄存器(只只读);控制寄存器器、状态寄寄存器(只只读);中断允许寄寄存器;等。这些寄寄存器都需需要相应的的I/O端端口地址。。ARM采用用了存储器器映射I//O的方式式,即把I/O端口口地址作为为特殊的存存储器地址址。19(2)直直接存储储器存取DMAARM架构构的处理器器一般都没没有DMA部件,只只有在一些些高档的ARM架构构处理器中中具有DMA的功能能。(3)中中断IRQ和快速中中断FIQ一般的ARM没有DMA功能能,为了能能提高I//O处理能能力,系统统安排了快快速中断FIQ(FastInterrupt),而而对普通I/O的中中断源仍安安排了一般般中断IRQ。要提高中断断响应的速速度,在设设计中可以以采用以下下办法:提供大量后后备寄存器器,在中断断响应及返返回时,作作为保护现现场和恢复复现场的上上下文切换换(ContextSwitching)之用。采用片内RAM结构构,这样可可以加速异异常处理(包括中断断)的进入入时间。Cache和地址变换换后备缓冲冲器TLB(TranslationLookasideBuffer)采用锁锁住(Lockeddown)方式式以确保临临界代码段段不受“不不命中”所所产生的影影响。205.ARM协处理器器接口ARM可以以通过增加加协处理器器来支持一一个通用的的指令集的的扩充;也可以通过过未定义指指令陷阱(Trap)来支持持协处理器器的软件仿仿真。21ARM可以以扩展16个协处理理器,每个个协处理器器可有16个寄存器器。MMU和保保护单元的的系统控制制都采用CPl5协协处理器;;JTAG调调试中的协协处理器为为CPl4,即调试试通信通道道DCC(DebugCommunicationChannel)协处理器号功能15系统控制14调试控制器13~8保留7~4用户3~0保留226.ARM的AMBA接接口ARM处理理器内核可可通过内部部总线扩充充Cache等部件件,或通过过协处理器器接口扩充充各种协处处理器;也可以通过过先进微控控制器总线线架构AMBA(AdvancedMicrocontrollerBusArehitecture)来扩展展不同体系系架构的宏宏单元及I/O部件件。AMBA事事实上已成成为片上总总线OCB(OnChipBus)标准。。AMBA有有如下3类类总线:先进高性能能总线AHB(AdvancedHigh-performanceBus);先进系统总总线ASB(AdvancedSystemBus)先进外围总总线APB(AdvancedPeripheralBus)。AMBA结结构如图4—9所示示。23247.ARM的JTAG调试接接口JTAG的的基本知识识什么是JTAG??JTAG是是JointTestActionGroup的的缩写,基基于IEEE1149.1标标准。使用JTAG的优点点JTAG的的建立使得得集成电路路固定在PCB上,,只通过边边扫描便可可以通过测测试。在ARM7TDMI处处理理器器中中,,可可以以通通过过JTAG直直接接控控制制ARM的的内内部部总总线线,,I/O口口等等信信息息,,从从而而达达到到调调试试的的目目的的。。25JTAG调调试试接接口口的的结结构构如如图4——10所示示。。测试试访访问问端端口口TAP(TestAccessPort)控控制制器器;;旁路路(Bypass)寄寄存存器器;;指令令寄寄存存器器;;数据据寄寄存存器器;;与JTAG接接口口兼兼容容的的ARM架架构构处处理理器器。。26处理理器器的的每每个个引引脚脚都都有有一一个个移移位位寄寄存存单单元元,,称称为为边边界界扫扫描描单单元元BSC(BoundaryScanCell)::BSC将将JTAG电电路路与与处处理理器器核核逻逻辑辑电电路路联联系系起起来来,,同同时时,,隔隔离离了了处处理理器器核核逻逻辑辑电电路路与与芯芯片片引引脚脚;;所有边界界扫描单单元的串串联构成成了边界界扫描寄寄存器BSR;BSR寄存器电电路仅在在进行JTAG测试时时有效,,在处理理器核正正常工作作时无效效(直通)。27芯核逻辑BSCBSCBSCBSCBSCBSC28(1)JTAG的控制制寄存器器测试访问问端口TAP控控制器::对嵌入入在ARM处理理器核内内部的测测试功能能电路进进行访问问控制,,它是一一个同步步状态机机。通过过测试模模式选择择TMS和时钟钟信号TCK来来控制状状态的转转换,实实现IEEEll49.1标标准所确确定的测测试逻辑辑电路的的工作时时序。指令寄存存器:它它是串行行移位寄寄存器,,通过它它可以串串行输入入执行各各种操作作指令。。数据寄存存器组::它是一一组串行行移位寄寄存器。。操作指指令被串串行装入入由当前前指令所所选择的的数据寄寄存器,,随着操操作的进进行,测测试结果果被串行行移出。。其中::器件ID寄存器器:读出出在芯片片内固化化的ID号。旁路寄存存器:1位移位位寄存器器,用1个时钟钟的延迟迟把TDI连至至TDO,使测测试者在在同一电电路板测测试循环环内访问问其他器器件。边界扫描描寄存器器(扫描描链)::截取ARM处处理器核核与芯片片引脚之之间所有有信号,,组成专专用的寄寄存器链链。29(2)JTAG测试试信号TRST测试复位位输入信信号,测测试接口口初始化化。TCK测试时时钟,,在TCK时钟钟的同同步作作用下下,通通过TDI和TDO引脚脚串行行移入入/移移出数数据或或指令令,同同时也也为测测试访访问端端口TAP控制制器的的状态态机提提供时时钟。。TMS测试模模式选选择信信号,,在在TCK同同步下下控制制测试试接口口状态态机的的操作作。TDI测试数数据输输入线线,其其串行行输入入数据据送至至边界界扫描描寄存存器或或指令令寄存存器(由TAP控控制器器的当当前状状态及及已保保存在在指令令寄存存器中中的指指令来来控制制)。。TDO测试数数据输输出线线,把把从边边界扫扫描链链采样样的数数据传传播至至串行行测试试电路路中的的下一一个芯芯片JTAG可可以对对同一一块电电路板板上多多块芯芯片进进行测测试。。连接接方法法如下下:TRST、、TCK和和TMS信信号并并行接接至各各个芯芯片;;前1块块芯片片的TDO接至至下1块芯芯片的的TDI。。30(3)TAP状态态机测试访访问端端口TAP控制制器是是一个个16状态态的有有限状状态机机,为为JTAG提供供控制制逻辑辑,控控制进进入JTAG结结构中中各种种寄存存器内内数据据的扫扫描与与操作作。状态转转移图图如图图4——11所示示,在TCK同同步时时钟上上升沿沿的TMS引脚脚的逻逻辑电电压决决定状状态转转移的的过程程。任一状状态下下,让让TMS=1可可以经经5个个TCK回回到复复位状状态。。由TDI引引脚输输入到到器件件的扫扫描信信号有有2个个状态态变化化路径径:用用于指指令移移入至至指令令寄存存器,,或用用于数数据移移入至至相应应的数数据寄寄存器器(该该数据据寄存存器由由当前前指令令确定定)。。状态图图中的的每个个状态态都是是TAP控控制器器进行行数据据处理理所需需要的的,这这些处处理包包括向向引脚脚施加加激励励信号号、捕捕获输输入数数据、、加载载指令令以及及将边边界扫扫描寄寄存器器中数数据移移入//移出出31状态转转换发发生在在TCK同同步时时钟脉脉冲的的上升升沿32(4)JTAG接接口控控制指指令控制指指令用用于控控制JTAG接接口各各种操操作,,包括括公用(Public)指指令和和私有(Private)指令令。最最基本本的公公用指指令有有:BYPASS旁路片上系系统逻逻辑指指令,,用于于未被被测试试的芯芯片,,即把把TDI与与TDO旁旁路(1个个时钟钟延迟迟)。。EXTEST片片外电电路测测试指指令,,用于于测试试电路路板上上芯片片之间间的互互连。。如图图4——11中的的引脚脚状态态被捕获在captureDR;并并在shiftDR状态时时,通过TDO引脚脚把寄存器器中数据移移出,同时时新的数据据通过TDI引脚移移入,该数数据在更新updateDR状态中用用于边界扫扫描寄存器器输出。IDCODE读读芯片ID码指令,,用于识别别电路板上上的芯片。。此时,ID寄存器器在TDI与TDO引脚之间间,在captureDR状态中,,芯片的ID复制至至ID寄存存器,然后后在shiftDR状态中中移出。INTEST片片内测试指指令,边界界扫描寄存存器位于TDI与TDO引脚脚之间,处处理器核逻逻辑输入和和输出状态态被边界扫扫描寄存器器捕获和控控制。以上是ARM架构最最基本的公公用指令,,各种处理理器核可以以根据需要要进行扩展展。332.1.3ARM处理器器内核ARM体系系结构的处处理器内核核有ARM7TDMI、ARM8、ARM9TDMI、、ARM10TDMI及ARM11TDMI等等。ARM7TDMI处处理器内核核ARM7TDMI处理理器是ARM7处理器器系列成成员之一一,是目目前应用用很广的的32位位高性能能嵌入式式RISC处理理器。TDMI后缀的的含义::T 具有有16位位压缩指指令集Thumb;D 支持持在片调调试(Debug),,允许许处理器器响应调调试请求求暂停;;M 增强强型乘法法器(Multiplier),比比以前处处理器性性能更高高,产生生全64位结果果;I 提供供嵌入式式ICE硬件,,支持片片上断点点调试。。ARM7处理器器核采用用了3级级流水线线结构,,指令执执行分为为取指、、译码和和执行等等3个阶阶段。ARM7TDMI的体系系结构图如图图4—12所所示。34113个扫描单元:包括ARM核所有I/O引脚、地址数据总线引脚和输入输出控制引脚。33个扫描单元:数据总线[D31:D0]和一个端点控制信号38个扫描单元:通过控制ICE宏单元,实现对ARM执行指令的断点、观察点的控制。35ARM7TDMI内核的的JTAG扫扫描链结构(主要包括33条扫描链))ScanChain0:有113个扫描单元元,包括ARM核的所有有I/O,地地址数据总线线和输入输出出控制信号.这条链上的的信号复杂,不易控制,但是,包含含的信息丰富富,可以通过过这条链得到到ARM7TDMI所有有的内核信息息。36ScanChain1:有33个扫描描单元,包括括ARM核的的数据总线和一个断点控制信号号。这是一条很很有用的链,,通过控制这这条链,可以以控制ARM核执行指定定的指令,从从而实现对ARM的内部部寄存器,协协处理器以及及外部存储器器的读写操作作。ScanChain2:有38个扫描描单元,通过过控制EmbeddedICE宏单元,实现现对ARM执执行指令的断断点、观察点点控制。EmbeddedICE是集成在ARM内核的中中的嵌入式ICE防真器。通过过对EmbeddedICE的控制,对EmbeddedICE中寄存器的读读取,可以获获得ARM内内核的状态,,为程序设置置断点或读取取Debug通信通道。。372.2.1数数据类型型ARM处理器器支持下列数数据类型:Byte字字节,8位;;(A31………A0)32位地址均均有效.Halfword半字字,16位(半字必须与与2字节边界界对准)((A31………A1,0)偶数地址,A0为0;;Word字字,32位(字必须与4字节边界对对准)。((A31………A2,0,0)地址是是4的倍数,A1,A0均为0.2.2ARM编编程模模型图4—18ARM数据类型存储图见ARM的存储结构38ARM体系系结构构支持持表4—3所列列的7种处处理器器模式式。表4——3处处理器器模式式处理器模式说明用户user正常程序执行模式FIOfiq支持高速数据传送或通道处理IRQirq用于通用中断处理管理svc操作系统保护模式系统复位后的缺省模式中止abt实现虚拟存储器和/或存储器保护未定义und支持硬件协处理器的软件仿真系统sys运行特权操作系统任务2.2.2处处理理器模模式异常模模式特权模模式39模式的的改变变在软件件控制制下可可以改改变模模式;;外部中中断或或异常常处理理也可可以引引起模模式发发生改改变。。大多数数应用用程序序在用用户模模式下下执行行。当处理理器工工作在在用户户模式式时,,正在在执行行的程程序不不能访访问某某些被被保护护的系系统资资源;;用户模模式下下不能能改变变模式式,除除非异异常(Exception)发生生。这这允许许操作作系统统来控控制系系统资资源的的使用用。除用户户模式式外的的其他他6种种模式式称为为特权模模式。特权模模式服服务于于中断断或异异常;;特权模模式可可以访访问被被保护护的资资源;;特权模模式下下可以以改变变模式式。关于模模式的的说明明:40系统模模式。。不能由由任何何其他他模式式进入入该模模式;;它与用用户模模式拥拥有完完全相相同的的寄存存器。。然而而它是是特权权模式式,不不受用用户模模式的的限制制。它供需需要访访问系系统资资源的的操作作系统统任务务使用用,但但希望望避免免使用用与异异常模模式有有关的的附加加寄存存器。。避免免使用用附加加寄存存器保保证了了当任任何异异常出出现时时,都都不会会使任任务的的状态态不可可靠。。除用户户模式式和系系统模模式之之外的的5种模式式称作作异常常模式式。当特定定的异异常出出现时时,进进入相相应的的模式式。每种模模式都都有某某些附附加的的寄存存器,,以避避免异异常出出现时时用户户模式式的状状态不不可靠靠。412.2.3处处理理器工工作状状态ARM处理理器有有两种种工作作状态态:ARM:这这种状状态下下执行行32位字字对准准的ARM指令令;取取指时时程序序计数数器的的PC.1和PC.0均均为0Thumb:这这种状状态下下执行行半字字对准准的16位位Thumb指指令。。取指指时程程序计计数器器的PC.0为为0,,而使使用PC.1位位选择择另一一个半半字。。ARM处处理理器器可可以以在在两两种种工工作作状状态态之之间间切切换换。。ARM和和Thumb之之间间状状态态的的切切换换不不影影响响处处理理器器的的模模式式或或寄寄存存器器的的内内容容。。42ARM处处理理器器在在ARM和和Thumb两两种种工工作作状状态态之之间间切切换换的的方方法法::①进入入Thumb状状态态。。当当操操作作数数寄寄存存器器的的状状态态位位(位位[0])为为1时时,,执执行行BX指指令令进进入入Thumb状状态态。。如如果果处处理理器器在在Thumb状状态态进进入入异异常常,,则则当当异异常常处处理理(IRQ、、FIQ、、Undef、、Abort和和SWI)返返回回时时,,自自动动转转换换到到Thumb状状态态。。②进入入ARM状状态态。。当当操操作作数数寄寄存存器器的的状状态态位位(位位[0])为为0时时,,执执行行BX指指令令进进入入ARM状状态态。。处处理理器器进进行行异异常常处处理理(IRQ、、FIQ、、Reset、、Undef、、Abort和和SWI)时时,,把把PC放放入入异异常常模模式式链链接接寄寄存存器器中中,,从从异异常常向向量量地地址址开开始始执执行行也也可可以以进进入入ARM状状态态。。43ARM处处理器总总共有37个寄寄存器::31个通通用寄存存器,包包括程序序计数器器PC。。这些寄寄存器是是32位位的。6个状态态寄存器器。这些些寄存器器也是32位的的,但只只使用了了其中的的12位位。37个寄存存器不能被被同时看到到,处理器器状态和工工作模式决决定哪些寄寄存器编程程者可见。。2.2.4寄存存器组织44SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_svcCPRSCPRSCPRSCPRSCPRSCPRSCPRSR15(PC)R15(PC)R15(PC)R15(PC)R15(PC)R15(PC)R15(PC)R14_fiqR14_irqR14_undR14_abtR14_svcR14R14R13_fiqR13_irqR13_undR13_abtR13_svcR13R13R12_fiqR12R12R12R12R12R12R11_fiqR11R11R11R11R11R11R10_fiqR10R10R10R10R10R10R9_fiqR9R9R9R9R9R9R8_fiqR8R8R8R8R8R8R7R7R7R7R7R7R7R6R6R6R6R6R6R6R5R5R5R5R5R5R5R4R4R4R4R4R4R4R3R3R3R3R3R3R3R2R2R2R2R2R2R2R1R1R1R1R1R1R1R0R0R0R0R0R0R0快中断模式中断模式未定义模式中止模式管理模式系统模式用户模式异常模式特权模式**黄色表明用户或或系统模式式使用的一一般寄存器器已被异常常模式特定定的另一寄寄存器所替替代451.通用寄寄存器通用寄存器器(R0~~R15)可分成3类:(1)不不分组寄存存器R0~~R7R0~R7是不分组组寄存器,,在所有的的处理器模模式下,它它们每一个个都访问同同样的32位物理寄寄存器。它它们是真正正的通用寄寄存器,没没有体系结结构所隐含含的特殊用用途。(2)分分组寄存器器R8~R14R8~R14是分组组寄存器。。它们每一一个访问的的物理寄存存器取决于于当前的处处理器模式式。每种处处理器模式式有专用的的分组寄存存器用于快快速异常处处理。若要访问特特定的物理理寄存器而而不依赖于于当前的处处理器模式式,则要使使用规定的的名字。46寄存器R8~R12各有两组组物理寄存存器。一组组为FIQ模式,另另一组为除除FIQ以以外的其他他模式。第第1组访问问R8_fiq~R12_fiq,第第二组访问问R8_usr~R12_usr。独独立的FIQ模式允允许快速中中断处理。。寄存器R13、R14各有6个分组的的物理寄存存器。1个个用于用户户模式和系系统模式,,而其他5个分别用用于5种异异常模式。。访问时需需要指定其其模式名。。名字形式式如下:R13_<mode>R14_<mode>其中,<mode>可以从usr、svc、abt、und、irq和fiq6种模式中中选取一个个。47寄存器R13通常用用作堆栈指指针,称作作SP。每种异常模模式都有自自己的分组组R13。。通常R13应当被初初始化成指指向异常模模式分配的的堆栈。在异常处理理程序的入入口将用到到的其他寄寄存器的值值保存到堆堆栈中。返返回时,重重新将这些些值加载到到寄存器。。这种异常常处理方法法保证了异异常出现后后不会导致致执行程序序的状态不不可靠。48寄存器R14用作子子程序链接接寄存器,,也称为链链接寄存器器LR(LinkRegister)。当执行带链链接转移(BL)指指令时,R14得得到R15的拷贝。。在其他情况况下,将R14当做做通用寄存存器。类似地,当当中断或异异常出现时时,或中断断或异常程程序执行BL指令时时,相应的的分组寄存存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用来保存存R15的返回值。49应用提示:FIQ模式有有7个分组的的寄存器R8~R14映映射为R8_fiq~~R14_fiq。在在ARM状态态下,FIQ处理中使用用R8~R14没必要保保存。User、IRQ、Supervisor、Abort和和Undefined模模式每一种都都包含两个分分组的寄存器器R13和R14的映射射,允许每种种模式都有自自己的堆栈和和链接寄存器器。50(3)程序序计数器R15寄存器R15用作程序计计数器PC。。在ARM状状态,位[1:0]为0,位[31:2]保存存PC。在Thumb状状态下,位[0]为0,,位[31:1]保存PC。程序计计数器用于特特殊场合。①读程序计数器器。指令读出出的R15的的值是指令地地址加上8个个字节。由于于ARM指令令始终是字对对准的,所以以读出结果值值的位[1:0]总是0(在Thumb状态下下,情况有所所变化)。读读PC主要用用于快速地对对临近的指令令和数据进行行位置无关寻寻址,包括程程序中的位置置无关转移。。②写程序计数器器。写R15的通常结果果是将写到R15中的值值作为指令地地址,并以此此地址发生转转移。由于ARM指令要要求字对准,,通常希望写写到R15中中值的位[1:0]=0b00。512.程序状态态寄存器在所有处理器器模式下都可可以访问当前前程序状态寄寄存器CPSR(CurrentProgramStatusRegister)。。CPSR包含含条件码标志志、中断禁止止位、当前处处理器模式以以及其他状态态和控制信息息。每种异常模式式都有一个程程序状态保存存寄存器SPSR(SavedProgramStatusRegister)。。当异常出现现时,SPSR用于保存存CPSR的的状态。CPSR和SPSR的格格式如下:M0M1M2M3M4TFIDNM(RAZ)VCZN31302928876543210条件码状态标志位中断禁止控制位Thumb控制位模式控制位保留位,用做以后的扩展52(1)条件码码标志N、Z、C、、V(Negative、Zero、Carry、overflow)位称作条条件码标志(ConditionCodeFlag),经常以标标志(Flag)引用。。CPSR中中的条件码标标志可由大多多数指令检测测以决定指令令是否执行。。通常条件码标标志通过执行行下述指令进进行修改比较指令(CMN、CMP、TEQ、TST)一些算术运算算、逻辑运算算和传送指令令,它们的目目的寄存器不不是R15。。这些指令中中大多数同时时有标志保留留变量和标志志设置变量,,后者通过在在指令助记符符后加上字符符“S”来选选定。加“S”表示进行行标志设置。。53(2)控控制制位位程序序状状态态寄寄存存器器PSR(ProgramStatusRegister)的的最最低低8位位I、、F、、T和和M[4::0]用用作作控控制制位位。。当异异常常出出现现时时改改变变控控制制位位。。处理理器器在在特特权权模模式式下下时时也也可可由由软软件件改改变变。。中断禁止止位:I置1,,则禁止止IRQ中断;;F置1,则禁禁止FIQ中断断。T位:T=0,,指示执执行ARM指令令;T==l,指指示执行行Thumb指指令。模式位::MO、、M1、、M2、、M3和和M4(M[4:0])是模模式位,,这些位位决定处处理器的的工作模模式,如如表4——4所列列。54M[4:0]模式可访问的寄存器l0000用户PC、R14~R0、CPSR10001FIQPC、R14_fiq~R8_fiq、R7~R0、CPSR、SPSR_fiq10010IRQPC、R14_irq、R13_irq、R12~R0、CPSR、SPSR_irq10011管理PC、R14_svc、R13_svc、R12~R0、CPSR、SPSR_svc10111中止PC、R14_abt、R13_abt、R12~R0、CPSR、SPSR_abt11011未定义PC、R14_und、R13_und、R12~R0、CPSR、SPSR_und11111系统PC、R14~R0、CPSR表2—4模模式位553.Thumb状态的的寄存器器集Thumb状态态下的寄寄存器集集是ARM状态态下的寄寄存器集集的子集集。程序序员可以以直接访访问8个个通用寄寄存器(R0~~R7)、PC、SP、LR和CPSR。。每一种种特权模模式都有有一组SP、LR和SPSR。如下下图:56Thumb状态态的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(高寄寄存器)并不是是标准寄寄存器集集的一部部分。汇汇编语言言编程者者能够有有限制地地访问它它,可以以将其用用做快速速暂存存存储器,,可以将将R0~~R7(低寄存存器)中中寄存器器的值传传送到R8~R15(高寄存存器)57582.2..5异异常常异常由内内部或外外部源产产生并引引起处理理器处理理一个事事件,例例如外部部中断或或试图执执行未定定义指令令都会引引起异常常。在处理异异常之前前,处理理器状态态必须保保留,以以便在异异常处理理程序完完成后,,原来的的程序能能够重新新执行。。同一时刻刻可能出出现多个个异常。。ARM支支持7种种类型的的异常。。异常出出现后,,强制从从异常类类型对应应的固定定存储器器地址开开始执行行程序。。这些固固定的地地址称为为异常向向量(ExceptionVectors)。。表4—5列出了了异常的的类型以以及处理理这些异异常的处处理器模模式。59异常类型模式正常地址高向量地址复位管理0x000000000xFFFF0000未定义指令未定义0x000000040xFFFF0004软件中断(SWl)管理0x000000080xFFFF0008预取中止(取指令存储器中止)中止0x0000000C0xFFFF000C数据中止(数据访问存储器中止)中止0x000000100xFFFF0010IRQ(中断)IRQ0x000000180xFFFF0018FIQ(快速中断)FIQ0x000000lC0xFFFF001C表4—5异异常处理理模式60当异常出出现时,,异常模模式分组组的R14和SPSR用于保保存状态态。R14保保存程序序计数器器PC((R15);SPSR保存当当前状态态寄存器器CPSR;当处理异异常返回回时,把把SPSR传送送到CPSR,,R14传送到到PC。。这可用用两种方方法自动动完成::使用带““S”的的数据处处理指令令,将PC作为为目的寄寄存器;;使用带恢恢复CPSR的的多加载载指令。。61关于异常常的说明明:① 复位位。处理器上上一旦有有复位输输入,ARM处处理器立立刻停止止执行当当前指令令。复位位后,ARM处处理器在在禁止中中断的管管理模式式下,从从地址0x00000000或OxFFFF0000开开始执行行指令。。② 未定定义指令令异常。当ARM处理理器执行行协处理理器指令令时,它它必须等等待任一一外部协协处理器器应答后后,才能能真正执执行这条条指令。。若协处处理器没没有响应应,就会会出现未未定义指指令异常常。若试试图执行行未定义义的指令令,也会会出现未未定义指指令异常常。未定定义指令令异常可可用于在在没有物物理协处处理器(硬件)的系统统上,对对协处理理器进行行软件仿仿真,或或在软件件仿真时时进行指指令扩展展。62软件中断断异常。。软件中断断异常指指令SWI(SoftWareInterrupt)进进入管理理模式,,以请求求特定的的管理(操作系系统)函函数。④ 预取取中止异异常(取指令令存储器器中止)。存储储器系统统发出存存储器中中止(Abort)信信号。响响应取指指激活的的中止,,标记所所取的指指令无效效。若处理器试图执行行无效指指令,则则产生预预取中止止异常。。若指令令未执行行(例如如指令在在流水线线中发生生了转移移),则则不发生生预取中中止。63⑤ 数据据中止异异常(数据访访问存储储器中止止)。存存储器系系统发出出存储器器中止信信号。响响应数据据访问(加载或或存储)激活中中止,标标记数据据为无效效。在后后面的任任何指令令或异常常改变CPU状状态之前前,数据据中止异异常发生生。⑥ 中断断请求(IRQ)异常常。通过处处理器上上的IRQ输入入引脚,,由外部部产生IRQ异异常。IRQ异常常的优先先级比FIQ异异常的低低。当进进入FIQ处理理时,会会屏蔽掉掉IRQ异常。。⑦快快速中中断请请求(FIQ)异常常。通过过处理理器上上的FIQ输入入引脚脚,由由外部部产生生FIQ异异常。。FIQ被被设计计成支支持数数据传传送和和通道道处理理,并并有足足够的的私有有寄存存器,,从而而在这这样的的应用用中可可避免免对寄寄存器器保存存的需需求,,减少少了上上下文文切换换的总总开销销。64表4—6异异常优优先级优先级异常1(最高)复位2数据中止3FIQ4IRQ5指令预取中止6(最低)未定义指令、SWI异常的优先先级:652.2.6存储储器和存储储器映射I/0ARM体系系结构允许许使用现有有的存储器器和I/O器件进行行各种各样样的存储器器系统设计计。1.地址空空间ARM体系系结构使用用232个8位字节节的单一、、线性地址址空间。将将字节地址址作为无符符号数看待待,范围为为0~232—1。将地址空间间看作由230个32位的的字组成。。每个字的的地址是字字对准的,,故地址可可被4整除除。字对准准地址是A的字由地地址为A、、A+1、、A+2和和A+3的的4个字节节组成。地址空间也也看作由231个16位的的半字组成成,每个半半字的地址址是半字对对准的,故故地址可被被2整除。。半字对准准地址是A的半字由由地址为A和A+1的2个字字节组成。。66地址计算通通常由普通通的整数指指令完成。。这意味着着若计算的的地址在地地址空间中中上溢或下下溢,通常常就会环绕绕,计算结结果缩减模模232。然而,为为了减少以以后地址空空间扩展的的不兼容,,程序应该该编写成使使地址的计计算结果位位于0~232—1的范范围内。大多数转移移指令通过过把指令指指定的偏移移量加到PC的值上上来计算目目的地址,,然后把结结果写回到到PC。计计算公式如如下:目的地址==当前指令令的地址+8+偏移移量如果计算结结果在地址址空间中上上溢或下溢溢,则指令令因地址环环绕从而是是不可预知知的。因此此,向前转转移不应当当超

温馨提示

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

评论

0/150

提交评论