第四章ARM存储与异常中断处理_第1页
第四章ARM存储与异常中断处理_第2页
第四章ARM存储与异常中断处理_第3页
第四章ARM存储与异常中断处理_第4页
第四章ARM存储与异常中断处理_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

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

文档简介

1第4章ARM体系构造本章主要引见以下内容:ARM存储器组织ARM的异常中断24.6ARM存储器组织引见以下内容:数据类型和存储格式ARM的存储体系片上存储器的用法 协处置器CP15存储器管理单元MMU维护单元快速上下文切换扩展写缓存器〔WriteBuffer〕ARM的异常中断向量表和异常中断处置与前往34.6.1数据类型和存储格式ARM存储器中的数据类型有6种有符号数8位〔字节〕、16位〔半字〕、32位〔字〕无符号数8位〔字节〕、16位〔半字〕、32位〔字〕缺省端序设置为小端序4.6.2ARM的存储体系参看以下图,笼统成一个呈金字塔型的存储构造注重研讨第2层2021年6月21日44.6.3片上存储器的用法多数ARM处置器芯片内部集成了存储器它们统称为片上存储器用途有:片上Cache、片上SRAM、紧耦合存储器〔TCM〕、写缓存片上存储器的存储空间可以经过指令进展配置,定义成片上Cache,或者片上SRAM,或者一部分片上Cache加一部分片上SRAM。紧耦合存储器和写缓存均需求编程使能或者硬件接线使能按照详细运用情况决议片上存储器配置方法2021年6月21日5片上存储器用作紧耦合存储器紧耦合存储器的英文原文如下:TightlyCoupledMemory,TCM弥补Cache访问的不确定性而添加的片上存储器。除了片上紧耦合存储器外,还有紧耦合存储器接口,它可以提供低延时的外存储器访问。有的处置器含有分立的指令TCM和数据TCM。TCM包含在存储器地址映射空间中,可以作为快速存储器来访问。除了不得包含读敏感地址之外,对TCM接口上衔接的存储器类型没有其他限制。TCM运用物理地址,对TCM的写访问遭到MMU内部维护信息的控制。2021年6月21日62021年6月21日7TCM在ARMv6处置器核的位置ARMv6处置器包括:ARM1J-S、ARM1156T2片内TCM存储器举例ARM926EJ-S中心内置32KB指令缓存、16KB数字缓存和8KB数据-TCM和8KB指令-TCM;2021年6月21日8Cortex-R4F方框图—含TCM接口留意图的右侧含有一个TCM仲裁和接口模块2021年6月21日92021年6月21日10ARM1的TCM支持DMA传输参看ARM1的方框图ARM966E-S核的TCM地址映射2021年6月21日11ARM966E-S的TCM别名地址空间物理存储块可以经过TCM接口映射在片内的TCM存储区2021年6月21日12ARM966E-S的TCM特点TheARM966E-SprocessorsupportsbothinstructionanddataTCMs.YoucanusetheDTCMandITCMtostorereal-timeandperformance-criticalcode.TheTCMsareinstantiatedexternallytotheARM966E-Smacrocellprovidingforflexibilityinthedesignofthememorysubsystem.Thesystemdesignercanselectmemorytypeandoptimizethememorysubsystemforpowerorspeed.2021年6月21日13ARM966E-S的TCM接口特点〔续1〕ThefeaturesoftheTCMinterfaceinclude:

independentITCMandDTCMsizesof0KBor1KB-64MBinpower-of-twoincrements

softwarevisibilityandprogrammabilityofTCMsizeandenable

bootcontrolforITCM

dataaccesstotheITCMforliteralpoolaccessesincode

simpleSRAM-styleinterfacesupportingbothreadsandwrites

variableTCMwaitstatecontrolforITCMandDTCM

abilitytoindicatesequentialandnonsequentialaccesses.2021年6月21日14ARM966E-S的TCM特点接口〔续2〕TheARM966E-SprocessorcontainsaTCMcontrollerthat:

schedulesrequeststotheTCMinterface

handshakeswiththeARM966E-Smemorysystemcontrollertoacknowledgewhenrequestshavebeenserviced

