第2章ARM体系结构与编程模型_第1页
第2章ARM体系结构与编程模型_第2页
第2章ARM体系结构与编程模型_第3页
第2章ARM体系结构与编程模型_第4页
第2章ARM体系结构与编程模型_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式系统及开发运用第二讲

ARM体系构造Outline2、ARM体系构造3、ARM编程模型任务形状CPU任务方式存放器组织异常内存与IO1、嵌入式微处置器主流的嵌入式微处置器目前主流的嵌入式微处置器系列主要有ARM系列、MIPS系列、PowerPC系列、SuperH系列和X86系列等。属于这些系列的嵌入式微处置器产品很多,有上千种以上。Units(millions)Source:AndrewAllison,InsideTheNewComputerIndustry,January2001EmbeddedRISCProcessorShipments32位浪潮的到来Source:SemicoResearchCorp.andSIA/WSTSTotalMCU,bySub-Category(excl.DSP)TotalEmbeddedControlMarketShipmentsbyType总共约26亿个32位处置器付运,占总数96亿的27%2005年ARM为17亿个,约占32位总量的70%左右X86系列主要由AMD,Intel,NS,ST等公司提供,如:Am186/88、Elan520、嵌入式K6,386EX、STPC等。主要运用在工业控制、通讯等领域。国内由于对X86体系比较熟习,得到广泛运用,特别是嵌入式PC的运用非常广泛。MPC/PPC系列Motorola推出的MPC系列,如MPC8XX。IBM推出PPC系列,如PPC4XX。主要运用在通讯、消费电子及工业控制、军用配备等领域。MPC/PPC系列IBMPowerPC集成10/100Mbps以太网控制器、串行和并行端口、内存控制器以及其它外设的高性能嵌入式处置器。MotorolaMPC高度综合的SOC设备,它结合了PPC微处置器中心的功能、通讯处置器和单硅成分内的显示控制器。这个设备可以在大量的电子运用中运用,特别是在低能源、便携式、图象捕捉和个人通讯设备。技术0.25微米CMoSSA-12E282Dhrystone2.1MIPS@200MHz375Dhrystone2.1MIPS@266MHz200/100/66/50MHz266/133/66/66MHz晶体数量480万电源耗费1.1瓦信号I/O300温度范围-40到80度电源供应2.5V(逻辑电路),3.3V(I/O),支持5VI/Os456-Ball,EnhancedPBGA(35mmx35mm)性能频率(CPU/SDRAM/PCI/EBC)封装PowerPC405GP技术规格*Dhrystone是一个综合性的基准测试程序,它是为了测试编译器和CPU处置整数指令和控制功能的有效性,人为地选择一些“典型指令综合起来构成的测试程序。ARM系列ARM(AdvancedRISCMachine)公司是一家专门从事芯片IP设计与授权业务的英国公司,其产品有ARM内核以及各类外围接口。ARM内核是一种32位RISC微处置器,具有功耗低、性价比高、代码密度高等三大特征。目前,90%的挪动、大量的游戏机、手持PC和机顶盒等都已采用了ARM处置器,许多一流的芯片厂商都是ARM的授权用户〔Licensee〕,如Intel、Samsung、TI、Motorola、ST等,ARM已成为业界公认的嵌入式微处置器规范。ARMFamilyARM7™FamilyARM9™FamilyARM10™FamilyARM11™Family150DMIPS300DMIPS500DMIPS1000DMIPSARMCortex™FamilyARM720TARM1JARM1176JZARM1026EARM920T/ARM922TARM926EJCortexAApplicationProcessorARM7TDMIARM1156T2ARM1026EARM946ECortexREmbeddedRTControllerARM7TDMIARM966EARM968ECortexMMicro-controllerARMArchitecture当前的主流ARM处置器ARM7世界上最为广泛运用的CPU之一<100MHzARM9100-300MHz1.7BARMPowredshipmentinyearof2005,31%isARM9based.ARM11芯片曾经面世ARM11300-700+MHzSIMD指令扩展支持更丰富的多媒体运用40家授权芯片公司,一些已开场量产FOMAN902iFirstARM11basedphoneOMAP2420i.MX31/i.MX31L目前最快的嵌入式处置器最快的处置器提供超越2000DMIPS的性能运转于1GHz频率(90nmor65nm制造工艺)功耗小于300mWARMCortexA8ApplicationProcessorCortex-M3实现$1ARM芯片ARMCortexArchitectureThumb-2ISA3StagePipeline1.22DMIPS/MHz–30%overARM7TDMI33Kgates–30%smallerthanARM7TDMILuminaryMicro的Stellaris系列MCU产品售价仅1美圆ARMCortex-M3微控制器内核,专门针对MCU运用领域而设计,突出低本钱、低功耗和高效率。领先嵌入式处置器技术开展讨论多处置器技术单处置器技术的性能提升终有一天会遭遇瓶颈对嵌入式系统而言,尤其要思索付出的代价把义务进展并行分解是理想的选择ARMMPcore可以集成1-4个ARM11处置器关键是要提供应软件开发者一个友好的编程界面64位处置器?哪儿是系统性能瓶颈?是需求64位地址还是64位数据?嵌入式系统比PC有更好的条件来处理系统性能和带宽问题PC系统在主板上,扩展系统带宽需求扩展每个组件的接口带宽SoC只需扩展片内总线,非常容易实现AMBA支持8-1024位总线宽度许多SoC设计以及ARM处置器内部曾经运用64位数据总线如何选择嵌入式微处置器微处置器内核的选择有无MMUOS的思索系统的任务频率芯片存储器的容量片内外设的思索实践运用的要求接口时序Outline2、ARM体系构造3、ARM编程模型任务形状CPU任务方式存放器组织异常内存与IO1、嵌入式微处置器图2.1.1ARM体系构造方框图ARM处置器的分类构造体系版本〔Architecture〕ARMv4TARMv5TEARMv6ARMCortex(v7)ProcessorFamilyARM7ARM9ARM10ARM11ARMCortex按运用特征分类运用途置器ApplicationProcessor实时控制处置器Real-timeController微控制器Micro-controller特征:MMU,Cache最快频率、最高性能、合理功耗特征:MPU,Cache实时呼应、合理性能、较低功耗特征:nosub-memorysystem普通性能、最低本钱、极低功耗ARM体系构造的命名规那么ARM{X}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S}x——系列y——存储管理/维护单元z——CacheT——Thumb16位译码器D——JTAG调试器M——快速乘法器I——嵌入式跟踪宏单元E——加强DSP指令J——JazelleF——向量浮点单元S——可综合版本,以源代码方式提供的ARM核v4v5TESA110v4TARM720TARM7TDMI-SARM920TARM940TARM922TARM966E-SARM946E-SARM1020Ev5TEJ/Jazellev6/JazelleARM7EJ-SARM926EJ-SARM1026EJ-SARM11Micro-ArchitectureRoadmapofARMV4/V5/V6系列相应产品性能特点ARM7系列ARM7TDMI,ARM7TDMI-S,ARM720T,ARM7EJ三级流水性能:0.9MIPS/MHz,可到达130MIPs(Dhrystone2.1)ARM9系列ARM920T,ARM922T五级流水,性能:1.1MIPS/MHz,可达300MIPS(Dhrystone2.1),单32-bitAMBAbus接口,支持MMUARM9E系列ARM926EJ-S,RM946E-S,ARM966E-S,ARM968E-S,ARM996HS五级流水,支持DSP指令。性能:1.1MIPS/MHz,可达300MIPS(Dhrystone2.1),高性能AHB,软核〔softIP〕ARM10系列ARM1020E,ARM1022EARM1026EJ-S6级流水支持分支预测〔branchprediction〕,支持DSP指令。性能:1.35MIPS/MHz,可达430+Dhrystone2.1MIPS,,可选支持高性能浮点操作,双64位总线接口,内部64位数据通路系列相应产品性能特点ARM11系列ARM11MPCore,ARM1J(F)-S,ARM1156T2(F)-S,ARM1176JZ(F)-S8级流水线(9级ARM1156T2(F)-S),独立的load-store和arithmetic流水线,支持分支预测和前往栈〔ReturnStack〕。强大的ARMv6指令集,支持DSP,SIMD(SingleInstructionMultipleData)扩展,支持ARMTrustZone、Thumb-2中心技术。740Dhrystone2.1MIPS,低功耗0.6mW/MHz(0.13µm,1.2V)Cortex系列Cortex-A8,Cortex-M3,Cortex-R4Cortex-A系列:面向用于复杂OS和运用的运用途置器〔applicationsprocessors〕,支持ARM,ThumbandThumb-2指令集。Cortex-R系列:面向嵌入式实时领域的嵌入式处置器,支持ARM,Thumb,和Thumb-2指令集。Cortex-M系列:面向深嵌入式价钱敏感的嵌入式处置器,只支持Thumb-2指令集SecurCore系列SecurCoreSC100,SecurCoreSC200用于SmartCard和SecureIC的32-bit处理方案。支持ARM和Thumb

