第三讲 ARM编程模型,异常处理.ppt_第1页
第三讲 ARM编程模型,异常处理.ppt_第2页
第三讲 ARM编程模型,异常处理.ppt_第3页
第三讲 ARM编程模型,异常处理.ppt_第4页
第三讲 ARM编程模型,异常处理.ppt_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

1、第三讲 ARM微处理器编程模型和异常处理,第二讲 ARM7TDMI嵌入式微处理器原理 ARM 微处理器的编程模型 ARM微处理器的异常处理,存储程序处理器,指令的执行周期,控制和数据通路,取指,译码:根据指令 产生控制信号,在适当的时间向正确的部件发正确的控制信号,数据通路: 在控制信号的控制下执行运算或传输功能,数据通路: 寄存器组 地址寄存器 读数据寄存器 写数据寄存器 乘法器 桶型移位器 32位ALU 地址累加器 A BUS B BUS ALU BUS INC BUS,数据通路组成,Register Bank,Multiplier,Address Incrementer,ALU,B,A,

2、Vectors,A31:0,Address Register,Barrel Shifter,ALU,Read Data Register,Write Data Register,D31:0,Instruction Decode,ARM7的数据通路 单循环数据处理指令中: 寄存器R1 B总线,通过移位 寄存器R2A总线 在ALU中合并,结果被写回寄存器组。 地址累加 PC的值地址寄存器, 再进入地址累加器 再写回寄存器组中的程序寄存器 产生下一个地址,流水技术的本质,流水技术的使用,ARM7 TDMI 三级流水线,ARM Thumb PC PC取指指令从存储器中取出 PC4PC2译码对指令使用的

3、寄存器进行译码数据控制信号 将准备下一个周期。这一阶段,指令拥有译码逻辑,但不拥有数据通路。 PC8PC4执行指令拥有数据通路。 从寄存器组中读出寄存器,执行移位和ALU操作,寄存器写回到寄存器组,The ARM Core Roadmap,ARM966E-S,ARM946E-S,ARM1026EJ-S,2000,2001,2003,1999,2002,MHz,100,200,300,ARM7EJ-S,ARM7TDMI-S,ARM7TDMI,Leopard-S,ARM926EJ-S,ARM1136J-S,SC100,SC200,ARM920T,第三讲 ARM微处理器编程模型和异常处理,第二讲 A

4、RM7TDMI嵌入式微处理器原理 ARM 微处理器的编程模型 ARM微处理器的异常处理,编程模式,寄存器 处理器内部的存储部件,不同处理器具有很大的不同 所有处理器都具有的:程序计数器(程序指针),状态寄存器(标识处理器的状态),累加寄存器(用于算术运算) 处理器通常所说的8位/16位/32位/64位,是指其内部寄存器的位宽 堆栈 先进后出,中断和任务调度中保存现场和局部变量 很多处理器都有一个或者多个堆栈指针,编程模式: 处理器指令集定义了操作, 程序员通过操作改变处理器的系统状态, 每一条指令:指令前后状态的变化 这些状态是有处理器可见寄存器和存储器中的数据项构成的。,存储器系统内存映射,

5、内存映射: 如何划分不同的内存和I/O设备之间的地址空间(memory Map) Intel的X86处理器,对I/O设备设置了单独的地址空间,用单独指令来访问,I/O端口映射方式 ported I/O; 大部分处理器I/O设备和内存存在相同的地址空间,用相同指令进行访问,memory-mapped I/O;,I/O地址,RAM,ROM,端口I/O,I/O 空间,内存空间,other,I/O地址,RAM,ROM,内存I/O,内存空间,other,ARM的存储器格式,存储器组织 字(Word):在ARM体系结构中,字的长度为32位,而在8位/16位处理器体系结构中,字的长度一般为16位,请读者在阅

6、读时注意区分。 半字(Half-Word):在ARM体系结构中,半字的长度为16位,与8位/16位处理器体系结构中字的长度一致。 字节(Byte):在ARM体系结构和8位/16位处理器体系结构中,字节的长度均为8位。 ARM体系结构将存储器看作是从零地址开始的字节的线性组合。 从零字节到三字节放置第一个存储的字数据, 从第四个字节到第七个字节放置第二个存储的字数据,依次排列。 作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB,存储器数据顺序,Big-Endian 和 Little-Endian 处理器在存放多字节的数据时候,一般将低位字节存放在低地址单元,譬如X86 系列的处理

