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

下载本文档

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

文档简介

ARM嵌入式系统

第2章ARM体系结构ARM微处理器的编程模型♦ARM徴处理器的工作状态♦ARM体系结构的存储器格式♦ARM体系结构的指令长度及数据宽度♦ARM微处理器的处理器模式♦ARM体系结构的寄存器组织ARM微处理器的异常状态字、半字、字节字(Word)在ARM体系结构中,字的长度为32位半字(Half-Word)在ARM体系结构中,半字的长度为16位字节(Byg)在ARM体系结构中,字节的长度为8位。JARM微处理器的工作状态(1)字对齐:四字节对齐半字对齐:两字节对齐两种状态:ARM状态:处理器执行32位的字对齐的令Thumb状态:处理器执行16位的、半字对齐的Thumb指令处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。IARM微处理器的工作状态(2)状态切换:BX{<cond>}<Rm><cond>指令的条件码。忽略时无条件执行。vRm>子存器中为跳转的目标地址,当<Rm><存器的bit[O]为0时,目标地址处的指令为ARM指令当<RmM存器的bit[O]为1时启标地址处的指令为Thumb指令。伪代码:ifConditionPassed(cond)thenTFlag=Rm[O]PC=RmANDOxFFFFFFFEARM微处理器在复位或上电时处于ARM状态,发生异常时处于ARM状态。右ARM体系结构的存储器格式(1)ARM体系结构所支持的最大寻址空间为4GB(2人字节)♦大端格式(BigEndian)字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。♦小端格式(LittleEndian)低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。右ARM体系结构的存储字地址器格式(2)(0H)=0123H(4H)=4567H(8H)=89ABHBigEndian字地址89AB45670123(0H)=3210H(4H)=7654H(8H)=BA98HLittleEndian右ARM体系结构的存储器格式(3)R2=LittleendianBigAendianR2=LittleendianBigAendianrO=0x11223344I11I2233:44I右ARM体系结构的指令长度及数据宽度♦指令长度:32位(在ARM状态下)16位(在Thumb状态卞)♦数据宽度:字节(8位)半字(16位)字(32位)三种数据宽度对存储器及外部设备的访问。要中,字数据需要按址的最对齐为熬的低两位为0)、半字数据需ARM微处理器的处理器模式(1)7种处理器模式:异♦用户模式(usr):用户应用程序♦系统模式(sys):特权模式•快速中断模式(fiq):用于快速数据传输通用的中断处理♦终止模式(abt):通用的中断处理♦终止模式(abt):数据访问中止或指令预取中止♦中斯■模式(irq):♦管理模式(svc):操作系统使用的保护模式♦未定义指令模式(und):未定义的指令执行时管理模式(SVC)是系统复位后的默认模式特权模式(PrivilegedModes)异常模式(ExceptionModes)右ARM微处理器的处理器模式(2)ARM微处理器的运行模式可以通过软件改变(特权模式),也可以通过外部中断或异常处理改变。大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。也不能改变模式。除非异常发生。特权模式可以自由地访问系统资源和改变模式。右ARM体系结构的寄存器组织(1)37个32位的子存器:•31个通用寄存器来分组爭存器(UnbankedRegister):R0~R7分组子存器(BankedRegister):R8〜R14程序计数爲R15(PCA8针)6个状态寄存耳,用以标识CPU的工作状态及租序的运行状态,目前只使用了其中的一痒分•在每一种处理器模式下均有一俎相应的寄存器与之对应。在所有的奇存器中,有些是在7种处理器模式下共用的同一个物理子存器,而有些寄存器则是在不同的处理器模式下有不同的物理芳存器