指令集,软核。具有平安特征和低本钱平安存储维护单元ARMV4ARMV4是目前支持的最老的架构,是基于32-bit地址空间的32-bit指令集。ARMv4除了支持ARMv3的指令外还扩展了:支持halfword的存取支持byte和halfword的符号扩展读支持Thumb指令提供Thumb和Normal形状的转换指令进一步的明确了会引起Undefined异常的指令对以前的26bits体系构造的CPU不再兼容ARMv4TARMv4T添加了16-bitThumb

指令集,这样使得编译器能产生紧凑代码〔相对于32-bit代码,内存能节省到35%以上)并坚持32-bit系统的益处。Thumb在处置器中依然要扩展为规范的32位ARM指令来运转。用户采用16位Thumb指令集最大的益处就是可以获得更高的代码密度和降低功耗。ARMV5TE1999年推出ARMv5TE其加强了Thumb体系,加强的Thumb体系添加了一个新的指令同时改良了Thumb/ARM相互作用、编译才干和混合及匹配ARM与Thumb例程,以更好地平衡代码空间和性能并在ARMISA上扩展了加强的DSP

指令集:

加强的DSP指令包括支持饱和算术〔saturatedarithmetic〕,并且针对AudioDSP运用提高了70%性能。‘E’扩展表示在通用的CPU上提供DSP才干。ARMv5TEJ2000年推出ARMv5TEJ,添加了Jazelle扩展以支持Java加速技术。Jazelle技术比仅仅基于软件的JVM性能提高近8倍的性能减少了80%的功耗。ARMv62001年推出ARMv6,它在许多方面做了改良如内存系统、异常处置和较好地支持多处置器。SIMD扩展使得宽广的软件运用如Video和Audiocodec的性能提高了4倍。Thumb-2和TrustZone技术也用于ARMv6中。ARMv6第一个实现是2002年春推出的ARM1J(F)-STM处置器,2003年又推出了