7、器; 这种方法成为小印第安序(低端优先); 在嵌入式系统中被广泛应用的PowerPC处理器中,则把低位字节放在高地址单元,这种方法成为大印第安序(高端优先);,1 2,3 4,5 6,7 8,1 2,3 4,1 2,0100,0101,0102,0103,Long word,word,Byte,7 8,5 6,3 4,1 2,3 4,1 2,1 2,0100,0101,0102,0103,Long word,word,Byte,七种工作模式,处理器的工作模式: 对处理器不同状态分类,对每一种方式规定其可以控制的资源。以减少不同工作方式之间的切换代价。对于程序员而言,处理器的不同工作模式就是不同

8、的编程模式 ARMV4版本以后共有7种工作模式: User 用户模式: 处理器正常的程序执行状态 FIQ 快速中断模式 : 用于高速数据传输或通道处理 IRQ 中断模式 : 用于通用的中断处理 Supervisor管理模式:操作系统使用的保护模式 entered on reset and when a Software Interrupt instruction is executed Abort数据访问中止模式:当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。used to handle memory access violations Undef未定义指令中止模式: used

9、to handle undefined instructions当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真 System系统模式 : privileged mode using the same registers as user mode运行具有特权的操作系统任务,ARM 编程模式,ARM的七种工作模式的说明 两大类 :访问的资源不同 用户模式 特权模式(其他六种模式)。 特权模式又分两类 系统模式:高级的用户模式 其他又称为异常模式。处理器模式可以通过软件控制进行切换,也可以通过外部中断或异常处理过程进行切换。 应用程序运行在用户模式。应用程序可以产生异常处理,在异常

10、处理过程中进行模式的切换。 系统模式使用用户模式的寄存器组,但可以访问所有的系统资源。主要供操作系统任务使用。 异常模式:快速中断模式、外部中断模式、管理模式、中止模式、未定义模式。常用于处理中断或异常,以及需要访问受保护的系统资源等情况。 8086微处理器没有工作模式之分 80386处理器有3种工作模式:实模式、保护模式和虚拟86模式,User mode,工作模式的切换,Memory Instructions F=1 禁止FIQ中断。 T标志位:该位反映处理器的运行状态。 对于ARM体系结构v5及以上的版本的T系列处理器,当该位为1时,程序运行于Thumb状态,否则运行于ARM状态。 对于A

11、RM体系结构v5及以上的版本的非T系列处理器,当该位为1时,执行下一条指令以引起为定义的指令异常;当该位为0时,表示运行于ARM状态。 运行模式位M4:0:M0、M1、M2、M3、M4是模式位。这些位决定了处理器的运行模式。,The ARM Register Set,Register Organization Summary,Usermoder0-r7,r15,andcpsr,r8,r9,r10,r11,r12,r13 (sp),r14 (lr),spsr,FIQ,User,r13 (sp),r14 (lr),spsr,IRQ,Usermoder0-r12,r15,andcpsr,r13 (s

12、p),r14 (lr),spsr,Undef,Usermoder0-r12,r15,andcpsr,r13 (sp),r14 (lr),spsr,SVC,Usermoder0-r12,r15,andcpsr,r13 (sp),r14 (lr),spsr,Abort,Usermoder0-r12,r15,andcpsr,Thumb state Low registers,Thumb state High registers,Note: System mode uses the User mode register set,ARM的寄存器总结,1个专用的程序计数器 PC,R15 1个专用的当前程序

13、状态寄存器 CPSR 5个专用的程序状态保存寄存器 (用于异常模式下的SPSR) 总计共有37个物理寄存器,其中30个通用寄存器,1个程序计数器,6个状态寄存器 在每一种模式下只有R0R15,CPSR寄存器程序员可见。只有当前处理器工作模式可以访问的寄存器称为影子寄存器。 R0R12寄存器 R13(堆栈指针,SP)和R14(连接寄存器) 程序计数器,R15(PC) 当前程序状态寄存器,cpsr 在特权模式下(除了系统模式)还可以访问 一个特殊的spsr(程序状态保存寄存器),每一种异常模式对应一个SPSR 异常模式发生的时候用来存储当前程序的CPSR 其他的微处理器没有工作模式之分,自然没有影

