ARM体系结构详解第2章精_第1页
ARM体系结构详解第2章精_第2页
ARM体系结构详解第2章精_第3页
ARM体系结构详解第2章精_第4页
ARM体系结构详解第2章精_第5页
免费预览已结束,剩余24页可下载查看

下载本文档

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

文档简介

1、ARM嵌入式系统第2章ARM体系结构占ARM微处理器的编程模型 ARM微处理器的工作状态 ARM体系结构的存储器格式 ARM体系结构的指令长度及数据宽度 ARM微处理器的处理器模式 ARM体系结构的寄存器组织 ARM後处理器的异常状态字、半字、字节字(Word)在ARM体系结构中,字的长度为32位半字(Half-Word)在ARM体系结构中,半字的长度为16位字节(Byte)在ARM体系结构中,字节的长度为3位。字对齐:四字节对齐 半字对齐:两字节对齐ARM微处理器的工作状态(1)两种状态: ARM状态:处理器执行32位的字对齐的ARM指令 Thumb状态:处理器执行16位的、半字对齐的Thu

2、mb指令处理器工作状态的转变并不影响处理器的工作模式和相应 寄存器中的内容。ARM微处理器的工作状态(2)状态切换:BX () 48令的条件码。忽略时无条件执行.VRm专存器中为凝特的目标地址,存器的bitO】为0时, 目标地址处的指令为ARM指令;当存耳的bit0】为1时,0标 地址处的指令为Thumb指4%伪代码:if ConditlonPassed(cond) thenT Flag=:RmI0PCMRm AND OxFFFFFFFEARM体系结构的存储器格式(1)ARM微处理耳在复位或上电时处于ARM状*,发生并常时处于ARM状态AKM体系结构所支持的*大寻址空间为4GB (2字节) 大

3、端格式(Big Endian)字数据的高字节存储在低地址中,而字数据的低字节则存 放在高地址中。 小端格式(Little Endian)低地址中存放的是字数据的低字节,高地址存放的是字数 据的高字节。ARM体系结构的存储器格式(2)字曲址840字地址 A I: ft 89AB45670123(0H)=0123H (4H)=4567H (8H)=89ABHBig Endian(0H)=3210H(4H) =7654H(8H) =BA98HLittle EndianARM体系结构的存储器格式(3)rOs 0x11223344 11 22 33 44ARM体系结构的指令长度及数据宽度指令长度:32位

4、(在ARM状态下)16位(在Thumb状态下) 数据宽度:字节(8位)半字(16位)字(32位)三种数据宽度对存储器及外部设备的访问。韓応礬卅宇龍囂戋熬貂呼)、半ZARM微处理器的处理器模式(1)只 lifPC)ROR1KZ尽3FURSMR7KdFRIORUR12、Rn初、Rl 4fR1GPOIRQ忌2m而RmRI1肌1 m RgjtqRlfiiPClRoRTK290R5MP7KBR%AidRUR12 R* und、Rt4 undRUrc)SyttemAKMttATI CPSft r I CPSft4 却LCPCRSRgI CPSR I CPSRI CPSWARM状态下的寄存器组织(3) 来分

5、组寄存器(Unbanked Regishor) ROR7 同一个寄存器名,在ARM微处理器内部只有一个独立的物 理寄存器与之对应。在所有的运行模式下,未分俎寄存器都指向同一个物理寄 存S,他们未被系统用作特殊的用途。在中斷或异常处理进行运行模式转换时,由于不同的处理 器运行模式均使用相同的物理奇存器,可能会造成子存器 中数据的破坏,这一点在进行程序设计时应引起注*。ARM状态下的寄存器组织(4)ARM状态下的寄存器组织(5) 分纽寺存莠(Banked Register) R8R14个夸存X老,在ARM微处理內部存在多个粒立的物理芳存器 对于分俎寺存器,他们每一次所访问的物理与处理当甫的运 行模