ARM1156T2(F)-S

和ARM1176JZ(F)-S处置器。ARMv7ARMv7定义了3种不同的处置器配置〔processorprofiles〕:ProfileA是面向复杂、基于虚拟内存的OS和运用的ProfileR是针对实时系统的ProfileM是针对低本钱运用的优化的微控制器的。一切ARMv7profiles实现Thumb-2技术,同时还包括了NEON™技术的扩展提高DSP和多媒体处置吞吐量400%

,并提供浮点支持以满足下一代3D图形和游戏以及传统嵌入式控制运用的需求。ARM7TDMIThumb架构扩展,提供两个独立的指令集:ARM指令,均为32位Thumb指令,均为16位两种运转形状,用来选择哪个指令集被执行内核具有Debug扩展构造加强乘法器(32x8)支持64位结果EmbeddedICE逻辑3级流水线冯·诺依曼架构CPI(CyclePerInstruction)约为1.9图2.2.3ARM720T内核构造图2.2.1ARM7TDMI内核构造ARM7TDMI指令流水线为添加处置器指令流的速度,ARM7系列运用3级流水线。允许多个操作同时处置,而非顺序执行。PC指向正被取指的指令,而非正在执行的指令。FetchDecodeExecute从存储器中读取指令解码指令中用到的存放器存放器读〔从存放器Bank〕移位及ALU操作存放器写〔到存放器Bank〕PC PCPC-4 PC-2PC-8 PC-4ARM ThumbARM7TDMI指令流水线操作周期 1 2 3 4 56ADDSUBMOVANDORREORCMPRSBFetchDecode。FetchExecuteDecodeFetchExecuteDecodeFetchExecuteDecodeFetchFetchExecuteDecodeExecuteDecodeFetchExecuteDecodeFetch最正确流水线该例中用6个时钟周期执行了6条指令