returnsTCMreaddatabacktotheARM9E-Score.TheTCMsarelocatedintheTCMaddressspace.2021年6月21日15AT91SAM9261处置器的TCMAT91SAM9261的独立指令和数据缓存能支持WinCE和Linux操作系统。而其基于TCM构架的SRAM区块那么是“确定过程式〞实时操作系统的理想安排。另一方面,160K字节的片上SRAM可划分成多个16K字节的区块,作为“指令TCM〞、“数据TCM〞或片上外设的缓冲,从而让编程人员灵敏地优化系统的性能和功耗。2021年6月21日16TCM的使能操作经过二种方式进展TCM的使能操作运用途置器芯片的INITRAM引脚运用CP15的c1控制存放器2021年6月21日17S3C44B0X和S3C4510B的三种片上存储器的配置用法S3C44B0X和S3C4510B都有8KB的片上存储器它们有三种配置用法8KB的SRAM8KB的Cache4KB的SRAM加上4KB的Cache较多采用片内RAM配置而非片内Cache配置。2021年6月21日18ARM920T的片内存储器留意:ARM920T核的内部没有TCM2021年6月21日19ARM720T的片内存储器8KByteunifiedcacheMemoryManagementUnit(MMU)writebufferUnified32-bitAHBbusinterfacecarriesbothinstructionsanddataEmbeddedTraceMacrocell(ETM)interface2021年6月21日204.6.4协处置器CP15CP15即所谓的系统控制协处置器SystemControlCoprocessor在基于ARM的嵌入式系统中,诸如MMU、Cache配置、紧耦合处置器、写缓存配置之类的存储系统管理任务由协处置器CP15完成。CP15可以包含16个32位存放器编号为CP0~CP15。实践运用中写为C0~C15。2021年6月21日21CP15存放器的访问用户只可以在特权方式下运用MRC和MCR指令来访问CP15存放器。2021年6月21日224.6.5存储器管理单元MMUARM的MMU部件的用途:

完成虚拟存储空间到物理存储空间的映射。

管理方式:页式虚拟存储器。

页的大小有两种:粗粒度和细粒度。

存储器访问权限的控制。

设置虚拟存储空间的缓冲特性。2021年6月21日234.6.6维护单元维护单元PU,ProtectionUnit也称为:MPU,MemoryProtectionUnit为了消除术语的二义性,我们一致运用术语PU维护单元提供了一个相当简单的替代MMU的方法来管理存储器。对于不需求PU的嵌入式系统而言,PU简化了硬件和软件,主要表如今不运用转换表,这样免去了硬件遍历转换表和软件建立与维护转换表。2021年6月21日24维护单元的任务原理和作用ARM核的PU运用区域〔region〕来管理系统维护。区域是一个存储空间相关联的一组属性,处置器核将这些属性保管在协处置器CP15的一些存放器里,并用0-7的号码标识每一个区域〔它也是一个具有特定属性的逻辑存储空间〕。区域的存储边境经过两个属性进展配置:起始地址和大小。区域的大小可以是4KB~4MB的任何2的乘幂。2021年6月21日25受维护区域的属性操作系统可以为受维护区域分配更多的属性,包括:访问权限、Cache和写缓存器战略访问权限可以是:读/写、只读和不可访问基于处置器方式的权限管理方式、用户方式等Cache写战略写直达Cache操作、无Cache操作、无写缓存器操作。2021年6月21日26含PU的ARM处置器主存访问过程当处置器访问主存的一个区域时,PU比较该区域的访问权限属性和当时的处置器方式。假设恳求符合区域访问规范,那么PU允许内核读/写主存;假设存储器恳求导致存储器访问违例,那么PU产生一个异常信号。异常信号被传四处置器核,处置器核判别是出异常是预取指令中止还是数据中止,然后跳转到对应的异常处置例程。2021年6月21日27区域属性有关区域的属性如下:区域可以相互重叠每一个区域有一个优先级,该优先级与分配给区域的权限无关当区域重叠时,具有最高优先权的区域的属性可以覆盖其他区域的属性,优先权仅作用于重叠部分的地址。区域的起始地址必需是其大小的倍数。区域的大小是2的乘幂,2的12次方到32次方。2021年6月21日28访问受维护区域时产生的异常访问所定义区域外的存储器将产生异常。假设是内核预取指令,那么PU产生一个预取指令中止异常。假设是存储器数据恳求,那么PU产生数据中止异常。2021年6月21日292021年6月21日30带PU的ARM核概要以下给出了四种带PU的ARM核概要属性ARM核区域数目指令区域和数据区域是否分离指令和数据区域配置是否分离ARM740T8否否ARM940T16是是ARM946E-S8否是ARM1026EJ-S8否是在带PU的ARM系统中创建区域要实现一个受PU控制主存的嵌入式系统,需求对主存中的不同块定义假设干区域。一个区域可以被创建一次,然后不断用到嵌入式系统运转终了;也可以暂时创建一个区域来满足一个特殊操作的需求,用完之后就加以删除。2021年6月21日31含有PU的ARM核含有8个受维护区域的ARM核ARM740TARM946E-SARM1026EJ-S含有16个受维护区域的ARM核ARM940T2021年6月21日322021年6月21日33初始化PU、Cache和写缓冲器为了初始化PU、Cache和写缓冲器,控制系统必需定义在操作目的平台时所需求的维护区域。功能主存储器次存储器系统控制C1C0区域的cache属性C2C0区域的写缓冲器属性C3C0区域的访问权限属性C5C0区域的大小和位置C6C0~C7带维护单元和MMU的系统框图2021年6月21日344.6.7ARM处置器的CacheARM处置器均带有Cache或者可以将片上存储器配置成Cache。当然,在不需求时也可以经过配置操作封锁Cache。ARM处置器的Cache地址映射均采用组相联映射。2021年6月21日354.6.8快速上下文切换扩展快速上下文切换扩展FCSE,FastContextSwitchExtensionFCSE是ARM存储系统的修正机构。它修正系统中不同进程的虚拟地址,防止在进展进程间切换时呵斥的虚拟地址到物理地址的重映射,从而提高系统的性能。为了了解ARM处置器的FCSE功能,我们首先调查当虚拟存储器中义务切换时,主存中页表和物理存储器的随动切换。2021年6月21日36ARM虚拟存储器