6、式有关。R8-R12:对应两个不同的物理奇存耳 fiq 模式:R8_f iqR12_f iqR8_usr R12_usr非fiq模式:R13. R14:对直6个不同的物理寄存為用户模式与廉统模式共用一个另外5个场理寺存对应于其他5种不同的适行模式Rn_mode: usr. fiq. irq、svc、abt. und寄存SR13 寄存器R13在ARM指令中常用作堆桟指针。在用户应用程序的初始化部分,一般祁要初始化每种模式 下的R13(R13 SV6 R13 irq. R13 fiq. R13 abt和R13_und ),使其指向该运行模式的桟空间。当程序的运行进入异常模式时,可以将需要保护的寄存

7、器 放入R13所指向的堆栈,而当程序从异常模式返回时,1 从对应的堆栈中恢复,采用这种方式可以保证异常发生后 釋序的正常执行。ARM状态下的寄存器组织(6)奇存器R14子程序连接寄存器(Subroutine Link Register)或 链接子存器LRo子程序调用:当执行BL(BLX)子程序调用指令时,R14中得到R15 (程 序计数SPC)的备份。中斷或异常:Exampie: Call SubroutineKcthambiviir User Mode对应的分组寄存器R14_svc R14_irqs R14_fiq、 R14 abt和R14 und可来保存R1詡返回值。一Example: U

8、ser to FIQ modeARM状态下的寄存器组织奇存R15 程序计fcPC, 奇存R15用作程序计敷莠(PC).虚ARM状态下,位1:0为0, U 31:2用于保存PC;在Thujnb状态下,住【0】为0,位【31:1用于保 存PC。由于ARM体系结构采用了多水ft技术,对于ARM指令集而右,PC总 是柑向当营柑令的下两条1令的地址,即PC的值为当甫令的地址值 刼8个字节ARM状态下的寄存器组织(8)译码指令译码执行从存俎中读寺存器,移位和ALU操作.将器写回到44器组指令流水銭坊能段划分指令1取指译码执行取指I译码I亦订I取柑丨译码I执行ARM#周期柑令3级流水ft操作ARM状态下的寄

9、存器组织(9)当苗程序状态奇存器CPSRCPSR(Current Program Status Register)CFSR可在任何运行模式下被访问,它包括条件标志位、中斷禁止位、当甫处 理式标志位,以及其他一些相关的技制和状*位。备份的程序状态夸存USPSR (Saved Program Status Register), 当幷常发生时,SPSR用于保存CPSR的当前值,从异常退出时則可由SPSR来 恢 XCPSRo用户模式和系蜿模式不属于异常模式,他们没有SPSR,当在这两种模式下访 问SPSR,结果是来知的。ARM状态下的寄存器组织(10)ARrtMfi31227262S2487651:屮

10、丨|;片V4 M3 M2 U1 I W0OversowMCd9M&CmyBor*Mr.E.MncfZroThansueMIRQgbteCPSR1 ARM状态下的寄存器组织(11) 条侔码标志 (Condition Code Flags)N、Z C、V:条件码标志位。可被算术或逻辑运算的结 果所改变,并且可以决定某条指令是否被执行。在ARM状态下,绝大多数的指令都是有条件执行的。在Thumb状态下,仅有分支指令是有条件执行的。标志位含义NN=1表示运算的#4果为ft ft; N=0表示运算的炖果为正ft咸$:ZZ-1表示运鼻的结果为窄;zo表示运算的估果为非字C加法达算(包括比校指令CMN):当

11、运算结皋产生了进位时(无符号ft 溢出),Cl,否则00.减法逵算(包括比絞坍令CMP):当运算时产生了借位(无符号數溢岀 ),C-0,杏则Cl对于包舍移位操作的非加/减运jMn令,C为秒出值的ft后一位 对于耳他的非加/减运算指令 C的值通僧不改变V对于加/减法运当操作ft和运果为二进制的补碍展示的带苻 号敛时V:L表示符号位溢出对于其他妁非加/减适算指令,C的值通舎不改变Q在ARM v5及以上版的E系列处理中,指示增僕的DSP达算 梧令是杏发生了溢出庄其他厳本的处理屮,Q标志位无定义.ARM状态下的寄存器组织(12)ARM状态下的寄存器组织(13)控制位CPSR的低8位(包括T、F、T和M

12、4: 0)称为控制 位,当发生异常时这些伎可以被改变。如果处理S 处于特权模式,这些位也可以由程序修改。中斷禁止住工、F: 1=1禁止工RQ中斷F=1 禁jEFIQ中斷T标志住:T=1Thumb 状态T=0ARM状态占ARM状态下的寄存器组织(14)M4: 0运行模式位:这些位决定了处理器的运行模式。M4: 0)处理snxb访何的奇OblOOOO用户喉KPCCPSRR0-R14OblOOOlFIQ模式PCCPSRSPSR.fiq. R14. fiqR8.fiq R7R0OblOOlOIRQPCCPSRSPSR_irq. R14丄Eq.R13_irq R12 *R0OblOOll骨理熨丸PCCP