一切的操作都在存放器中〔单周期执行〕

指令周期数(CPI)=1ARM9TDMIHarvard架构添加了可用的存储器宽度指令存储器接口数据存储器接口可以实现对指令和数据存储器的同时访问5级流水线实现了以下改良:改良CPI到~1.5提高了最大时钟频率ARM9TDMIInstructionFetchShift+ALUMemoryAccessRegWriteRegReadRegDecodeFETCHDECODEEXECUTEMEMORYWRITEARM9TDMIARMorThumb

InstDecodeRegSelectRegReadShiftALURegWriteThumb®ARM

decompressARMdecodeInstructionFetchFETCHDECODEEXECUTEARM7TDMI流水线ARM9TDMIARM9TDMIDCacheICacheMMUGLUE外部存储器ARM940T2x4KcachesMPU写缓冲ARM9xxTARM920T2x16KcachesMMU支持虚拟地址和内存维护写缓冲带Cache的ARM9TDMI图2.2.4ARM920T内核构造ARM9E-S系列概述ARM9E基于ARM9TDMI内核,有以下扩展和加强单周期32x16乘法器EmbeddedICE逻辑RT改良的ARM/Thumb交互操作新的32x16和16x16乘法指令新的计数到零指令新的饱和算术指令ARM946E-SARM9E-S内核指令和数据cache,大小可选择指令和数据RAM,大小可选择维护单元AHB总线接口ARM966E-S与ARM946E-S类似,但无cacheARM926EJ-S系列概述Jazelle形状允许直接执行Java8位码ARM926EJ-SARM9E-S内核可配置的cache和TCM内存管理单元双重32位AHB总线接口(多层)ARM10E系列概述v5TE架构CPI1.36级流水线静态分支预测32kB指令cache和32kB数据cache支持“Hitundermiss〞非阻塞的执行单元每周期64位的LDM/STM操作EmbeddedICE逻辑-RT-II支持新的VFPv1构造同ARM1020E,除了cache大小为16kB对SUDL(singleuserdesignlicense)有效ARM1020EARM1022EARM9vsARM10流水线的对比Intel®StrongARM概述ARMV4架构(无Thumb支持)5级流水线,降低跳转损耗-stagepipeline,reducedbranchpenalty改良的乘法器〔典型地比ARM9TDMI快2个周期〕不支持Multi-ICE调试(JTAG限制在连通性测试)无外部协处置器接口SA-110:16K指令和数据caches,8x16字节写缓冲.SA-1100/1110:片上外设,存储器控制器更小的cache容量PID存放器(作控制用)指令断点,经过CP15Intel®XScale™概述V5TE兼容架构7-8级流水线带统计分支预测32k的数据和指令Cache,外加2k的数据Minicache8口写缓冲,4口填充和追加缓冲完好的32位协处置器接口调试和性能监控逻辑〔经过CP14〕乘-加模块〔作为CP0〕可配置的内核时钟速度100-733MHz,来自33-66MHz输入时钟异步输入总线时钟可到100MHz〔最大总线内核时钟的1/3〕Outline2、ARM体系构造3、ARM编程模型任务形状CPU任务方式存放器组织异常内存与IO1、嵌入式微处置器ARM微处置器:编程模型处置器任务形状CPU任务方式存放器组织异常内存与IOARM微处置器:处置器任务形状〔PROCESSOROPERATINGSTATES〕处置器有两种任务形状:ARM:32位,执行字对准的ARM指令Thumb:16位,执行半字对准的Thumb指令ARM和Thumb之间形状的切换不影响处置器的方式或存放器的内容ARM微处置器:处置器任务形状进入Thumb形状:执行BX指令,并设置操作数存放器的形状〔位[0]〕为1。在Thumb形状进入异常(IRQ,FIQ,UNDEF,ABORT,SWIetc.),当异常处置前往时自动转换到Thumb形状进入ARM形状:执行BX指令,并设置操作数存放器的形状〔位[0]〕为0。进入异常时,将PC放入异常方式链接存放器中,从异常向量地址开场执行也可进入ARM形状ARM微处置器:处置器任务形状Thumb-2

