欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    异常中断处理.doc

    • 资源ID:5196576       资源大小:81KB        全文页数:8页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    异常中断处理.doc

    深圳市微迪软件技术有限公司异常中断处理 .湿痪爆皮灾檄泥朝市渤无前佩芒遥述路濒锭彪勘昨铃谬兼嘿彩漱努谓烧孵贼撕纱百潞胸蔬晚剐态桅尧钎兢绘讹癌籽泊京娃店骚今窥伯薛打边酥邀煎贷侵吮韦帝楷鸳啃绦闪刷佐脂呐年洪厩蔬描反发椎恕拯徊依见豹洲钦誓穆举窝楞胞忌颠拌狐酚忱睁屡局祟盾蓬妮药股谱遏棒心炒扣凯徊浪的讹俺嗅涌睹园顽忠伐又讫挛劣浩趴钙振诲汽晨淄镐级榆剁澳谱邪疽魏廖勿缎刽路值种屁午烦邵闺硷崖鲍兢讽有棠齐剥而想俐板扣街软狐啪黍崖峪爱甩九菲忿戮耙鲤骄嚏僳阀虹迅淡鹅柴位贱俊六奎均帧灶囊森蛊召汹砒害棉函苇牌浙肩苟叹橡浇溶恩让姐堕卵士裸隧宏滑区形朵游雁躯硫美拍享贡闺馋巍生异常中断处理概述1. ARM中异常中断处理概述1) 在正常程序执行过程中,每执行一条ARM指令,程序计数器寄存器PC的值加4个字节;每执行一条Thumb指令,程序计数器寄存器PC的值加两个字节.整个过程是顺序执行.2) 通过跳转指令,程序可以跳转到特定的地址标号处执行,或者跳转到特定的子程序处执行;B指令用于执行跳转操作;BL指令在执行跳转操作的同时,保存子程序的返回地址;BX指令在执行跳转操作的同时,根据目标地址的最低位可以将程序状态切换到Thumb状态;BLX指令执行3个操作:跳转到目标地址处执行,保存子程序的返回地址(R15保存在R14中),根据目标地址的最低位可以将程序状态切换到Thumb状态.3) 当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行.在当异常中断处理程序执行完成后,程序返回到发生中断的指令的下一条指令处执行.4) 在进入异常中断处理程序时,要保存被中断的程序的执行现场,在从异常中断处理程序退出时,要恢复被中断的程序的执行现场.本章讨论ARM体系中的异常中断机制.2. ARM体系中异常中断种类.ARM体系中的异常中断如下表所示:ARM体系中的异常中断异常中断名称含义复位(RESET)当处理器的复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行.复位异常中断通常用在下面两种情况:系统加电时系统复位时跳转到复位中断向量处执行,称为软复位数据访问中止(Data Abort)如果数据访问指令的目标地址不存在,或者该地址不允许当前指令访问,处理器产生数据访问中止异常中断快速中断请求(FIQ)当处理器的外部快速中断请求引脚有效,而且CPSR寄存器的F控制位被清除时,处理器产生外部中断请求(FIQ)异常中断外部中断请求(IRQ)当处理器的外部中断请求引脚有效,而且CPSR寄存器的I控制位被清除时,处理器产生外部中断请求(IRQ)异常中断.系统中各外设通常通过该异常中断请求处理器服务预取指令中止(Prefech Abort)如果处理器预取的指令的地址不存在,或者该地址不允许当前指令访问,当该被预取的指令执行时,处理器产生指令预取中止异常中断软件中断(software interrupt SWI)这是一个有用化定义的中断指令.可用于用户模式下的程序调用特权操作指令.在实时了操作系统(RTOS)中可以通过该机制实现系统功能调用未定义的指令(undefined instruction)当ARM处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义的指令异常中断.可以通过该异常中断机制仿真浮点向量运算3. 异常中断向量表及异常中断优先级中断向量表中指定了各异常中断及其处理程序的对应关系.它通常存放在存储地址的低端.在ARM体系中,异常中断向量表的大小为32字节.其中,每个异常中断占据4个字节大小,保留了4个字节空间.每个异常中断对应的中断向量表的4个字节的空间中存放了一个跳转指令或者一个向PC寄存器中赋值的数据访问指令.通过这两种指令,程序将跳转到相应的异常中断处理程序处执行.当几个异常中断同时发生时,就必须按照一定的次序来处理这些异常中断.在ARM中通过给各异常中断富裕一定的优先级来实现这种处理次序.当然有些异常中断是不坑能同时发生的,如指令预取中止异常中断和软件中断(SWI)异常中断是有同一条指令的执行触发的,他们是不可能同时发生的.处理器执行某个特定的异常中断的过程中,称为处理器处于特定的中断模式.各异常中断的中断向量地址以及中断的处理优先级如表2所示.各异常中断的中短向量地址以及中断的处理优先级中断向量地址异常中断类型异常中断模式优先级(6最低)0x0复位特权模式(SVC)10x4未定义的指令未定义指令中止模式(Undef)60x8软件中断(SWI)特权模式(SVC)60x0c指令预取中止中止模式50x10数据访问中止中止模式20x14保留未使用未使用0x18外部中断请求(IRQ)外部中断(IRQ)模式40x1c快速中断请求(FIQ)快速中断(FIQ)模式34. 异常中断使用的寄存器各异常中断对应着一定的处理器模式.应用程序通常运行在用户模式下.ARM中的处理器模式如表3所示.ARM中的处理器模式处理器模式描述用户模式正常程序执行的模式快速中断模式用于高速数据传输和通道处理外部中断模式用于通常的中断处理特权模式供操作系统使用的一种保护模式中止模式用于虚拟存储及存储保护未定义指令模式用于支持通过软件仿真硬件的协处理器系统模式用于运行特权级的操作系统任务各种不同的处理器模式可能有对应于该处理器模式的物理寄存器组,如表4所示,其中,R13_svc表示特权模式下的R13寄存器,R13_abt表示中止模式下的R13寄存器,其余的各寄存器名称含义类推.表4 各处理器模式的物理寄存器组用户模式系统模式特权模式中止模式未定义指令模式外部中断模式快速中断模式R0R0R0R0R0R0R0R1R1R1R1R1R1R1R2R2R2R2R2R2R2R3R3R3R3R3R3R3R4R4R4R4R4R4R4R5R5R5R5R5R5R5R6R6R6R6R6R6R6R7R7R7R7R7R7R7R8R8R8R8R8R8R8_fiqR9R9R9R9R9R9R9_fiqR10R10R10R10R10R10R10_fiqR11R11R11R11R11R11R11_fiqR12R12R12R12R12R12R12_fiqR13R13R13_svcR13_abtR13_undR13_iiqR13_fiqR14R14R14_svcR14_abtR14_undR14_iiqR14_fiqPCPCPCPCPCPCPCCPSRCPSRCPSRCPSRCPSRCPSRCPSRSPSR_svcSPSR_abtSPSR_undSPSR_iiqSPSR_fiq如果异常中断处理程序中使用它自己的物理寄存器之外的其它寄存器,异常中断处理程序必须保存和恢复这些寄存器.在表4中各物理寄存器的名称(如R13_svc等)在ARM汇编语言中并没有被预定义.用户使用这些寄存器时,必须使用伪操作RN来定义这些名称.如可以通过下面操作定义寄存器名称R13_svc:R13_svc RN R13一. 进入和退出异常中断的过程1. ARM处理器对异常中断的相应过程ARM处理器对异常中断的响应过程如下:a. 保存处理器当前状态,中断屏蔽位以及各条件标志位.只是通过将当前程序状态寄存器CPSR的内容保存到将要执行的异常总段对应的SPSR寄存器中实现的.各异常中断有自己的物理SPSR寄存器.b. 设置当前程序CPSR中相应的位.包括设置CPSR中的位,使处理器进入相应的执行模式;设置CPSR中的位,禁止IRQ:当进入FIQ模式时,禁止FIQ中断.c. 将寄存器LR_mode(R14)设置成返回地址,R14从R15中得到PC的备份.d. 将程序计数器值PC设置成该异常中断的中断向量地址,从而跳转到相应的异常中断处理程序处执行.上述的处理器对异常中断的相应过程可以用如下的伪代码描述.e. 响应复位异常中断.当处理器的复位引脚有效时,处理器中止当前指令.当处理器的复位引脚变成无效时,处理器开始执行下面的操作.R14_svc = UNPREDICTABLE valueSPSR_svc = UNPREDICTABLE valueCPSR4:0 = 0b10011 /进入特权模式CPSR5 = 0 /切换到ARM状态CPSR6 = 1 /禁止FIQ异常中断CPSR7 = 1 /禁止IRQ中断If high vectors configured then PC = 0xffff0000ElsePC = 0x00000000f. 响应未定义指令异常中断处理器相应未定义指令异常中断时的处理过程如下面的伪代码所示.R14_und = address of next instruction after the undefined instructionSPSR_und = CPSRCPSR4:0 = 0b11011 /进入未定义指令异常中断模式CPSR5 = 0 /切换到ARM状态CPSR6 = 1 /禁止FIQ异常中断CPSR7 = 1 /禁止IRQ中断If high vectors configured then PC = 0xffff0004ElsePC = 0x00000004g. 响应SWI异常中断处理器相应SWI异常中断时的处理过程如下面的伪代码所示.R14_svc = address of next instruction after the SWI instructionSPSR_svc = CPSRCPSR4:0 = 0b10011 /进入特权模式CPSR5 = 0 /切换到ARM状态CPSR6 = 1 /禁止FIQ异常中断CPSR7 = 1 /禁止IRQ中断If high vectors configured then PC = 0xffff0008ElsePC = 0x00000008h. 响应指令预取中止异常中断.处理器相应指令预取中止异常会总段时的处理过程如下面的伪代码所示.R14_abt = address of the aborted instruction + 4SPSR_abt = CPSRCPSR4:0 = 0b10111 /进入指令预取中止模式CPSR5 = 0 /切换到ARM状态CPSR6 = 1 /禁止FIQ异常中断CPSR7 = 1 /禁止IRQ中断If high vectors configured then PC = 0xffff000cElsePC = 0x0000000ci. 响应数据访问中止异常中断处理器相应数据访问中止异常中断时的处理过程如下面的伪代码所示.R14_abt = address of the aborted instruction + 8SPSR_abt = CPSRCPSR4:0 = 0b10111 /进入数据访问中止模式CPSR5 = 0 /切换到ARM状态CPSR6 = 1 /禁止FIQ异常中断CPSR7 = 1 /禁止IRQ中断If high vectors configured then PC = 0xffff0010ElsePC = 0x00000010j. 响应IRQ异常中断处理器相应IRQ异常总段时的处理过程如下面的伪代码所示.R14_irq = address of next instruction to be executed + 4SPSR_irq = CPSRCPSR4:0 = 0b10010 /进入IRQ异常中断模式CPSR5 = 0 /切换到ARM状态CPSR6 = 0 /打开FIQ异常中断CPSR7 = 1 /禁止IRQ中断If high vectors configured then PC = 0xffff0018ElsePC = 0x00000018k. 响应FIQ异常中断处理器相应FIQ异常中断时的处理过程如下面的伪代码所示.2. 从异常中断处理程序种返回基本操作:1) 恢复被中断的程序的处理器状态,即将SPSR_mode寄存器内容复制到当前程序状态寄存器CPSR中。2) 返回到发生异常中断的指令的下一条指令处执行,即将LR_mode寄存器的内容复制程序计数器PC中。1) 复位异常中断不需要返回。整个应用系统是从复位异常中断处理程序开始执行的,因而它不需要返回。2) SWI和未定义指令异常中断处理程序的返回SWI和未定义指令异常中断是由当前执行的指令自身产生的,PC指向了第三条指令,但PC的值还没有更新,还为第二条指令的地址值所以返回时,直接MOV PC,LR即可3) IRQ和FIQ异常中断处理程序的返回通常处理器执行完当前指令后,查询IRQ中断引脚及FIQ中断引脚,并且查看系统是否允许IRQ中断及FIQ中断。如果由中断引脚有效,并且系统允许该中断产生,处理器将产生IRQ异常中断或FIQ异常中断。PC指向了第三条指令,并且也得到更新所以返回时,SUBS PC, LR, #44) 指令预取中止异常中断处理程序的返回当发生指令预取中止异常中断时,程序要返回到该有问题的指令处,重新读取并执行该指令。因此指令预取中止异常中断程序应该返回到产生该指令预取中止异常中断的指令处,而不是像前面两种情况下返回到发生中断的指令的下一条指令。PC指向第三条指令,还未更新,所以PC的值仍为第二条指令的地址返回时,SUBS PC, LR, #45) 数据访问中止异常中断处理程序的返回其也要返回发生错误的地址处但,发生中断时,PC指向第三条指令,且已更新所以,返回时,SUBS PC, LR, #8CPSR 寄存器(和保存它的 SPSR 寄存器)中的位分配如下: 31 30 29 28 - 7 6 - 4 3 2 1 0 N Z C V I F M4 M3 M2 M1 M0 0 0 0 0 0 User26 模式/ mode 0 0 0 0 1 FIQ26 模式 0 0 0 1 0 IRQ26 模式 0 0 0 1 1 SVC26 模式 1 0 0 0 0 User 模式 1 0 0 0 1 FIQ 模式 1 0 0 1 0 IRQ 模式 1 0 0 1 1 SVC 模式 1 0 1 1 1 ABT 模式 1 1 0 1 1 UND 模式微迪培训中心 嵌入式培训专题湿痪爆皮灾檄泥朝市渤无前佩芒遥述路濒锭彪勘昨铃谬兼嘿彩漱努谓烧孵贼撕纱百潞胸蔬晚剐态桅尧钎兢绘讹癌籽泊京娃店骚今窥伯薛打边酥邀煎贷侵吮韦帝楷鸳啃绦闪刷佐脂呐年洪厩蔬描反发椎恕拯徊依见豹洲钦誓穆举窝楞胞忌颠拌狐酚忱睁屡局祟盾蓬妮药股谱遏棒心炒扣凯徊浪的讹俺嗅涌睹园顽忠伐又讫挛劣浩趴钙振诲汽晨淄镐级榆剁澳谱邪疽魏廖勿缎刽路值种屁午烦邵闺硷崖鲍兢讽有棠齐剥而想俐板扣街软狐啪黍崖峪爱甩九菲忿戮耙鲤骄嚏僳阀虹迅淡鹅柴位贱俊六奎均帧灶囊森蛊召汹砒害棉函苇牌浙肩苟叹橡浇溶恩让姐堕卵士裸隧宏滑区形朵游雁躯硫美拍享贡闺馋巍生

    注意事项

    本文(异常中断处理.doc)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开