用户义务上下文切换例如-1义务1正在执行2021年6月21日372021年6月21日38ARM虚拟存储器

用户义务上下文切换例如-2义务2正在执行2021年6月21日39ARM虚拟存储器

用户义务上下文切换例如-3义务3正在执行2021年6月21日403个义务的多义务环境中

快速上下文切换扩展的举例:切换前义务1正在运转2021年6月21日413个义务的多义务环境中

快速上下文切换扩展的举例:〔续〕切换后义务2正在运转4.6.9写缓存器(WriteBuffer)写缓存器是一个容量很小的片内的先进先出〔FIFO〕存储器,位于处置器核与主存之间。写缓存器的主要用途是:当CPU输出数据时,总线恰好被占用而无法输出,此时,CPU可以把输出数据写入到写缓存器。当总线上没有比写缓存区优先级更高的掌控者时,写缓存区可以经过总线将数据写入内存。CPU由于不需求等待写操作的完成而加强了性能。写缓存区中的FIFO存储器在存储层次中与L1Cache处于一样的层次。2021年6月21日42S3C44B0X处置器的写缓存区由4个写缓存存放器构成。每一个写缓存存放器包括一个32位数据字段,一个28位地址字段和一个2位形状字段。可以经过指令对控制存放器SYSCFG的WE位置1或者置0来使能或者禁能写缓存器。参看以下图。2021年6月21日434.7ARM的异常中断ARM异常与中断不做严厉意义上的区别ARM的中断向量表内存放的是呼应异常和中断的转移指令而不是中断向量地址。在ARM处置器中,当异常发生时,完成当前指令后跳转到相应的异常中断处置程序入口执行异常中断处置。异常处置终了后前往原来的程序断点继续执行原来的程序。2021年6月21日44ARM异常和中断处置课程安排ARM体系构造知识回想ARM异常的呼应ARM异常的处置ARM异常的前往ARM中断的产生、初始化和呼应处置流程异常简介只需正常的程序流被暂时中止,处置器就进入异常方式。例如呼应一个来自外设的中断。在处置异常之前,ARM内核保管当前的处置器形状,这样当处置程序终了时可以恢复执行原来的程序。假好像时发生两个或更多异常,那么将按照固定的顺序来处置异常,详见“异常优先级〞部分。异常入口/出口汇总异常或入口返回指令之前的状态备注ARMR14_xThumbR14_xBLMOVPC,R14PC+4PC+2

此处PC为BL,SWI,为定义的指令取指或预取指中止指令的地址SWIMOVSPC,R14_svcPC+4PC+2未定义的指令MOVSPC,R14_undPC+4PC+2预取指中止SUBSPC,R14_abt,#4PC+4PC+4快中断SUBSPC,R14_fiq,#4PC+4PC+4此处PC为由于FIQ或IRQ占先而没有被执行的指令的地址中断SUBSPC,R14_irq,#4PC+4PC+4数据中止SUBSPC,R14_abt,#8PC+8PC+8此处PC为产生数据中止的装载或保存指令的地址。