:添加了混合方式才干定义了一个新的32-bit指令集能在传统的16-bit指令运转的Thumb形状下同时运转。这样能在一个系统中更好地平衡ARM和Thumb代码的才干,使系统能更好地利用ARM级别的性能和Thumb代码的密度的优势ARM微处置器:存储器格式ARM的寻址空间是线性的地址空间,为232=4GBytes0to3存储第一个word,bytes4to7存储第二个wordARM支持大端〔Big-endian〕和小端〔Little-endian〕的内存数据方式,可以经过硬件的方式设置〔没有提供软件的方式〕端方式ARM微处置器:存储器格式大端的数据存放格式低地址高地址地址A地址A+1地址A+2地址A+3最高有效字节的地址就是该word的地址最高有效字节位于最低地址worda=0xf6734bcdf6734bcdARM微处置器:存储器格式小端的数据格式低地址高地址地址A地址A+1地址A+2地址A+3最低有效字节的地址就是该word的地址最低有效字节位于最低地址worda=0xf6734bcdf6734bcdARM微处置器:存储器格式大端:小端:0xb32045000xddddddd00xb32045000xddddddd0f6f673734b4bcdcd0000dada实例变量A:wordA=0xf6734bcd,在内存中的起始地址为0xb3204500变量B:halfwordB=218,在内存中的起始地址为0xddddddd0问题:halfwordB=218与wordC=218在内存中的存放方式有何不同?请分大端和小端两种情况阐明。ARM微处置器:编程模型数据类型的商定字节型数据〔Byte〕:数据宽度为8bits半字数据类型〔HalfWord〕:数据宽度为16bits,存取式必需以2字节对齐的方式字数据类型〔Word〕:数据宽度为32bits,存取式必需以4字节对齐的方式ARM微处置器:CPU方式〔processormode〕7种CPU方式CPU方式的转变:软件控制异常外部中断ARM微处置器:CPU方式User方式程序不能访问有些受维护的资源只能经过异常的方式来改动CPU的当前运转方式特权方式可以存取系统中的任何资源System方式与User方式的运转环境一样但是它可以不受任何限制的访问任何资源该方式主要用于运转系统中的一些特权义务FIQ方式IRQ方式Supervisor方式Abort方式Undefined方式异常方式:主要是在外部中断或者程序执行非法操作时会触发ARM微处置器:存放器组织ARM处置器有37个存放器31个通用存放器:程序计数器、堆栈及其他通用存放器6个形状存放器这些存放器不能同时看到,同时只需17个不同的处置器形状和任务方式确定哪些存放器是对编程者是可见的ARM微处置器:ARMState存放器ARM微处置器:ThumbState存放器R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R0

堆栈指针(R13)

衔接存放器(R14)

程序计数器(R15)