AKnojEMBAI%I▼fitR2W呑4R5R6R7tq-状态薪的寄存i1骼且织(2AKnojEMBAI%I▼fitR2W呑4R5R6R7tq-状态薪的寄存i1骼且织(2R1

k2R3貝0R1R2R3"rinqRr"tlqROR1血R3A4RSnoR7RSMR1ORIIR1JKRH*nflq<KWnqRHwqR15IPC1分血4BRIG(nct*SPCCPSRCPSRCPSRCPSRCPSRK3PAR-qkjjPSRtvc⑸aPSF册右ARM状态下的寄存器组织(3)未分组寄存器(UnbmnkedRegister)RO〜R7同一个寄存器名,在

ARM微处理器内部只有一个独立的物理寄存器与之对应。在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途。在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会造成疥存器中数据的破坏,这一点在进行程序设计时应引起注意。UserMUserMhodtnaddrmcukuhtcd«ndstoredImLK占ARM状态下的寄存器组织(4)♦分俎寺存器(BankedRegister)R8~R14同一个寄存器名在ARM微处理肴內部存在多个独互的物理寄存器对于分组寺存器,他们每一次所访问的物理寄存器与处理器当前的运行模式有关。R8〜R12:对应两个不同的物理子存器fiq模式:R8_fiq〜R12_£iq非模式:R8usr〜R12usrR13.R14:对应6个不同的物理寄存鸟用户模式与系统模式共用一个另外5个物理辛存器对应于其他5种不同的运行模式Rn_<mode>mode:usrAfiqAirqAsvcAabt・und占ARM状态下的寄存器组织(5)♦寄存器R13寄存器R13在ARM指令中常用作堆桟指针。在用户应用程序的初始化部分,一般都要初始化每种模式下的R13(R13_svc、R13_irq、R13_fiqxR13_abt和R13_und),—使其指向反运行模式忌空间。一当程序的运行进入异常模式时何以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复,采用这种方式可以保证异常发生后程序的正常执行。占ARM状态下的寄存器组织(6)寄存器R14子程序连接寄存器(SxibroutineLinkRegister)或链接奇存器LR。子程序调用:当执行BL(BLX)子程序调用指令时,R14中得到R15(程序计数器PC)的备份。中斷或异常:对应的分组奇存器R14_svu、R14_irq>R14_fiq.R14_abt和R14_und甬来保存R1詡返回值。一^Example:CallSubroutine

右Example:UsertoFIQmode21HvtumiMidrvuokvhlrdfnunIwrrrnnkP4tuhi<dmKlNrniinUQrr*iMkIR*crnwwk(TSRcnpicdioHQmodeSl*SRRcfHrpknw*rHrxMrr^mitMhIMiKic21HvtumiMidrvuokvhlrdfnunIwrrrnnkP4tuhi<dmKlNrniinUQrr*iMkIR*crnwwk(TSRcnpicdioHQmodeSl*SRRcfHrpknw*rHrxMrr^mitMhIMiKicFIQModeEXCEPTION占ARM状态下的寄存器组织(7)寄存SRI5程序计数耳PC。寄存器R15用作程序计數器(PC)o在ARM状态下,位[1:0]为0,位[31:2]用于保存PC;在Thumb状态下,位[0]为0,位[31:1]用于保存PC。由于ARM体系结构采用了多级流水钱技术,对于ARM指令集而言,PC总是描向当前拒令的下两条指令的地址,即PC的值为当前柑令的地址值加8个字节。ARM状态I下的寄存器组织(8)取指从存储器取指译码指令译码从寄存券组中读寄存器,移位和ALU

操作.将寄存器写回到育存器组指令流水线功能段划分指令取指译码执行取指译码执行取指译码执行ARM#周期指令3圾流水线操作右ARM状态下的寄存器组织(9)当俞程序状态奇存器CPSRCPSR(CurrentProgramStatusRegister)CPSR可在任何运行模式下被访问,它包括条件标志位、中斷禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。备份的程序状态寄存器SPSR(SavedProgramStatusRegister),当异常发生时,SPSR用于保存CPSR的当前值,从并常退出时则可由SPSR来恢复CPSRo用户模式和系统模式不属于异常模式,他们没有SPS&当在这两种模式下访问SPSR,结果是未知的。ARM状态下的等存器组织(10)M4!MJMiMl紬0CPSRM4!MJMiMl紬0CPSR(11)ARM状态下的寄存器组织(11)码标志(ConditionCodeFlags)N、乙C.V:条件码标志位。可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。在ARM状态下,绝大多数的指令都是有条件执行的在Thumb状态下,仅有分支指令是有条件执行的。右ARM状态下的寄存器组织(12)标志位含义NN=1表示运算的结果为负数;N=0表示运算的炜果为正牧戒.牢・ZZ«1表示达算的结果为窣;z=o衣示达算的站果为非家。C加法远算(包括比校指今CMN):当达算结果产生了进位时(无符号敛溢岀)>O1.否期00・减法运算(包括比校拾令CMP):当运算时产生了借位(无符号敦溢出),C-0,否则O1.对于包含移位操作的非加/减运算抬今,C为移出值的就丘一位。对于其他的非加/域运算指今.C的債通僧不改变・V对于加/减法运以掘令,当揉作敘和运y九果为—进制的补码展示的带符号救时■V“衣示幷号位溢出。对于其他的非加/减适算指令,C的值通會不改变.Q在ARMv5及以上飯农的E系列处理器屮•用Q标志位指示增农的DSP运用指令是杏发生了溢出。雇其他版本的处理器中,Q标志位无定义•右ARM状态下的寄存器组织(13)控制位CPSR的低8位(包括工、F、T和M[4:0])称为控制位,当发生异常时这些位可以被改变。如果处理器处于特权模式,这些位也可以由程序修改。中断禁止伎工、F:1=1禁止IRQ中断F=1禁jEFIQ中断T标志位:T=1Thumb状态T=0ARM状态右ARM状态下的寄存器组织(14)M[4:0]运行模式位:这些位决定了处理器的运行模式。M[4:0)处理器樓式呼访何旳奇存爲OblOOOO用户埃式PC.CPSR.R0-R14OblOOOlFTQ模贞.PC.CPSR,SPSR_fiq.R14_fiq-R8_fiqrR7〜ROOblOOlOIRQ模KPC,CPSR,SPSRirq.R14_irqrR.3_irqFB12-ROObiOOllPC,CPSR.SPSRSVC.R14SVC.R13SVC,R12-R0f''rfOblOlll+•-\PC,CPSR,SPSR'bt.R14AabtrR13_abtrR12-R0,OblLOllPC,CPSR.SPSR_und.R14_undrR13_undrR12~R0.OblLlllPC.CPSR,R14〜RO右ARM状态下的寄存器组织(15)隸留位CPSR中的其余位为保留位,当改变CPSR中的条件码标志位或者控制位时,保留位不要被改变,在程序中也不要使用保留位来存储数据。保留位将用于ARM版本的扩展。ARM彳放处理器的异常状态(1)H-H带(Exception)当正常的程序执行流程发生改变时,称之为异常。处理器的异常状态(2)ARM异常类型运行模式ARM异常类型运行模式复位SVC未定义指令und软件中断SVC指令预取中止abt数据中止abtIRQ(外部中断请求)irqFIQ(快速中断请求)fiq具体含又ii位为处理器的取代由34效时•产生段代总索•权序從岭刘复倪并當处理程序处执行.来丈义档令为ARM处理爲戏协处理爲遇卅不能处段的描令时,戶土来定义打令片倉.T茯円该严常机制址行秋件仿A。软件中斷诫并常曲执行SWI档今产土・11冃户陨式下釣税序训冈转収揉作梧令•巧使用该并常机制实观恳規动彪勇用•扌旨令预取中止若处现每泉和楷令的地址不存戎初地址不允许当林掛令访问•冇赭呂会向处理届发出中止馆号•但当更駅的栉令啟执行时•才会产土柑令预取中止异常。it黑中止若处理器黄据访何柑金的地址不存在,孤谨地址不允许号刖棚今访问时,产生救撼中止并席.IRQ(外邯中斷请現)少处理&的外禅中斷请汞引膚有败ACPSR中的I位为oth户生IRQ并带•系fit的外汶r■通过址界常请求中斷服务.

FIQ(快逵中斷量求)当处理器的快速中晰请求引腾有域,XCPSR中的F炷为0时严生FIQ畀常.ss①」pp<」04杲>uold①UXLUnud■chshscd、*^e〔9」#SCDLIKn*、T"sMsdu①一I-old」01①s①#H人①pol/\IIUOQd①UXLUV4i、*^区燈奖三#<w*、。丄巴"SCO」QquunN①POEuog①UXLUHp寸疋sdu"SCOH人①pol/\lluo一-d①uxLUvl#sdsdu-」u」n^#H人①pol/\IIUOQd①UXLUV|寸1#「il「-Mo二"二z工JPO7J71①POUIOISop6sq①cnn-①怛鸟g®味女#<CxJM(4:0]处眾马浜氏1访问的弯右爲OblOOOO用"乂PC,CPSR.R0-R14OblOOOlFIQMXPC.CPSR-SPSR_fiq.R14_fiq-R8fiqrR7~ROOblOOlOIRQ*APC.CPSR.SPSR_丄rq.R14_irq•R13_irq•R1.T〜ROOblOOll軒理澳式PC,CPSR.SPSR-Svu,R14SVC,R13svc,tR12〜RO.OblOlll中止块式PC,CPSR,SPSRabt,R14abtR13abtR12~R0.**rrObllOll来定义樓式PC.CPSR,SPSR-Und•R14undrR13undfR丄2〜RO.OblllllPC,CPSR.R14〜RO就沁学的异常状态⑷复位完成下列操作:R14_svc■UNPREDICTABLEvalue/*进入管理旗式•//■在/*进入管理旗式•//■在ARM状态执行•//*禁止快it中斷*//•禁止正常中斷•/CPSR[4:0]=OblOOllCPSR[5]=0CPSR[6]«1CPSR[7]=1IfhighvectorsconfiguredthenPOOxFFFFOOOOelsePOOxOOOOOOOO复位不需矣返回.ARM微处理器的异常状态(5)指令异常未定义指令异常出现时.执行下列操作:R14_und=addressofnextinstructionaftertheundefinedinstructionSPSR_und=CPSRCPSRT4:0]=ObllOllCPSR⑸=0CPSR[7]工1IfhighvectorsconfiguredthenPC=0xFFFF0004elsePC=0x00000004/•进入未定义樓式•//•在*//*CPSR[6]不变*//*禁止正常中斷•/MOVSPC,LRARM微处理器的异常状态(6)设Jt'®bit,PC做为目的底转权模犬不仅仅更斬PC,而且挎JQSPSR到CFSR.管理异常异常出现时,执行下列操作:R14_svc=addressofnextinstructionaftertheSWIinstructionSPSR_svc■CPSR/•进入管理模A///•在ARM/*CPSR[6]不变*/CPSR[7]=1/•禁止正常中斷•/CPSR[4:0]=OblOOIICPSR[5]=0IfhighvectorsconfiguredthenPC=OxFFFFO0O8elsePC=0x00000008返回:MOVSPC,LR预取中AR预取中止异常出现时,执行下列操作:R14_abt=addressoftheabortedinstruction+8SPSR_abt=CPSRCPSr预取中止异常出现时,执行下列操作:R14_abt=addressoftheabortedinstruction+8SPSR_abt=CPSRCPSr"[4:0]=OblOIIICPSR[5]-0CPSR[7]=1/•进入中止模式#//★在ARM状态执行*//*CPSR[6]不变*/"禁止正常中斷★/IfhighvectorsconfiguredthenPC=OxFFFF0010elsePC=0x00000010返回:SUBSPC,LR,#8XARM微处理器2・Bi年常状态(9)SytemBus通垃处理召上的IRQ输入引片,由外样产生XRQ舟倉•TRQ井倉的优尢级比FTQ卉倉当址入FTQ处理叶•会屛住抻IRQ异術。蓍CPSR的I位为一则禁止IRQ荼I位为0.JHARM在押令执行丸之后检士工RQ输入.IRQ畀倉出现时,执行下列操作:R14_lrq■addressofnextinstructiontobeexecutedCPSR(4:0]=OblOOIOCPSR(5]■04SPSRirqR14_lrq■addressofnextinstructiontobeexecutedCPSR(4:0]=OblOOIOCPSR(5]■0/•址入IRQ樓式•//*X1ARM状杰执行•//■CPSR[6]不变•/CPSR[7]=1/*<止正韋中析"IfhighvectorsconfiguredthenPC-0XFFFF0018elsePC-0x00000018<•:SUBSPC,LR#»4

ARI断请束(elq)异常J.通过处理冯上的EIQ输入引脚,由外祁产生FTQ异常.若CPSR的F位为I,则禁止FTQ异索•若F位为0,则ARM/I梧令执行完之后检查FIQ«T入FTQ异倉出现时,执行下列操作:/•进入FTQ模式/•进入FTQ模式♦/"在r•/CPSrT4:0]=OblOOOl/•禁止快速中斷•//•禁止正常中斷/•禁止快速中斷•//•禁止正常中斷•/CPSR同-1CPSR[7]工1IfhighvectorsconfiguredthenPC=0xFFFF0O1CelsePC=0x0000001C返回:SUBSPC,LR|#4占ARM微处理器的异常状态(11)♦从异常返回异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:1、将连接寄存器LR的值减去相应的偏移量后送到PC中2、将SPSR复制回CPSR中3、若在进入异常处理时设置了中斷禁止位,要在此清除..ARM微处理器的异常状态(14)ARM微处理器的异常状态(12)常进入/退出小结返T捲令BLMOVPC,LR;R14SWIMOVSPC,LR;R14svcUDEFMOVSPC,LR;R14undFIQSUBSPC,LR,#4;R14fiqIRQSUBSPC,LR,#4;R14irqPABTSUBSPC,LR,#4;R14abtDABTSUBSPC,LR,#8;R14abtRESETNAARM微处理器的异常状态(13)倉向量(ExceptionVectors)异岔出现后冬制从并常吳型对应的因定存借莠地址开始执行程序。这些因定的地址称为异常向量•地址并常进入檢丸0x0000,0000复位管理摸式0x00000004r未定义指令未定义模丸0x0000,0008软伸■中斯0x0000ooo

温馨提示

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

评论

0/150

提交评论