13、SRSPSR SVC. R143VC,R13-SVC,R12 RO.OblOlIl中止樂KPCCPSRSPSR_abt. R14abtR13_abt. R12RO.OblLOIlPCCPSRSPSR_und. R14und.R13 und, R12 R0OblLlllPCCPSBR14 RO百ARM状态下的寄存器组织(15)保留位CPSR中的其余位为保留位,当改变CPSR中 的条件码标志位或者控制位时,保留位不要 被改变,在程序中也不要使用保留位来存储 数据。保留位将用于ARM版本的扩展。ARM微处理器的异常状态(2)ARM微处理器的异常状态(1)常(Exception)当正常的程序执行流程发

14、生改变时,称之为异常。异常类型运行模式复位SVC未定义指令und软件中斷SVC指令预取中止abt数据中止abtIRQ (外部中斷请求)irqFIQ (快速中斷请求)fiq肖处理君转攵纯电+有破叶,Mt住片帝,凰序ti4F IT处理ft序处状仟专AM(处理戏协处理遇不能处理的今时,戶生我宅义拎令 冷倉址行软侔仿JU软件屮斷该并翕曲伙仃SWI栢令戶it. ”T用户權K下的样序M同希权* 作令1使用并*机制实现杀觐力能诉用4令取中止若处rf.Rfrft令的地址不存A,戎*地址不处许当材柑令访问. 存会向处球岌出中止但豈取的粉令铁执行时.才 会戶土精令肮中止异常黄梢申止若俺理访柿金妗地址不AA,憑址地

15、址不丸许当前描令 访时戶生救塀屮止并*IRC (外押中斷请朮)当处理钓片部申序请求引胆有it JLCPSR中的I位为0时,戶i IRQ鼻常爪規的外址r遏过请求申虧眼务-FIO (快it中斷请求)当处理的快遑申斷请求引*打*L XCPSR中的F住为0,戶生 FIQ并常.ARM微处理器的异常状态.-SF异常的响应Example: User to FIQ modeARM微处理器对异常的响应过程用伪码可以描述为:R14_ = Return LinkSPSJ = CPSRCP SR 4 : 0 = Exception Mode NumberCP SR5 = 0/* 在 ARM 状态执行 */If = R

16、eset or FIQ then CPSR6 = 1/禁止快途中斷/否则CPSR 6不变*/CPSR7 = 1PC = Exception Vector AddressM4: 01处1访间約育存obioooo同户樓丸PC, CPSR.R0-R14OblOOOlFIQ心PC, CP SR, SPSR fiq R14 fiq-R8 fiq, R7 ROOblOOlOIRQ 模 KPC, CPSR, SPSR-irq. R14-irqR13-irqR12 ROOblOOllPC, CPSR. SPSR_svc, R14 5VC,R13 svc, ,R12ftO,OblOlll中止筑犬PC, CPSR

17、, SPSR.abt, R14_abt.R13.abt, R12-R0,*ObllOll来尢义根KPC, CPSR. SPSR.und. R14.und,R13.und, Ri2R0,.-Oblllll2樂人PC, CPSR, R14ROARM微处理器的异常状态(4)JUi尢成下列操作:R14_svc UNPREDICTABLE valueSPSR_svc = UNPREDICTABLE valueCPSR4:0 OblOOll/*进入管理模A?/CPSR50/*ARM欢;6执行/CPSR611禁止快逵中ftp/CPSR7)1/禁止正常中斷/If high vectors configured

18、 thenPOOxFFFFOOOOelsePOOxOOOOOOOOJUi不需矣丄ARM微处理器的异常状态(5)来定义柑令井常出观时,执行下列操作:R14 und address of next inatructlon after the undefxned instruction SPSR_und CPSRCPSrT4;O ObllOllCFSRS 0/进入来定义MX.*/ /在ABM状态执行/ /*CPSR(6)不变/ CPSR7) - 1/*禁止正僧中斷/If high vectors configured thenPC=0xFFFF0004elseP00x00000004it回:MOVS

19、 PC,LR设Jt bit, PC微为B的子存虚转权不仅仅OPC,荷A拎USPSR列 CPSR.ARM微处理器的异常状态(6)管理异常畀常出现时,执行下列*作:R14_3VC = address of next instruction after the SWI instruction SPSR_svc CPSRCFSH4:0 OblOOll CPSR5) 0进入管理模扎/ /*点ARM状态执行*/ /*CPSR(6)不变 */ CPSR7 1/禁止正常中斷/If high vectors configured thenPOOxFFFFOOOeelsepooxoooooooei&W:MOVS

20、PC, LR丄ARM微处理器的异常状态(7 )預取中止异常出现时,执行下列操作:R14 abt = address of the aborted Instruction + 4 SPSR_abt CPSR/进入指令预取中止模犬/ 在ARM次态执行*/ /*CPSR6不变/*禁止正常中断/CPSrT4:0 - OblOlllCPSR5 0CPSR(7 1If high vectors configured thenPOOxFFFFOOOCelseP OOxOOOOOOOC返回:SUBS PC, LR,#4X ARM微处理器的异常状态(8)預取中止异常出现时,执行下列操作:R14_abt = ad

21、dress of the aborted Instruction + 8进入中止模式*/ 在ARM次态执行*/ /*CPSR6不变/ /*禁止正常中断/SPSR_abt CPSRCPSrT4:01 - OblOlllCPSR5 0CPSR(7 1If high vectors configured thenPO=0xFFFF0010elseP 00x00000010返回:SUBS PC, LR,#8S3C4510B中断控制器32-Brt Sytem Bus内部中斷源中斷控 (特需功能存)中斷控(特需功能存)X arm微处理器的异常状态(9)40处上的入钏lr由TRQ齐的优丸UrtTTQ升豊It

22、入 r工Q处现廿.lb#IRQ*ir.箸CPSR釣I位为 1. 1H桂止IRQ异鸽井I位为0. HARMA-tt 4-Mn3tJ6IRQ*入.iRQXib若CPSR的F位为着Fji为0, ARMA指令执行完之后检交FIQ输 入FIQ异IT出现时,执行下列*作:R14_iq address of next xnatruotion to be executed + 4 SPSfiq CPSRCPSrT4:0 OblOOOl/进入F工Q模式/CPSR 5) = 0/隹 ARM 状直执行/CPSRtei 1/*止快it中/CPSR7 1/榦止正常中斷/If high vectors configure

23、d thenPOOxFFFFOOlCelsePOOxOOOOOOlC返回:SUBS PC, LR,*4ARM彳敖处理器的异常状态(11)从异常返回异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:1、将连接寄存器LR的值减去相应的偏移量后送到PC中2、将SPSR复制回CPSR中3、若在进入异常处理时设置了中断禁止位,要在此清除X ARM微处理器的异常状态(12)返回盘令BLMOV PC, LR;R14SWIMOVS PC, LR;R14 svcUDEFMOVS PC, LR;R14 undFIQSUBS PC, LR, #4;R14 fiqIRQSUBS PC, LR, 4;R14 irqP ABTSUBS PC, LR,堂4;R14 abtDABTSUBS PC, LR, it8;R14 abtRESETNA丄ARM微处理器的异常状态(13)向量(Exception Vectors)并借出现后强创从并常矣时应的a定存住地址开执柠序i4*B定 约地址称为异常向业地U并

温馨提示

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

评论

0/150

提交评论