已阅读5页,还剩74页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第2章arm技术及体系结构,2.1 嵌入式arm处理器概况 2.2 arm处理器技术 2.3 arm7处理器结构 2.4 arm7tdmi的工作状态及模式 2.5 arm7内部寄存器 2.6 arm体系的异常处理 2.7 arm体系的存储方式,2,2.1 嵌入式arm处理器概况,2.1.1 arm体系的版本说明 2.1.2 arm内核的命名 2.1.3 常用arm处理器系列介绍,arm公司简介,arm 即advanced risc machines的缩写 ,作为:公司的名字 ,一类微处理器的通称, 一种技术的名称 。,1985年4月26日,第一个arm原型在英国剑桥的acorn计算机有限公司诞生。1991 年 arm 公司成立于英国剑桥,主要出售芯片设计技术的授权。,arm公司设计了大量高性能、廉价、耗能低的risc 处理器。目前已经成为市场上主流的处理器。,3,arm,partner,oem customer,arm的业务模型,4,2.1.1 arm体系的版本说明,arm公司定义了7种arm指令集体系结构版本。 arm版本: v1版架构,在原型机arm1出现过,只有26位寻址空间,没有用于商业产品。 arm版本: v2版架构,对v1版进行了扩展,例如arm2和arm3(v2a)架构。包含了对32位乘法指令和协处理器指令的支持。 arm版本:v3版架构,在1990年设计arm6中采用了版本3。具有片上高速缓存、mmu和写缓冲等功能。寻址空间增至32位(4gb)。 目前v1v3版本目前都已废弃。,5,2.1.1 arm体系的版本说明,arm版本:v4版架构,在v3版上作了进一步扩充,v4版架构是目前应用最广的arm体系结构,arm7、arm8、arm9和strongarm都采用该架构。 arm版本:v5版架构,是在v4版基础上增加了一些新的指令,如:转移blx指令 、计数前导零clz指令 、brk中断指令 ,dsp指令集(e增强型 ) 、在arm10和xscale都采用该版架构。 arm版本:v6版架构,v6版架构是2001年发布的,首先在2002年春季发布的arm11处理器中使用。采用单指令多数据simd(single instruction, multiple data)技术,将语音及图像处理功能提高了4倍。,6,2.1.1 arm体系的版本说明,arm版本:v7版架构,armv7架构是armv6架构的基础上诞生的,该架构采用了thumb-2技术。thumb-2技术比纯32位代码少使用31的内存,减小了系统开销;同时能够比已有的基于thumb技术的解决方案提高38的性能。 v7版架构分为三类: cortex-a系列,应用处理器,目前提供cortex-a5、cortex-a8、cortex-a9、cortex-a15等产品。 cortex-m系列 ,嵌入式控制器,目前提供cortex-m4、cortex-m3、cortex-m1 fpga和 cortex-m0处理器。 cortex-r系列 ,深嵌入式实时系统 ,目前,此系列包含 cortex-r4 和 cortex-r4f 处理器。,7,2.1.2 arm内核的命名,arm命名格式如下: armxyztdmiejf-s x:系列号,例如arm7中的“7”、arm9中的“9”; y:内部存储管理/保护单元,例如arm72中的“2”、arm94中的“4”; z:内含有高速缓存cache; t:支持16位的thumb指令集; d:支持jtag片上调试; m:支持长乘法操作(64位结果)的arm指令,包含快速乘法器; i:带有嵌入式追踪宏单元etm(embedded trace macro),用来设置断点和观察点;,8,2.1.2 arm内核的命名,e:增强型dsp指令(基于tdmi); j:含有java加速器jazelle,与java虚拟机相比,java加速器jazelle使java代码运行速度提高了8倍,功耗降低到原来的80%; f:向量浮点运算单元; s:可综合版本,意味着处理器内核是以源代码形式提供的。,armxyztdmiejf-s,版本v7用字符串arm cortex开头,随后附加-a、-r、-m表示处理器的市场定位方向,其后跟有数字,表示该方向产品的序列号。,9,2.1.3 常用arm处理器,10,2.1.3 常用arm处理器介绍,arm cortex系列简介,基于armv7版本的arm cortex系列产品由a、r、m三个系列组成,具体分类延续了一直以来arm面向具体应用设计cpu的思路。,arm cortex,11,2.1.3 常用arm处理器介绍,cortextm-m3处理器简介(针对低端市场),该处理器是首款基于armv7-m架构的处理器,采用了纯thumb2指令的执行方式,具有极高的运算能力和中断相应能力。 cortex-m3主要应用于汽车车身系统,工业控制系统和无线网络等对功耗和成本敏感的嵌入式应用领域。,cortextm-r4处理器简介,该处理器是首款基于armv7架构的高级嵌入式处理器,其主要目标为产量巨大的高级嵌入式应用系统,如硬盘,喷墨式打印机,以及汽车安全系统等等。,cortextm-r4f处理器简介,该处理器在cortextm-r4处理器的基础上加入了代码错误校正(ecc)技术,浮点运算单元(fpu)以及dma综合配置的能力,增强了处理器在存储器保护单元、缓存、紧密耦合存储器、dma访问以及调试方面的能力。,12,2.1.3 常用arm处理器介绍,cortextm-a8处理器简介,该处理器是arm公司所开发的基于armv7架构的首款应用级处理器,其特色是运用了可增加代码密度和加强性能的技术、可支持多媒体以及信号处理能力的neontm技术、以及能够支持java和其他文字代码语言的提前和即时编译的jazellertc技术。众多先进的技术使其适用于家电以及电子行业等各种高端的应用领域。,arm7系列简介,该系列包括arm7tdmi、arm7tdmi-s、带有高速缓存处理器宏单元的arm720t和扩充了jazelle(java加速器)的arm7ej-s。该系列处理器提供thumb 16位压缩指令集和embededice软件调试方式,适用于更大规模的soc设计中。arm7系列广泛应用于多媒体和嵌入式设备,包括internet设备、网络和调制解调器设备,以及移动电话、pda等无线设备。,13,2.1.3 常用arm处理器介绍,该系列包括arm9tdmi、arm920t和带有高速缓存处理器宏单元的arm940t。除了兼容arm7系列,而且能够更加灵活的设计。arm9系列主要应用于引擎管理、仪器仪表、安全系统和机顶盒等领域。,arm9系列简介,该系列为含有dsp指令集的综合处理器,包括arm926ej-s、带有高速缓存处理器宏单元的arm966e-s/arm946e-s。其内核在arm7处理器内核的基础上使用了jazelle增强技术,该技术支持一种新的java操作状态,允许在硬件中执行java字节码。arm9e系列主要应用于下一代无线设备、数字消费品、成像设备、工业控制、存储设备和网络设备等领域。,arm9e系列简介,14,2.1.3 常用arm处理器介绍,arm10e系列简介,该系列包括arm1020e和arm1020e处理器核,其核心在于使用向量浮点(vfp)单元vfp10提供高性能的浮点解决方案,从而极大提高了处理器的整型和浮点运算性能。 可以用于视频游戏机和高性能打印机等场合。,xscale简介,intel xscale微控制器则提供全性能、高性价比、低功耗的解决方案,支持16位thumb指令并集成数字信号处理(dsp)指令。 主要应用于手提式通讯和消费电子类设备。,15,arm公司目前的产品分类及特性,16,2.2arm处理器技术,2.2.1 risc技术 2.2.2 流水线技术 2.2.3 哈佛结构 2.2.4 amba总线技术 2.2.5 arm处理器的调试跟踪技术,17,2.2.1 risc技术,cisc:复杂指令集(complex instruction set computer) 具有大量的指令和寻址方式 8/2原则:80%的程序只使用20%的指令 大多数程序只使用少量的指令就能够运行。,risc:精简指令集(reduced instruction set computer) 在通道中只包含最有用的指令 确保数据通道快速执行每一条指令 使cpu硬件结构设计变得更为简单,18,2.2.1 risc技术,risc的结构的特点如下: 简化指令集,只保留常用的基本指令; 设计大量的通用存储器,减少访存的次数; 采用装载/保存(load-store)结构,支持流水线技术,使每个周期时间相等; 采用简单的指令格式、规整的指令字长和简单的寻址方式。 单机器周期指令,即大多数的指令都可以在一个机器周期内完成。,除以上特点之外, arm增加:数据处理指令可同时包含alu运算和移位处理功能;地址自增和自减功能;装载/保存指令中具有数据的批量传输;大多数指令提供条件执行 。,19,2.2.2 流水线技术,cpu中的流水线技术是一种将指令分解为多步,并让不同指令的各步操作重叠执行,从而实现几条指令并行处理,以加速程序运行过程的技术。 arm7采用三级流水线、arm9采用五级流水线,arm10采用六级流水线、arm11采用八级流水线。 以arm7三级流水线为例,由三个独立的部件分别执行: 取指,从存储器中装载一条指令到cpu中; 解码,识别并解释将要被执行的指令; 执行,将解码识别的指令进行计算处理并将结果写回寄存器。,20,2.2.2 流水线技术,21,2.2 arm7tdmi,三级流水线结构的指令执行顺序,周期2,周期1,周期3,周期4,处理器执行一条指令的三个阶段,22,执行add pc,pc,#4指令后,pc的值为多少?,2.2.2 流水线技术,思考题,add,程序计数器r15(pc)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或“正在译码”的指令。,一般来说,人们习惯性约定将“正在执行”的指令作为参考点,则: pc值当前程序执行位置8 注:arm状态时,每条指令为4字节长。,pc指向0x4000地址,取指add指令。,pc指向0x4004地址,译码add指令。,pc指向0x4008地址,执行add指令,所以指令执行的结果为: pc=pc+40x400840x400c。,23,2.2.3 哈佛结构,哈佛结构是一种将程序中指令和数据分开存储的存储器结构。它是一种并行存储体系结构,程序存储器和数据存储器采用不同的总线,从而提供了较大的存储器带宽 。 冯诺伊曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置。 arm7采用了普林斯顿结构,在随后的arm9、arm10、arm11、arm cortex等处理器采用了哈佛结构,,24,冯诺依曼体系结构模型,指令寄存器,控制器,数据通道,输入,输出,中央处理器,存储器,程序,指令0,指令1,指令2,指令3,指令4,数据,数据0,数据1,数据2,25,哈佛体系结构,指令寄存器,控制器,数据通道,输入,输出,中央处理器,程序存储器,指令0,指令1,指令2,数据存储器,数据0,数据1,数据2,地址,指令,地址,数据,26,2.2.4 amba总线技术,amba(advanced microcontroller bus architec-ture)总线规范:是arm公司设计的一种用于高性能嵌入式系统的总线标准。 amba 2.0规范中定义了三种可以组合使用的不同类型的总线:ahb(advanced high-performance bus)、asb(advanced system bus)和apb(advanced perpheral bus)。 ahb总线适用于连接高性能和高时钟频率的系统模块; asb总线适用于连接高性能的系统模块。它的读/写数据总线采用的是同一条双向数据总线; apb总线适用于连接低功耗的外部设备模块;,27,2.2.4 amba总线技术,测试接口控制器tic(test interface controller),向外部设备提供了模块测试接口 。,28,2.2.5arm处理器的调试跟踪技术,arm处理器内部嵌入了一个实时的在线仿真器模块embeddedice-rt,一般还带有嵌入式宏跟踪单元模块etm(embedded trace macrocell),实现arm处理器的在线调试和运行过程的跟踪功能。,29,2.2.5arm处理器的调试跟踪技术,embeddedice具有诸多ice功能,例如实时寻址、断点、单步、对arm cpu的完全控制、对asic系统其余部分的访问,以及对主机显示器外设访问、键盘输入和磁盘存储。 etm能捕获指令和数据序列,访问并把它们的记录发送给芯片上或芯片外的缓冲器,arm的etm既可设置成允许触发器工作也可设置成允许跟踪结果被滤出。etm由如下两部分组成: (1)跟踪端口,用于实时执行的跟踪。代码执行时,cpu发送串行、经过编码、压缩的分支目标地址、管线状态、读写数据给etm。 (2)触发装置,指定特定应用所需的触发源的准确集合。包括地址和数据比较器、计数器和定序器。,30,2.3arm7处理器结构,2.3.1 arm7tdmi内部构成 2.3.2 arm7tdmi内核结构 2.3.3 arm7tdmi处理器模块接口信号 2.3.4 arm7xxt模块功能图,31,2.3.1 arm7tdmi内部构成,cpu协处理接口信号,embedice硬件仿真功能模块,片上调试系统,读写总线,32,2.3.2arm7tdmi内核结构,33,2.3.3 arm7tdmi处理器接口信号,总线控制,34,2.3.3 arm7tdmi处理器接口信号,中断信号:nirq:外部中断异常产生 nfiq:外部快速中断产生 nreset:复位信号或者开机产生 abort由中止异常产生 size1:0:数据传输宽度,00:字节,01:半字, 10:字,11:保留 prot1:0 :存储器访问允许机制,00:用户模式下操作码,01:用户模式下数据,10:特权模式下操作码,11:特权模式下的数据。 trans1:0:总线周期类型,00:i周期(内部周期),正在执行内部操作,不请求对存储器访问;01:c周期,为协处理器寄存器传输周期;10:n周期,非连续周期,11:s周期,连续周期 ,访问地址与前一周期使用的地址有关。,35,2.3.4arm7xxt模块功能图,arm710t,arm710t支持虚拟内存,可以运行linux 和 symbian 的 epoc32操作系统。有8k 统一的 cache ,完整的内存管理单元(mmu)和写缓冲。 arm720t,arm720t是arm710t的超集,还可以运行windowsce操作系统。 arm740t中也包含8k 统一的 cache,内存管理单元和写缓冲。,36,2.4 arm7的工作状态及模式,2.4.1 arm7处理器工作状态 2.4.2 arm7处理器模式,37,2.4 arm7的工作状态及模式,arm7工作状态,arm7tdmi处理器内核包含2套指令系统,分别为arm指令集和thumb指令,并且各自对应1种处理器的状态: arm状态:32位,处理器执行字方式的arm指令,处理器默认为此状态; thumb状态:16位,处理器执行半字方式的thumb指令。,注意:两个状态之间的切换并不影响处理器模式或寄存器内容。,38,2.4.1 arm7处理器工作状态,状态切换的一个例子,使用bx指令将arm内核的操作状态在arm状态和thumb状态之间进行切换。,arm指令集,thumb 指令集,code32 ldr r0, =lable+1 bx r0 code16 lable mov r1, #12,code16 ldr r0, =lable bx r0 code32 lable mov r1, #10,执行完bx指令,处理器切换到thumb状态,开始执行thumb指令,程序代码,指令集关系,从arm状态切换到thumb状态的程序代码如下:,从thumb状态切换到arm状态的程序代码如下:,执行完bx指令,处理器切换到arm状态,开始执行arm指令,39,arm体系结构支持7种处理器模式,分别为: 用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。 这样的好处是可以更好的支持操作系统并提高工作效率。arm7tdmi完全支持这七种模式。,2.4.2 arm7处理器模式,简介,40,除用户模式外,其它模式均为特权模式。arm内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。,处理器模式,这两种模式都不能由异常进入,想要进入必须修改cpsr,而且它们使用完全相同的寄存器组。系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。,这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。,何时进入异常模式,具体规定如下: 处理器复位之后进入管理模式,操作系统内核通常处于管理模式; 当处理器访问存储器失败时,进入数据访问中止模式; 当处理器遇到没有定义或不支持的指令时,进入未定义模式; 中断模式与快速中断模式分别对arm处理器2种不同级别的中断作出响应。,41,2.5 arm7内部寄存器,简介,在arm处理器内部共有37个用户可访问的寄存器,分别为31个通用32位寄存器和6个状态寄存器。,arm处理器共有7种不同的处理器模式,每种模式都有一组相应的寄存器组,最多可以18个活动的寄存器。 spsr:普通模式 和系统模式下是看不见spsr这个寄存器的!只有当进入异常模式的时候,spsr就会保存当前cpsr的状态,便于退出异常时恢复使用。,42,2.5.1 arm状态各模式下的寄存器,所有的37个寄存器,分成两大类: 31个通用32位寄存器; 6个状态寄存器。,43,arm状态各模式下可以访问的寄存器,44,未分组的通用寄存器,寄存器r0r7为未分组的通用寄存器,它们在任何处理器模式都对应于相同的32位物理寄存器。,第一类分组的通用寄存器,寄存器r8r12有两个分组的物理寄存器。一个用于除fiq模式之外的所有寄存器模式,另一个用于fiq模式。,在发生fiq中断后,处理器不必为保护寄存器而浪费时间,从而加速了fiq的处理速度。,第二类分组的通用寄存器,寄存器r13、r14分别有6个分组的物理寄存器。1个用于用户和系统模式,其余5个分别用于5种异常模式。,寄存器r13通常作为堆栈指针(sp),用于保存待使用的寄存器的内容。,寄存器r14称为链接寄存器(lr),在结构上有两个特殊功能: 当使用bl指令调用子程序时,返回地址将自动存入r14中; 当发生异常时,将r14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。,程序计数器,寄存器r15称为程序计数器(pc),它指向正在“取指”的指令。,状态寄存器,寄存器cpsr为当前程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(spsr)”可以被访问。每种异常都有自己的spsr,在进入异常时它保存cpsr的当前值,异常退出时可通过它恢复cpsr。,45,2.5.2 thumb状态下的寄存器组织,在thumb状态各模式下实际访问的寄存器,thumb状态寄存器集是arm状态集的子集,程序员可以直接访问的寄存器为: 8个通用寄存器r0r7; 程序计数器(pc); 堆栈指针(sp); 链接寄存器(lr); 当前程序状态寄存器( current program state register, cpsr)。,46,在thumb状态各模式下的寄存器,未分组的通用寄存器,第二类分组的通用寄存器,在汇编语言中寄存器r0r7为通用寄存器,对于任何处理器模式,它们中的每一个都对应于相同的32位物理寄存器。,堆栈指针sp对应arm状态的寄存器r13。每个异常模式都有其自身的sp分组版本,sp通常指向各异常模式所专用的堆栈。 注意:在发生异常时,处理器自动进入arm状态。,链接寄存器lr对应arm状态寄存器r14。 注意:在发生异常时,处理器自动进入arm状态。,47,arm状态,thumb寄存器在arm状态寄存器上的映射,thumb状态,在thumb状态中,高端寄存器的访问是受到限制的,只有mov、cmp和add指令可以对其访问,可以用于数据的快速暂存。,48,状态切换过程,程序在正常运行的过程中,复位事件产生,导致系统复位。,49,2.5.3 程序状态寄存器,简介,arm内核包含1个cpsr和5个仅供异常处理程序使用的spsr。cpsr反映当前处理器的状态,其包含: 4个条件代码标志(负标志n、零标志z、进位标志c和溢出标志v ); 2个中断禁止位(irq禁止与fiq禁止); 5个对当前处理器模式进行编码的位(m4:0); 1个用于指示当前执行指令的位(arm指令还是thumb指令)。,50,2.5.3 程序状态寄存器,程序状态寄存器的格式,条件代码标志,保留,控制位,溢出标志,进位或借位扩展,零,负或小于,irq禁止,fiq禁止,状态位,模式位,n,z,c,v,i,t,f,51,2.5.3 程序状态寄存器,条件代码标志,各标志位的含义如下: 负标志n:运算结果的第31位值,记录标志设置操作的结果; 零标志z:如果标志设置的操作为0,则置位; 进位标志c:记录无符号加法溢出,减法无借位,循环移位; 溢出标志v:记录标志设置操作的有符号溢出。,52,警告:绝对不要强制改变cpsr寄存器中的控制位t。如果这样做,处理器将进入一个无法预测的状态。,2.5.3 程序状态寄存器,控制位,1、中断禁止控制位i和f;,2、处理器状态位t;,3、处理器模式位m0m4。,注意:不是所有模式位的组合都定义了有效的处理器模式,如果将非法值写入m4:0中,处理器将进入一个无法恢复的模式。,53,2.5.3 程序状态寄存器,保留位,cpsr中的保留位被保留将来使用。当改变cpsr标志和控制位时,请确认没有改变这些保留位。 另外,请确保您的程序不依赖于包含特定值的保留位,因为将来的处理器可能会将这些位设置为1或者0。 spsr(saved program status register):普通模式 和系统模式下是看不见spsr这个寄存器的!只有当进入异常模式的时候,spsr就会保存当前cpsr的状态,便于退出异常时恢复使用。,54,2.6 arm体系的异常处理,异常简介,只要正常的程序流被暂时中止,处理器就进入异常模式。例如在用户模式下执行程序时,当外设向处理器内核发出中断请求导致内核从用户模式切换到异常中断模式。 如果同时发生两个或更多异常,那么将按照固定的顺序来处理异常。,55,2.6 arm体系的异常处理,异常优先级,当多个异常同时发生时,一个固定的优先级决定系统处理它们的顺序。,优 先 级 由 高 到 低,56,异常入口/出口,下表所示为异常返回地址值以及退出异常处理程序所推荐使用的指令。,注意:“movs pc,r14_svc”是指在管理模式执行movs pc,r14 指令,同样类似的指令还有“movs pc,r14_und”、“subs pc,r14_abt,#4”等。,57,2.6 arm体系的异常处理,异常向量表,注:表中的i和f表示不对该位有影响,保留原来的值。,58,2.6 arm体系的异常处理,异常的进入,当一个异常导致模式切换时,内核自动的做如下处理:,将异常处理程序的返回地址(加固定的偏移量)保存到相应异常模式下的lr;,将cpsr的当前值保存到相应异常模式下的spsr;,设置cpsr为相应的异常模式;,设置pc为相应异常处理程序的中断入口向量地址,跳转到相应的异常中断处理程序执行;,backaddr,jumpaddr,usermode,exceptionmode,程序代码正常运行在用户模式下。,59,2.6 arm体系的异常处理,异常的进入,当一个异常导致模式切换时,内核自动的做如下处理:,将异常处理程序的返回地址(加固定的偏移量)保存到相应异常模式下的lr;,将cpsr的当前值保存到相应异常模式下的spsr;,设置cpsr为相应的异常模式;,设置pc为相应异常处理程序的中断入口向量地址,跳转到相应的异常中断处理程序执行;,60,2.6 arm体系的异常处理,异常的退出,当异常处理程序结束时,异常处理程序必须:,返回到发生异常中断的指令的下一条指令处执行,即就是说将lr中的值减去偏移量后移入pc;,将spsr的值复制回cpsr;,backaddr,currentaddr,usermode,exceptionmode,backaddroff,61,2.6 arm体系的异常处理,异常的退出,当异常处理程序结束时,异常处理程序必须:,返回到发生异常中断的指令的下一条指令处执行,即就是说将lr中的值减去偏移量后移入pc;,将spsr的值复制回cpsr;,清零在入口处置位的中断禁止标志。,62,2.6 arm体系的异常处理,复位异常,当nreset信号被拉低时,arm处理器放弃正在执行的指令,等到nreset信号再次变高时,处理器执行一下操作:,强制m4:0变为b10011,系统进入管理模式; 将cpsr中的标志位i和f置位,irq与fiq中断被禁止; 将cpsr中的标志位t清零,处理器处于arm状态; 强制pc从地址0x00开始对下一条指令进行取指; 返回到arm状态并恢复执行。,63,2.6 arm体系的异常处理,中断请求异常,只有当cpsr中相应的中断屏蔽位被清除时,才可能发生irq异常,中断请求(irq)异常由一个nirq输入端的低电平所产生的正常中断。 注:中断异常产生时,中断异常模式下的r14保存的是pc的值。,指令1的执行不会中断;,异常程序结束时返回到指令2;,进入中断服务程序时,指令3地址被保存在r14中。,64,程序运行在用户模式下,当一个irq异常中断发生时,内核切换到“中断模式”,并自动的做如下处理:,2.6 arm体系的异常处理,进入irq异常模式,usr模式,irq模式,65,2.6 arm体系的异常处理,退出irq异常模式,irq模式,usr模式,中断服务程序执行完毕后,系统将通过以下几步软件操作返回用户模式:,66,2.6 arm体系的异常处理,快速中断请求异常,快速中断请求(fiq)适用于对一个突发事件的快速响应,这得益于在arm状态中,快中断模式有8个专用的寄存器可用来满足寄存器保护的需要(这可以加速上下文切换的速度)。 不管异常入口是来自arm状态还是thumb状态,fiq处理程序都会通过执行下面的指令从中断返回: subs pc,r14_fiq,#4 在一个特权模式中,可以通过置位cpsr中的f位来禁止fiq异常。,67,fiq中断的例子,“?”表示该位无关,backaddr,jumpaddr,1,0,backaddr-4,thumb不是一个完整的体系结构,不能指望处理器只执行thumb指令而不支持arm指令集。 因此,thumb指令只需要支持通用功能,必要时可以借助于完善的arm指令集,比如,所有异常自动进入arm状态。,在系统模式下运行用户程序,当前处理器处于thumb状态,执行thumb指令代码,同时处理器还允许irq和fiq中断。,指令1的在执行过程产生了fiq中断。 注:完成指令1的执行后才响应中断。,fiq中断相应过程中,硬件自动执行如下动作:,将cpsr寄存器内容存入irq模式的spsr寄存器,置为f和i(禁止fiq和irq中断); 清零t位(进入arm状态); 设置mod位,切换处理器模式至fiq模式。,将下一条的地址存入fiq模式的lr寄存器,即指令3的地址。,将跳转地址存入pc,即fiq中断服务函数的入口地址,实现跳转。,fiq中断服务程序在arm状态下执行现场保护等操作。,fiq中断服务程序使用bx指令,将处理器从arm状态切换到thumb状态,通过置位cpsr的t位实现。,fiq中断服务程序开始执行thumb指令。,fiq中断服务程序使用bx指令,将处理器从thumb状态切换到arm状态,通过清除cpsr的t位实现。,fiq中断服务程序在arm状态下执行恢复中断现场等操作。,fiq中断异常处理结束后,异常处理程序完成以下动作:,将spsr寄存器的值复制回cpsr寄存器;,将lr寄存的值减去一个常量(fiq异常为4)后复制到pc寄存器,跳转到被中断的用户程序(指令2的地址)。,68,2.6 arm体系的异常处理,未定义的指令异常,未定义指令异常是内部异常中断,当arm处理器遇到一条自己和系统内部任何协处理器都无法执行的指令时,就会发生未定义指令异常,从而进入中断处理程序,同时软件可使用这一机制通过仿真未定义的协处理器指令来扩展arm指令集。 在仿真失败的指令后,捕获处理器执行下面的指令: movs pc,r14_und,69,2.6 arm体系的异常处理,中止异常,中止表示当前对存储器的访问不能被完成,这是由外部abort输入信号引起的异常中断。中止类型有2种类型:,预取指中止:由程序存储器引起的中止异常; 数据中止:由数据存储器引起的中止异常。,70,2.6 arm体系的异常处理,预取指中止,当发生预取指中止时,arm内核将预取的指令标记为无效,但在指令到达流水线的执行阶段时才进入异常。如果指令在流水线中因为发生分支而没有被执行,中止将不会发生。 在处
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 惠州工贸安全员安全生产知识测试及答案
- 建筑设计理念知识自测题及解答
- 机械制造工艺规范操作指南与习题集
- 健康生活营养知识趣味测试及答案手册
- 家居装修设计技巧测试题及答案全攻略
- 机械工程实践应用能力测试题集及详细答案解析
- 建筑设计理念与技巧测试试题及答案集
- 健康饮食计划执行测试与答案指南
- 淮北护士考试题库及答案
- 会计算力考试题及答案
- 师德师风知识竞赛试题库及答案
- 2025年初级会计资格考试题及答案
- 国际压力性损伤溃疡预防和治疗临床指南(2025年版)解读
- ZZ024 美术造型赛题-2023年全国职业院校技能大赛拟设赛项赛题完整版(10套)
- 115个低风险病种ICD-10(2019 v2.0)编码表、专科医院单病种(术种)目录
- xx县副科选拔真题(干部选拔)
- GA 254-2022警服内穿衬衣
- GB/T 250-2008纺织品色牢度试验评定变色用灰色样卡
- 电力设备预防性试验规程
- 高中数学《基于问题链的数学教学探索》课件
- 新视野大学英语(第三版)读写教程Book4-Unit1-Section-A-Love-and-logic-The-story-of-a-fallacy课件
评论
0/150
提交评论