嵌入式系统及应用-Chapter08-ARM异常中断处理系统.ppt

嵌入式系统及应用-Chapter08-ARM异常中断处理系统.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统及应用-Chapter08-ARM异常中断处理系统,arm嵌入式系统开发,arm9嵌入式系统设计,arm嵌入式系统,arm嵌入式系统教程,arm嵌入式系统论文,arm嵌入式系统开发pdf,arm嵌入式linux系统,嵌入式系统的中断源,嵌入式系统中断

异常中断概述 中断种类 异常中断向量表和优先级 异常中断寄存器组 中断分类 复位异常 复位引脚有效时产生复位异常中断;发生于系统加电时和系统复位时; 未定义指令异常 ARM处理器认为当前指令未定义时产生该中断;用户仿真浮点向量运算; 软件中断 用户定义的中断指令,实现系统功能调用; 指令预取终止 预取的指令不存在或是拒绝访问时产生该中断; 中断分类 数据访问终止 数据访问指令的目标地址不存在或拒绝访问时产生该中断; 外部中断请求IRQ IRQ请求引脚有效且CPSR允许中断,则产生IRQ中断请求;系统中个外围器件使用该中断请求处理器服务; 快速中断请求FIQ 可以简单的认为优先级最高的IRQ 异常中断向量表和优先级 异常中断寄存器组 进入和退出异常中断 异常中断相应过程 异常中断返回过程 安装异常中断处理程序 异常中断相应过程 保存处理七当前状态、中断屏蔽位以及条件标志位。 设置CPSR中的相应位,进入相应处理器模式; 将寄存器lr设置成返回地址; 将PC设置异常中断的中断向量地址; 异常中断相应过程 相应复位异常中断 R14_svc = UNPREDICTABLE value SPSR_svc = UNPREDICTABLE value CPSR[4:0] = 0b10011 CPSR[5] = 0 CPSR[6] = 1 CPSR[7] = 1 if high vectors configured then PC = 0xFFFF0000 else PC = 0异常中断相应过程 相应IRQ异常中断 R14_svc = address of next instruction SPSR_irq = CPSR CPSR[4:0] = 0b10010 CPSR[5] = 0 CPSR[7] = 1 if high vectors configured then PC = 0xFFFF0018 else PC = 0异常中断返回过程 从SPSR_mode寄存器恢复被中断程序的处理器状态; 从lr寄存器返回到发生异常中断指令的下一条指令处执行; 复位异常不需要返回; 因为异常发生时PC所指向的位置是不同的,所以返回地址对不同的异常中断也是不一样的; 异常中断相应过程 SWI和未定义指令异常中断返回 ;异常发生时,PC指向当前指令后面第2条指令,处理器将PC-4保存期lr_mode中,返回指令: MOVS PC,LR ;若中断处理程序使用了数据栈,则使用: STMFD SP!,{reglist,lr} ;... LDMFD SP!,{reglist,PC}^ 异常中断相应过程 IRQ和FIQ异常中断返回 ;异常发生时,PC指向当前指令后面第3条指令,处理器将PC-4保存至lr_mode中,返回指令: SUBS PC,LR,#4 ;若中断处理程序使用了数据栈,则使用: SUBS LR,LR,#4 STMFD SP!,{reglist,lr} ;... LDMFD SP!,{reglist,PC}^ 异常中断相应过程 指令预取中止异常中断返回 ;指令预取中止异常时有当前执行指令英气,应该返回到产生该指令预取中止异常中断的指令处而不是下调指令; ;异常发生时,PC指向当前指令后面第2条指令,处理器将PC-4保存至lr_mode中,返回指令: SUBS PC,LR,#4 若中断处理程序使用了数据栈,则使用: SUBS LR,LR,#4 STMFD SP!,{reglist,lr} ;... LDMFD SP!,{reglist,PC}^ 安装异常中断处理程序 使用BL指令或是LDR指令实现; 在系统复位时安装异常中断处理程序; 在C程序处安装异常中断处理程序; 系统复位时安装处理程序 地址0x0处为ROM: Vector_Init_Block LDR PC,Rest_Addr LDR PC,Undefined_Addr ... LDR PC,IRQ_Addr LDD PC,FIQ_Addr Reset_Addr DCD Start_Boot ... IRQ_Addr DCD IRQ_Handler FIQ_Addr DCD FIQ_Handler 系统复位时安装处理程序 地址0x0处为RAM: MOV R8,#0 ADR R9,Vecor_Init_Block LDMIA R9!,{R0-R7} ;复制中断向量 STMIA R8!,{R0-R7} LDMIA R9!,{R0-R7} ;复制中断处理入口函数地址 STMIA R9!,{R0-R7} C程序中安装处理程序 使用跳转指令: Unsigned Install_Handler(unsigned routine, unsigned *vector)

文档评论(0)

mydoc + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档