ARMSC中断分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARMSC中断分析

ARM S3C2440中断分析 1.什么是中断 所谓中断,是指CPU在正常运行程序时,由于内部/外部事件或由程序预先安排的事件,引起CPU中断正在运行的程序,而转到为内部/外部事件或为预先安排的事件服务的中断程序中去,服务完毕,再返回去执行刚才被中断的程序。 2.什么是中断优先级 中断优先级是指,中断源被响应和处理的优先等级。设置优先级的目的是为了在有多个中断源同时发出中断请求时,CPU能够按照预定的顺序(如:按事件的轻重缓急处理)进行响应并处理。 3.什么是中断嵌套 中断嵌套是指当CPU正在处理某个中断源即正在执行中断服务程序时,会出现优先级更高的中断源申请中断,为了使更急的中断源及时得到服务,需要暂时中断(挂起)当前正在执行的级别较低的中断服务程序,去处理更高级别的中断源,待执行完毕后再返回来执行低优先级的中断服务程序。但中断级别低的中断源不能中断级别高的中断服务,这就是中断嵌套,并且称这种中断嵌套方式为完全嵌套方式。 4.什么是中断向量 中断向量是中断服务程序的入口地址,中断向量一般是固定的,我们需要把我们写好的中断服务程序(ISR)的入口地址写道中断向量表中,这样在发生中断时,CPU就会自动跳转到中断向量表中找到它要执行的中断服务程序了。 5.什么是硬中断,什么是软中断 硬中断是由外部事件引起的因此具有随机性和突发性;软中断是执行中断指令产生的,无面外部施加中断请求信号,因此中断的发生不是随机的而是由程序安排好的。 S3C2440/S3C2410中断体系结构: 6.ARM体系 CPU的7种工作模式: · 用户模式(usr): ARM处理器正常的程序执行状态 · 快速中断模式(fiq): 用于高速数据传输或通道处理 · 中断模式(irq):用于通用的中断处理 · 管理模式(svc):操作系统使用的保护模式 · 数据访问终止模式(abt): 当数据或指令预取时进入该模式,可用于虚拟存储及存储保护 · 系统模式(sys) :运行具有特权操作系统任务 · 未定义指令中止模式(und): 当为定义的指令执行时进入该模式,可用于支持硬件协处理的软件仿真 可以通过软件来进行模式切换,或者发生各类中断,异常时CPU自动进入相应的模式。除用户模式外,其余的6中工作模式都属于特权模式。大多数程序运行于用户模式,进入特权模式是为了处理中断,异常,或者访问被保护的系统资源。 ARM920T的寄存器分为7组,其每个工作模式都拥有对应的寄存器组。其中有些寄存器是共用的,有些寄存器在不同模式下有自己的副本。当切换到另一个 工作模式时,那个工作模式的寄存器副本将被使用;这些寄存器成为备份寄存器(下图中使用灰色三角形标记的寄存器) R0-R15可以直接访问,R13-R15稍有特殊,R13又称为 栈指针寄存器,通常用于保存栈指针。R14又称为程序连接寄存器或连接寄存器,比如当执行BL子程序调用指令时,R14得到调用前的程序计数器 PC(R15)的备份,以供子程序返回之用。当发生中断和异常时,对应的R14_svc、R14_irq、R14_fiq、R14_abt和 R14_und保存R15返回值,R15是程序计数器PC。 PC(程序计数器),CPSR(当前程序状态寄存器)寄存器是程序执行时必不可少的寄存器。每组寄存器都有自己独立的SPSR,R14是为了保存CPSR和PC进入异常前的值。 7.ARM920T异常处理的过程——从寄存器值的变化和地址跳转两个角度 7.1 ·ARM920T异常处理的过程——寄存器值变化角度 ARM920T CPU 将在异常(包括中断)的进入和退出时自动完成的工作: 在处理异常前,必须保存当前处理器的状态(PC和CPSR值),当中断程序处理程序完成后,原来的程序能够继续执行。 处理一个异常: · 将下一条指令的地址(PC)保存在相应的LR(R14)寄存器中。如果异常是从ARM状态进入,则保存在LR(R14)寄存器中的下一条指令的地址。如果是从Thumb状态进入,则保存在LR寄存器中的是当前PC的偏移值。它能使程序异常返回后从正确的位置重新开始。这就意味着异常处理不需要确定异常是从何种状态进入的。 · 将CPSR复制到相应的SPSR中 · 将CPSR的工作模式位设置为这个异常对应的工作模式 · 令PC值等于这个异常模式在异常向量表中的地址,即跳转去执行异常的向量表中的相应指令 退出一个异常: · 前面进入异常工作模式时,连接寄存器中保存了前一个工作模式的下一个指令的地址,将它减去一个适当的值(图二)后赋给PC寄存器。 · 将SPCR值复制回CPSR ?????????????????????????? 进入/退出异常模式PC地址 CPSR各位意义: · T位:置位时,CPU处于Thumb状态,否则处于ARM状态 · 中断禁止位: I

文档评论(0)

ipad0b + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档