14、子寄存器的概念。,第三讲 ARM微处理器编程模型和异常处理,第二讲 ARM7TDMI嵌入式微处理器原理 ARM 微处理器的编程模型 ARM微处理器的异常处理,ARM的异常处理,正常的程序执行流程发生暂时的停止时,称之为异常。 例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。 ARM体系结构中的异常,与8位/16位体系结构的中断有很大的相似之处,但异常与中断的概念并不完全等同。 ARM的异常有七种 复位异常、SWI异常、未定义指令异常、数据中止和指令中止异常。 外部中断

15、分为FIQ和IRQ两种,分别为快速中断和通用中断。都可以通过CPSR中的相应位来屏蔽。 8086微处理器的异常分为内部异常和外部中断 内部异常:单步、INTO(软件中断)、INTn(软件中断)、除法错 外部中断:非屏蔽中断和可屏蔽中断。,ARM的7种异常,ARM 7种异常对应的模式,ARM异常处理的分类,指令执行引起的直接异常: 软件中断指令SWI 未定义指令 预取指令中止 指令执行引起的简介异常 数据中止(Load 和 Store 数据访问时候的存储器故障) 外部产生的与指令流没有关系的 异常 复位 IRQ FIQ,异常响应伪代码描述,ARM处理器发生异常的时候:尽量完成当前指令(除了复位异

16、常中止当前指令),然后脱离当前的指令序列处理器异常 间接和外部事件异常将占据当前序列中的指令 直接异常按照顺序执行 ARM微处理器对异常的响应过程用伪码可以描述为: R14_ = Return Link :保存返回地址 SPSR_ = CPSR :保存当前状态 CPSR4:0 = Exception Mode Number :设置进入异常模式 CPSR5 = 0 ;当运行于ARM工作状态时 If = Reset or FIQ then 当响应FIQ异常时,禁止新的FIQ异常 CPSR6 = 1 CPSR7 = 1 PC = Exception Vector Address 执行异常处理程序,还

17、需要保存其他 用户寄存器到R13指定的堆栈中,异常处理中寄存器的使用,在异常发生时处理器模式的改变意味着异常处理程序至少需要访问下列寄存器: 堆栈指针寄存器(SP_) 连接寄存器(LR_) 程序状态保存寄存器(SPSR_) 在FIQ异常处理中,5个其他的通用寄存器(r8_FIQ到r12_FIQ) 其他的寄存器可以和发生异常之前的模式共用 异常处理程序必须确保其他的寄存器在退出异常处理程序时恢复到进入异常之前的值。 这个可以通过在进入异常时把工作寄存器的值压入堆栈,在退出异常时再弹出堆栈来实现。,复位异常,复位异常在系统加电或复位时执行,它将进行一些初始化工作,具体内容与具体系统相关,然后程序控

18、制权交给应用程序,因而复位异常处理程序不需要返回。 响应复位异常的过程: R14_svc= Unpredictable Value SPSR_svc= Unpredictable Value CPSR4:0 = 0b10011 :设置进入异常模式 CPSR5 = 0 :切换到ARM工作状态时 CPSR6 = 1 :禁止FIQ 中断 CPSR7 = 1 :禁止IRQ 中断 PC = 0000000 或者 0 xFFFF0000,未定义指令异常,未定义指令异常在下面的情况下发生: ARM尝试执行一个真正的没有定义的指令 ARM遇到一个协处理器指令,但这个协处理器在系统中并不存在 ARM遇到一个协处

19、理器指令,这个协处理器在系统中存在,但是ARM运行于非特权模式,于是拒绝这条指令 这种机制可以用来通过软件仿真系统中的某些部件的功能 例:如果系统中不包含浮点运算部件,CPU遇到浮点运算指令时,将发生未定义指令异常,在该未定义指令异常处理程序中可以通过其它的指令序列仿真该浮点运算指令。 Thumb 指令集不包括协处理器,因而不需要这种指令仿真机制。 响应过程 R14_und= 未定义指令的下一条指令 SPSR_und = CPSR CPSR4:0 = 0b11011 :进入未定义指令模式 CPSR5 = 0 : 切换到ARM工作状态时 CPSR7 = 1 : 禁止IRQ 中断 PC = 000

20、0004 或者 0 xFFFF0004,SWI指令异常,SWI 指令:用户定义的中断指令,在实时操作系统中通过该机制调用系统功能 响应过程 R14_svc= SWI指令的下一条指令 SPSR_svc = CPSR CPSR4:0 = 0b10011 :进入未定义指令模式 CPSR5 = 0 : 切换到ARM工作状态时 CPSR7 = 1 : 禁止IRQ 中断 PC = 0000008 或者 0 xFFFF0008,指令预取中止异常,处理器预取的指令地址不存在,或者该地址不允许当前指令访问 响应过程 R14_abt= 取指异常的指令的下一条指令 SPSR_abt = CPSR CPSR4:0 =