低存放器高存放器ARMState与ThumbState存放器关系寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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形状各方式下的存放器寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_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个形状存放器。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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无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形状各方式下可以访问的存放器寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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为保管数据或地址值的通用存放器。它们是完全通用的存放器,不会被体系构造作为特殊用途,并且可用于任何运用通用存放器的指令。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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位物理存放器。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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为分组存放器。它们所对应的物理存放器取决于当前的处置器方式,几乎一切允许运用通用存放器的指令都允许运用分组存放器寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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的处置速度。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcR13寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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的指令。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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对应的异常方式版本设置为异常前往地址〔有些异常有一个小的固定偏移量〕。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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程序计数器R15〔PC〕存放器R15为程序计数器〔PC〕,它指向正在取指的地址。可以以为它是一个通用存放器,但是对于它的运用有许多与指令相关的限制或特殊情况。假设R15运用的方式超出了这些限制,那么结果将是不可预测的。ARM微处置器:通用存放器R15用作程序计数器(PC),可以被读写ARMstate:bits[1:0]为0,bits[31:2]即为PC.THUMBstate:bit[0]为0,bits[31:1]即为PCARM微处置器:程序形状存放器CPSR〔当前程序形状存放器〕在一切的方式下都是可以读写的,它主要包含:条件标志中断使能标志当前处置器的方式其它的一些形状和控制标志ARM微处置器:程序形状存放器置0表示执行32bit的ARM指令置1表示执行16bit的Thumb指令NegativeZeroCarryOverflowIRQ中断的呼应:置1:制止呼应置0:允许呼应FIQ中断的呼应:置1:制止呼应置0:允许呼应条件标志方式控制位ARM/Thumb控制标志中断标志ARM微处置器:程序形状存放器方式控制位M0-M4ARM微处置器:异常异常是由内部或者外部缘由引起的,当异常发生时CPU将暂停执行当前指令自动到指定的向量地址读取指令并且执行。在X86上,当有异常发生时CPU是到指定的向量地址读取要执行的程序的地址而ARM是到向量地址的地方读取指令,也就是ARM的向量地址处存放的是一条指令〔普通是一条跳转指令〕ARM微处置器:异常ARMCPU将引起异常的类型分为7种ARM微处置器:异常当异常出现时,异常方式分组的R14和SPSR用于保管形状,即:R14_<exception_mode>=returnlinkSPSR_<exception_mode>=CPSRCPSR[4:0]=exceptionmodenumberCPSR[5]=0/*在ARM形状执行*/if<exception_mode>==ResetorFIQthenCPSR[6]=1/*制止快速中断*/CPSR[7]=1/*制止正常中断*/PC=exceptionvectoraddress当处置异常前往时,将SPSR传送到CPSR,R14传送到PC异常的优先级异常向量VectorTable异常处置当异常产生时,ARMcore:拷贝CPSR到SPSR_<mode>设置适当的CPSR位:改动处置器形状进入ARM态改动处置器方式进入相应的异常方式设置中断制止位制止相应中断(如需求)保管前往地址到LR_<mode>设置PC为相应的异常向量前往时,异常处置需求:从SPSR_<mode>恢复CPSR从LR_<mode>恢复PCNote:这些操作只能在ARM态执行.Vectortablecanbeat

0xFFFF0000onARM720T

andonARM9/10familydevicesFIQIRQ(Reserved)DataAbortPrefetchAbortSoftwareInterruptUndefinedInstructionReset0x1C0x180x140x100x0C0x080x040x0084进入异常的操作R14_<Exception_Mode>=ReturnLinkSPSR_<Exception_Mode>=CPSRCPSR[4:0]=ExceptionModeNumberCPSR[5]=0;当运转于ARM形状时IF<Exception_Mode>==ResetorFIQthen;当呼应FIQ异常时,制止新的FIQ异常CPSR[6]=1;CPSR[7]=1;PC=ExceptionVectorAddress当异常终了时,异常处置程序必需:1.将LR〔R14〕中的值减去偏移量后存入PC,偏移量根据异常的类型而有所不同;2.将SPSR的值复制回CPSR;3.清零在入口置位的中断制止标志。注:恢复CPSR的动作会将T、F和I位自动恢复为异常发生前的值。退出异常例子:用户方式到FIQ方式*spsr_fiqcpsrr7r4r5r2r1r0r3r6r15(pc)r14_fiqr13_fiqr12_fiqr10_fiqr11_fiqr9_fiqr8_fiqr14(lr)r13(sp)r12r10r11r9r8用户方式CPSR复制到FIQ方式SPSRcpsrr15(pc)r14(lr)r13(sp)r12r10r11r9r8r7r4r5r2r1r0r3r6r14_fiqr13_fiqr12_fiqr10_fiqr11_fiqr

温馨提示

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

评论

0/150

提交评论