复位无——复位时保存在R14_svc中的值不可预知。

异常异常的入口和出口处置假设异常处置程序曾经把前往地址拷贝到堆栈,那么可以运用一条多存放器传送指令来恢复用户存放器并实现前往。SUBLR,LR,#4 ;计算前往地址STMFDSP!,{R0-R3,LR} ;保管运用到的存放器...LDMFDSP!,{R0-R3,PC}^ ;中断前往中断处置代码的开场部分和退出部分假设异常处置程序曾经把前往地址拷贝到堆栈,那么可以运用一条多存放器传送指令来恢复用户存放器并实现前往。中断处置代码的开场部分和退出部分异常异常的入口和出口处置SUBLR,LR,#4 ;计算前往地址STMFDSP!,{R0-R3,LR} ;保管运用到的存放器...LDMFDSP!,{R0-R3,PC}^ ;中断前往留意:中断前往指令的存放器列表〔其中必需包括PC〕后的“^〞符号表示这是一条特殊方式的指令。这条指令在从存储器中装载PC的同时〔PC是最后恢复的〕,CPSR也得到恢复。这里运用的堆栈指针SP〔R13〕是属于异常方式的存放器,每个异常方式有本人的堆栈指针。这个堆栈指针应必需在系统启动时初始化。异常进入异常在异常发生后,ARM内核会作以下任务:1.在适当的LR中保管下一条指令的地址,当异常入口来自:ARM形状,那么ARM将当前指令地址加4或加8复制〔取决于异常的类型〕到LR中;为Thumb形状,那么ARM将当前指令地址加4或加8〔取决于异常的类型〕复制到LR中;异常处置器程序不用确定形状。异常进入异常在异常发生后,ARM内核会作以下任务:2.将CPSR复制到适当的SPSR中;3.将CPSR方式位强迫设置为与异常类型相对应的值;4.强迫PC从相关的异常向量处取指。ARM内核在中断异常时置位中断制止标志,这样可以防止不受控制的异常嵌套。注:异常总是在ARM形状中进展处置。当处置器处于Thumb形状时发生了异常,在异常向量地址装入PC时,会自动切换到ARM形状。异常进入异常当异常终了时,异常处置程序必需:1.将LR中的值减去偏移量后存入PC,偏移量根据异常的类型而有所不同;2.将SPSR的值复制回CPSR;3.清零在入口置位的中断制止标志。注:恢复CPSR的动作会将T、F和I位自动恢复为异常发生前的值。异常退出异常程序AIRQ效力程序用户方式IRQ方式程序存放器组图示进入异常过程1.程序在系统方式下运转用户程序,假定当前处置器形状为Thumb形状、允许IRQ中断;2.用户程序运转时发生IRQ中断,硬件完成以下动作:LR_usrSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV置位I位〔制止IRQ中断〕清零T位〔进入ARM形状〕设置MOD位,切换处置器方式至IRQ方式将下一条指令的地址存入IRQ方式的LR存放器将CPSR存放器内容存入IRQ方式的SPSR存放器将跳转地址存入PC,实现跳转IRQ0?1...????BackAddrJumpAddrJumpSYS1?0...????“?〞表示对该位不关怀在异常处置终了后,异常处置程序完成以下动作:程序AIRQ效力程序系统方式IRQ方式程序存放器组图示退出异常过程LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV将SPSR存放器的值复制回CPSR存放器;将LR存放的值减去一个常量后复制到PC存放器,跳转到被中断的用户程序。IRQ0?1...????BackAddrJumpAddrreturnSYS1?0...????SYS1?0...????BackAddr-4Jump“?〞表示对该位不关怀快速中断恳求(FIQ)适用于对一个突发事件的快速呼应,这得益于在ARM形状中,快中断方式有8个公用的存放器可用来满足存放器维护的需求〔这可以加速上下文切换的速度〕。不论异常入口是来自ARM形状还是Thumb形状,FIQ处置程序都会经过执行下面的指令从中断前往:SUBSPC,R14_fiq,#4在一个特权方式中,可以经过置位CPSR中的F位来制止FIQ异常。异常快速中断恳求中断恳求〔IRQ〕异常是一个由nIRQ输入端的低电平所产生的正常中断〔在详细的芯片中,nIRQ由片内外设拉低,nIRQ是内核的一个信号,对用户不可见〕。IRQ的优先级低于FIQ。对于FIQ序列它是被屏蔽的。任何时候在一个特权方式下,都可经过置位CPSR中的I位来制止IRQ。不论异常入口是来自ARM形状还是Thumb形状,FIQ处置程序都会经过执行下面的指令从中断前往:SUBSPC,R14_fiq,#4异常中断恳求中止发生在对存储器的访问不能完成时,中止包含两种类型:预取中止发生在指令预取过程中数据中止发生在对数据访问时异常中止当发生预取中止时,ARM内核将预取的指令标志为无效,但在指令到达流水线的执行阶段时才进入异常。假设指令在流水线中由于发生分支而没有被执行,中止将不会发生。在处置中止的缘由之后,不论处于哪种处置器操作形状,处置程序都会执行下面的指令恢复PC和CPSR并重试被中止的指令:SUBSPC,R14_abt,#4异常中止——预取指中止当发生数据中止后,根据产生数据中止的指令类型作出不同的处置:异常中止——数据中止数据转移指令〔LDR、STR〕回写到被修正的基址存放器。中止处置程序必需留意这一点;交换指令〔SWP〕中止好似没有被执行过一样〔中止必需发生在SWP指令进展读访问时〕;块数据转移指令〔LDM,STM〕完成。当回写被设置时,基址存放器被更新。在指示出现中止后,ARM内核防止一切存放器被覆盖。这意味着ARM内核总是会维护被中止的LDM指令中的R15〔总是最后一个被转移的存放器〕。异常中止——数据中止当发生数据中止后,根据产生数据中止的指令类型作出不同的处置:在修复产生中止的缘由后,不论处于哪种处置器操作形状,处置程序都必需执行下面的前往指令:SUBSPC,R14_abt,#8异常中止——数据中止运用软件中断(SWI)指令可以进入管理方式,通常用于恳求一个特定的管理函数。SWI处置程序经过执行下面的指令前往:MOVSPC,R14_svc这个动作恢复了PC和CPSR并前往到SWI之后的指令。SWI处置程序读取操作码以提取SWI函数编号。异常软件中断指令当ARM处置器遇到一条本人和系统内任何协处置器都无法处置的指令时,ARM内核执行未定义指令圈套。软件可运用这一机制经过模拟未定义的协处置器指令来扩展ARM指令集。注:ARM处置器完全遵照ARM构造v4T,可以捕获一切分类未被定义的指令位格式。异常未定义的指令在模拟处置了失败的指令后,圈套程序执行下面的指令:MOVSPC,R14_svc这个动作恢复了PC和CPSR并前往到未定义指令之后的指令。异常未定义的指令异常向量地址异常类型进入时的模式进入时I的状态进入时F的状态0x00000000复位管理禁止禁止0x00000004未定义指令未定义IF0x00000008软件中断管理禁止F0x0000000C中止(预取)中止IF0x00000010中止(数据)中止IF0x00000014保留保留——0x00000018IRQ中断禁止F0x0000001CFIQ快中断禁止禁止注:表中的I和F表示不对该位有影响,保管原来的值。当多个异常同时发生时,一个固定的优先级系统决议它们被处置的顺序:异常异常优先级异常类型优先级复位1(最高优先级)数据中止2FIQ3IRQ4预取中止5未定义指令6SWI7(最低优先级)优先级降低留意:未定义的指令和SWI异常互斥。由于同一条指令不能既是未定义的,又能产生有效的软件中断;当FIQ使能,并且FIQ和数据中止异常同时发生时,ARM内核首先进入数据中止处置程序,然后立刻跳转到FIQ向量。在FIQ处置终了后前往到数据中止处置程序。数据中止的优先级必需高于FIQ以确保数据转移错误不会被漏过。异常异常优先级复位复位当nRESET信号被拉低时〔普通外部复位引脚电平的变化和芯片的其它复位源会改动这个内核信号〕,ARM处置器放弃正在执行的指令。在复位后,除PC和CPSR之外的一切存放器的值都不确定。复位复位当nRESET信号再次变为高电平常,ARM处置器执行以下操作:1.强迫M[4:0]变为b10011〔管理方式〕;2.置位CPSR中的I和F位;3.清零CPSR中的T位;4.强迫PC从地址0x00开场对下一条指令进展取指;5.前往到ARM形状并恢复执行。什么是异常?当正常的程序执行流程发生暂时的停顿时,称之为异常,例如一个外部的中断恳求。在处置异常之前,当前处置器的形状必需保管,这样当异常处置完成后,恢复之前保管的处置器现场,当前程序可以继续执行。处置器的形状保管和恢复通常是和体系构造亲密相关的,特别是处置器内部的存放器。哪些处置器的形状需求保管?发生异常前的方式下的通用存放器R0–R12需求保管假设是FIQ异常,那么可以只保管R0–R7CPSR和PC由硬件自动存入SPSR_irq和lr_irq中,保管与否取决于在中断处置程序中能否会改动。R13(sp)和R14(lr)不需求保管从异常方式前往所需求的存放器前往的地址保管在lr_irq中前往的方式保管在spsr_irq中这些存放器保管到哪里?保管在异常方式下的堆栈中,sp_irq作为堆栈指针异常处置时内存映像图示主程序〔通常是无限循环〕异常处置程序保管处置器现场程序恢复处置器现场程序主程序内存C言语编写通常是无限循环异常处置程序C言语编写通常是设置标志位,快速处置保管和恢复处置器现场程序汇编言语编写通常是将存放器压栈和弹栈异常向量表分析异常向量表从0地址开场,共有8个表项其中7个表项用作异常发生后入口,1个保管不用普通每个表项内的指令都是一条跳转指令Bxxxx相对跳转指令跳转地址范围有限LDRpc,[pc,#xx]直接对PC赋值可以实现到恣意地址的跳转 几个异常假好像时发生,它们的优先级如下1、复位2、数据异常中止3、FIQ4、IRQ5、预取指令6、SWI和未定义指令异常的优先级引入异常向量表后的内存映像内存主程序〔通常是无限循环〕异常处置程序保管处置器现场程序恢复处置器现场程序主程序异常处置程序保管和恢复处置器现场程序异常向量表通常是放置一条跳转语句从主程序到异常向量表的跳转是硬件自动完成的异常向量表入口2异常呼应当一个异常出现以后,ARM微处置器硬件会自动完成以下几步操作:1、将下一条指令的地址存入该异常对应的任务方式下的衔接存放器LR(r14_irq),以便程序在处置异常前往时能从正确的位置重新开场执行。讨论:为什么是r14_irq而不是r14_svc?2、将CPSR复制到相应的SPSR_irq中。3、根据异常类型,强迫设置CPSR的运转方式位。4、制止IRQ中断;进入FIQ方式时制止FIQ中断。5、映射相应方式的存放器6、强迫PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处置程序处。异常呼应(续)3异常处置异常处置包括两部分保管处置器现场 STMFD sp!,{r0-r12,lr};执行中断效力子程序 BL do_irq;4异常前往异常处置终了之后,软件需求执行以下几步操作从异常前往:1、将链接存放器LR的值减去相应的偏移量后送到PC中。2、同时将SPSR复制回CPSR中。可以以为运用程序总是从复位异常处置程序开场执行的,因此复位异常处置程序不需求前往。未定义指令异常前往未定义指令异常是由当前执行的指令本身产生的,程序计数器PC的值还未更新,指向当前指令后面第2条指令。处置器将PC-4保管到存放器LR_und中。前往操作可经过如下指令实现MOVS PC, LRSTMFD SP!, {R0-R12,LR} ;… LDMFD SP!, {R0-R12,PC}^SWIimmSWI异常前往SWI异常通常是提供程序员运用,程序员可以让处置器进入SVC方式下执行特定函数来完成某种功能。我们可以用如下一条指令进入SWI异常:SWI异常也是由当前执行的指令本身产生的,返回操作同未定义指令异常。IRQ中断前往IRQ异常属于正常的中断恳求,可经过对处置器的nIRQ引脚输入低电平产生。假设将CPSR的I位置为1,那么会制止IRQ中断〔留意只需在特权方式下才干改动I位的形状〕。假设将CPSR的I位清零,处置器会在指令执行完之后检查IRQ的输入。因此,IRQ中断产生时程序计数器PC的值曾经更新,指向当前指令后面第3条指令。IRQ中断前往〔续〕IRQ中断前往操作可经过如下指令实现SUBS PC, R14_irq,#4SUBS LR, LR,#4 STMFD SP!, {R0-R12,LR} ;… LDMFD SP!, {R0-R12,PC}

温馨提示

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

评论

0/150

提交评论