21、 0b10111 :进入未定义指令模式 CPSR5 = 0 : 切换到ARM工作状态时 CPSR7 = 1 : 禁止IRQ 中断 PC = 000000C 或者 0 xFFFF000C,数据访问中止异常,处理器执行的数据访问指令的目标地址不存在,或者该地址不允许当前指令访问 响应过程 R14_abt= 产生数据异常的指令后面的第三条指令 SPSR_abt = CPSR CPSR4:0 = 0b10111 :进入未定义指令模式 CPSR5 = 0 : 切换到ARM工作状态时 CPSR7 = 1 : 禁止IRQ 中断 PC = 0000010或者 0 xFFFF0010,FIQ与IRQ,ARM有两

22、级外部中断FIQ和IRQ ARM提供的FIQ和IRQ异常用于外部设备向CPU请求异常服务。这两个异常的引脚都是低电平有效的。 当前程序状态寄存器CPSR 的I和F控制位可以屏蔽这两个异常请求:当程序状态寄存器的CPSR中的I位和F位为1时,FIQ和IRQ异常被屏蔽;当程序状态寄存器CPSR中的I位和F位为0时,cpu正常响应FIQ和IRQ异常请求。 FIQ和IRQ提供了基本的优先级 FIQ的优先级高于IRQ: 当多个中断同时发生时,首先处理FIQ中断 处理FIQ中断时屏蔽IRQ中断 FIQ中断处理完成并退出之后才会处理IRQ中断 ARM内核在FIQ在快速响应中断上作了一些设计 FIQ异常位于异

23、常向量表的最后 使得异常处理程序可以放在异常向量表之后 FIQ工作模式有五个影子寄存器(r8_FIQ到r12_FIQ) 可以有多个FIQ中断源,但为了系统的性能避免嵌套中断,FIQ 异常处理,FIQ异常是为了支持数据传输或者通道处理而设计的。在ARM状态下,系统有足够的私有寄存器,从而可以避免对寄存器保存的需求,并减小了系统上下文切换的开销。 响应过程 R14_FIQ= 产生数据异常的指令后面的第二条指令 SPSR_FIQ= CPSR CPSR4:0 = 0b10001 :进入未定义指令模式 CPSR5 = 0 : 切换到ARM工作状态时 CPSR6= 1 : 禁止FIQ中断 CPSR7 =

24、1 : 禁止IRQ 中断 PC = 000001C或者 0 xFFFF001C,IRQ异常处理,IRQ异常属于正常的中断请求,可通过对处理器的nIRQ引脚输入低电平产生,IRQ的优先级低于FIQ,当程序执行进入FIQ异常时,IRQ可能被屏蔽。 响应过程 R14_IRQ= 产生数据异常的指令后面的第二条指令 SPSR_IRQ = CPSR CPSR4:0 = 0b10010 :进入未定义指令模式 CPSR5 = 0 : 切换到ARM工作状态时 CPSR7 = 1 : 禁止IRQ 中断 PC = 0000018或者 0 xFFFF0018,从异常的返回,异常处理完毕之后,ARM微处理器会执行以下几

25、步操作从异常返回: 1、将连接寄存器LR的值减去相应的偏移量后送到PC中。 2、将SPSR复制回CPSR中。 3、若在进入异常处理时设置了中断禁止位,要在此清除。 可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。,SWI和未定义指令异常的返回,SWI和未定义指令异常是由当前执行的指令产生的 ,当SWI和未定义指令异常产生时,程序计数器PC的值还未更新,它指向当前指令后面第2条指令: SWIpc8 异常在这条指令处发生 Xxxpc4 LRPC-4 Yyypc 返回指令: MOV PC ,LR 将寄存器LR中的值复制到程序计数器PC中 同时将SPSR_mode寄存器内容复制到当前程序状态寄存 器CPSR中。,产生异常,返回地址,PC地址,IRQ和FIQ异常的返回,当IRQ和FIQ异常产生时,程序计数器PC的值已经更新,它指向当前指令后面第

温馨提示

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

最新文档

评论

0/150

提交评论