`
tomhibolu
  • 浏览: 1388027 次
文章分类
社区版块
存档分类
最新评论

关于ARM核异常与中断处理机制研究

 
阅读更多

哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处

http://blog.csdn.net/woshixingaaa/archive/2011/03/15/6249768.aspx

一.ARM处理器异常及其对应的模式

当一个异常发生时,ARM处理器总是切换到ARM状态(即非Thumb状态)。Thumb指令集没有包含进行异常处理时需要的一些指令,因此在异常中断时,还是要使用ARM指令。

每种异常都导致内核进入一种特定的模式。此外,可以通过修改cpsr,进入任何ARM处理器模式。用户和系统模式是仅有的可不通过相应异常进入的2中模式。

当一个异常导致模式的改变时,内核自动的:

l cpsr保存到相应异常模式下的spsr

l pc保存到相应模式下的lr

l 设置cpsr为相应异常模式

l 设置pc为相应异常处理程序的入口地址

二.向量表

异常发生时,ARM跳转地址组成的表。

三.异常优先级

复位异常是优先级最高的异常,一旦复位异常产生,总是会发生复位异常。注意:当一条不属于ARMThumb指令集的指令到达流水线的执行阶段时,若此时没有其它异常发生,就会产生未定义指令异常。ARM处理器会“询问”协处理器,看它能否将其作为一条协处理器指令来处理。由于协处理器在流水线之后,所以指令确认可以在内核的执行阶段进行。如果这条指令不属于任何一个协处理器,则会产生未定义指令异常。

四.中断

中断延时是指:从外部请求信号发出到取出对应的中断服务程序(ISR)的第一条指令,这期间的间隔时间。

五.中断源及其识别方法

S3C2440A60个中断源,IRQ有两种中断识别方法:向量中断和非向量中断。FIQ只有非向量中断。在IRQ各个中断源中的某一个中断源的中断请求被响应时,CPU转至0x18处自动加载一条转移指令转至相应中断源的固定中断向量处。IRQ各个中断源的向量地址是固定的,每个占用一个字单元。IRQ各个中断源若采用非向量中断,任意一个中断源发出中断请求,都认为发生了IRQ中断请求,并自动转入IRQ中断服务程序执行。IRQ中断服务程序主要功能是将软件设定的中断向量表中相应的中断源服务程序入口地址送给PC,并转其执行。在非向量中断模式下,一般在IRQ处放置一条转移指令:B IsrIRQ 。其中,IsrIRQ为所有IRQ中断服务程序的总入口地址,也是非向量中断模式的中断源判别及散转程序。

六.中断堆栈设计

在堆栈设计时,须确定2点:

l 位置

决定了在存储器映射中,堆栈从何处开始。大多数基于ARM系统设计的堆栈是采用向下递减式的,栈顶位于存储器的高端地址。

l 堆栈大小

依赖于处理程序的类型-嵌套的还是非嵌套的。一个嵌套中断处理程序需要更多的存储器空间,因为堆栈将随中断嵌套的深度而增加。

第一种方式A,说明了一个传统的堆栈安排,中断的堆栈位于代码段之下。第二种方式B,中断堆栈在用户堆栈之上,位于存储器的顶端。B优于A之处是,B在堆栈溢出时不会破坏向量表,因此系统在确认堆栈溢出后,还有机会纠正自己的错误。每一种处理器模式都要建立一个堆栈,这是在处理器每次复位时完成的。因为系统复位是从管理模式开始的,所以不用再切换到管理模式,而其他模式堆栈的建立要切换到相应模式。用于模式堆栈-通常是最后设置的,因为当处理器处于用户模式时,没有直接修改cpsr的方法。由于系统模式和用户模式共享寄存器,所以可以强制处理器进入系统模式来设置用户模式堆栈。

七.中断处理方法

1)非嵌套中断处理

最简单的中断处理是非嵌套的:只有当控制权回到被中断的任务或过程时,才允许再次相应中断。由于一个非嵌套的中断处理程序在一个时段内只能为一个中断处理程序服务,所以这种形式的中断处理程序不适合需要为多个不同优先级中断服务的复杂嵌入式系统。

2)嵌套中断处理

在处理程序完成当前中断的服务前重新允许中断,可以实现中断嵌套。嵌套的中断处理程序入口代码与简单的非嵌套中断处理程序类似。不同之处在于,在推出时,处理程序要测试被ISR更新过的一个标志。这个标志表明,是否需要做进一步的处理,如果不要求更多的处理,那么这个中断服务例程就完成了,处理程序也可以退出;如果需要进一步处理,处理程序可能要采取若干措施:重新允许中断,并/或执行一次上下文切换。重新允许中断包括把IRQ模式切换到SVC或系统模式。在IRQ模式下,不能简单的允许中断,因为这可能会导致链接寄存器r14_irq遭到破坏,特别是在执行完BL后即发生一次中断。执行上下文切换包括复位(清空)IRQ堆栈,因为当IRQ堆栈中还有数据的时,处理程序不会执行上下文切换。所有保存在IRQ堆栈的寄存器必须转移到任务堆栈,典型地是放在管理模式堆栈上。然后,其余的寄存器也必须被保存到任务堆栈。在那里,他们会被转移到堆栈中一个称为堆栈帧的保留存储块上。

如下恢复现场的指令:

LDMFD R13!,(R0R3PC^

这里,寄存器列表后(其中必须包括PC)的后面的“^”表示这是一条特殊形式的指令。在从存储器装入PC的同时,CPSR也得到恢复。

分享到:
评论

相关推荐

    基于ARM Linux的中断、异常的处理分析

    本文是基于ARM S3C2410X系统的Linux 2.6中断、异常和系统调用的处理分析。...1. ARM的硬件中断机制 2. Linux 2.6对ARM中断向量表的初始化 3. Linux 2.6对ARM中断、异常的处理(从汇编-->C语言函数;asm_do_IRQ)

    ARM的异常中断机制

    在我们平时使用计算机时我们敲击键盘,计算机会对我做出响应。这是什么原因呢?处理器又是如何响应外围请求的呢?其实这都是通过处理器的中断机制实现的。ARM又是怎样的中断机制?让我们一起探讨吧!

    ARM异常中断机制以S3C2410为例

    ARM9(以S3C2410为例)中断机制 ARM异常机制介绍 异常向量表 中断处理

    ARM Cortex-M中断与异常20181010.pptx

    为公司员工编写的嵌入式软件开发基础知识培训教材。 内容包括ARM Cortex-M内核的基本知识,中断的概念,ARM中断的机制。

    嵌入式系统/ARM技术中的基于ARM处理器中断处理的编程实现

     ARM处理器异常中断处理概述  当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。当异常中断处理程序执行完成后,程序返回到发生中断的指令的下一条指令处执行。在进入异常中断...

    详解ARM体系结构支持的异常包括复位、中断、未定义指令等.pdf

    当ARM 处理器或协处理器遇见不能处理的指令时,产生为定义异常。可使用该异常机制进行软件仿真(异常向量:0x0000,0004);   3、软件中断(优先级6) 有执行SWI 指令产生,可用于用户模式下程式调用...

    Cortex-M3的异常处理机制研究

    详细阐述CortexM3异常的分类、优先级、进入和退出,以及在CortexM3异常处理机制中使用的新技术——迟到(latearriving)和尾链(tailchaining);最后,比较CortexM3和ARM7异常控制机制的区别,并量化分析迟到和...

    嵌入式系统/ARM技术中的ARM处理器中断处理的编程实现

    ARM处理器异常中断处理概述  当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。当异常中断处理程序执行完成后,程序返回到发生中断的指令的下一条指令处执行。在进入异常中断处理...

    嵌入式系统/ARM技术中的Cortex-M3内核的异常处理机制及其新技术研究

    尤其在异常处理机制方面有很大的改进,其异常响应只需要12个时钟周期。NVIC(Nested Vectored Interrupt Controller,嵌套向量中断控制器)是CortexM3处理器的一个紧耦合部件,可以配置1~240个带有256个优先级、8级...

    破坏STM32中断机制引发的异常

    最终查明是任务切换过程破坏了cortex内核的中断机制所致,但为何同样采用了cortex内核的LM3S8962芯片却没有出现该问题?本文将向你讲述这其中的原因,同时你还可以了解到操作系统任务切换的基本原理以及cortex中断...

    ARM内核详细介绍

    ARM内核介绍,介绍ARM发展历史,ARM系列内核的区别,精简指令集和复杂指令集,ARM中断异常分类,及处理机制,及各个寄存器的功能与作用介绍,总的介绍的非常详细,对刚接触ARM的同学来说,可以减少很多弯路。

    ARM异常处理机制 (2006年)

    基于ARM的体系结构以及多种异常的存在,ARM异常响应的处理不得不考虑存储模式、返回地址、中断向量、堆栈空间以及处理器的状态等多方面的问题,本文从使用的角度较为全面地分析了ARM的异常处理机制,并以ARM7内核的...

    嵌入式开发ARM课件包含系统概述,ARM编程,系统概述,中端管理,指令集

    包含七章 包含40个课件 ...2.2.2.3 ARM编程模型3-4-ARM v6指令集,2.2.2.4 ARM编程模型4-中断与异常,2.2.2.5 ARM编程模型5-外部IO,1.5嵌入式系统的应用领域和发展趋势,1.4嵌入式系统的分类 - 副本

    Cortex-M3内核的异常处理机制及其新技术研究

    尤其在异常处理机制方面有很大的改进,其异常响应只需要12个时钟周期。NVIC(Nested Vectored Interrupt Controller,嵌套向量中断控制器)是CortexM3处理器的一个紧耦合部件,可以配置1~240个带有256个优先级、8级...

    嵌入式系统/ARM技术中的32位嵌入式CPU中系统控制协处理器的设计与实现

    IPS体系结构中的系统控制协处理器简称CP0,它提供指令正常执行所需的环境,进行异常/中断处理、高速缓存填充、虚实地址转换、操作模式转换等操作。单从硬件的角度而言,系统控制协处理器对指令集的作用就相当于操作...

    嵌入式系统原理及应用——基于ARM Cortex-M3内核的STM32F103系列微控制器.zip

    3.3.6异常和中断98 3.3.7双堆栈机制105 3.4ARM CortexM3存储器系统107 3.4.1存储器映射107 3.4.2位带操作110 3.4.3存储格式112 3.5ARM CortexM3的低功耗模式113 3.6本章小结114 习题3115 第4章基于ARM...

    微处理器原理与设计.zip

    Lecture 06.ARM中断机制_myf.pptx Lecture 07.Cortex-M3 C程序设计.pptx Lecture 08.ARM异常机制_myf.pptx Lecture 09.系统总线_myf.pptx Lecture 10.存储器系统myf.pptx Lecture 11A.输入输出系统1_myf.pptx ...

    郭天祥ARM9视频教程(第13和20讲均可观看).docx

    2. ARM编程模型和异常中断 3. S3C2440系统结构及片上资源介绍 4. S3C2440时钟电源管理 5. S3C2440的中断体系结构 第十讲 S3C2440主存储器配置 1. S3C2440存储控制器特性 2. SDRAM原理分析 3. NandFlash原理分析 第十...

Global site tag (gtag.js) - Google Analytics