`
sony-soft
  • 浏览: 1073754 次
文章分类
社区版块
存档分类
最新评论

ARM的异常中断机制 .

 
阅读更多

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

在ARM处理器里主要是通过3中情况在控制程序执行的:
1.流水方式执行程序,PC的值是下一条指令的地址,即每执行一条指令PC都加一个字的偏移。
2.通过跳转指令来控制程序执行。
B 跳转到指定的指令处执行。
BL 跳转执行,保存子程序地址并返回。
BX 跳转执行并切换到Thumb状态。
BLX 三种方式组合。
3.通过异常中断机制控制程序执行。
当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。在进入异常中断处理程序执行完时,程序返回到发生到产生中断指令的下一条指令处执行。在进入异常中断处理程序时,要保存被中断的程序的执行现场,从异常中断处理程序退出时,要恢复被中断的程序的执行现场。
在实际情况中ARM处理器在控制程序执行时往往是以上3种方式结合执行的。

ARM有以下几种异常中断种类:

异常中断名称 含义
Reset 复位中断,
当处理器复位引脚有效时,如系统产生复位中断则跳转至复位中断异常处理程序处执行。
有两种情况:
系统加电,
系统复位
Undefined instruction 当ARM处理器认为当前指令未定义时,产生未定义的指令异常中断。
Software interrupt 软中断,这是有用户定义的中断指令。可用于用户模式下的程序调用的特权操作指令,在RTOS中可以通过该机制实现系统功能调用。
Prefech Abort 指令预取中止,预读指令地址不存在或不能访问则产生该中断。
Data Abotr 数据访问中止,数据访问指令地址不存在或不能访问则产生该中断。
IRQ 外部中断请求,当处理器外部引脚有效时,且CPSR的寄存器I被清除时,产生该中断,并调用中断服务子程序。
FIQ 快速中断请求,当处理器快速外部引脚有效时,且CPSR的寄存器F被清除时,产生该中断,并调用中断服务子程序。

呵呵,让我们来看看ARM的异常中断响应过程吧!
1.保存处理器当前状态、中断屏蔽位及各条件标志位。怎样保存呢?
ARM的6种模式下都有自己的SPSR,它就是通过把当前的CPSR保存到将要执行异常中断的SPSR_mode实现的。
2.设置当前的CPSR的相应的标志位。
设置M、I、F等控制位。
3.将lr_mode设成返回地址。
4.将PC指向中断向量表的地址,跳转到对应的中断服务程序处执行。
5.恢复被中断处理的处理器状态。(将SPSR_mode复制到CPSR)
6.返回到发生异常中断的下一条指令处执行。(即PC = lr_mode)

用伪代码描述如下:
lr_mode = pc
spsr_mode = cpsr
cpsr[4:0] = exception mode
if <exception mode> == Reset or FIQ then
cpsr[6] = 1
cpsr[7] = 1
pc = exception mode vector address
cpsr = spsr_mode
pc = lr_mode

分享到:
评论

相关推荐

    ARM对异常中断的响应过程

    下面是ARM异常中断响应过程中涉及的一些核心知识点。 首先,了解ARM对异常中断的响应过程是理解其异常处理机制的首要步骤。当发生异常中断时,ARM处理器会自动完成以下几个步骤: 1. 保存处理器当前状态:即将当前...

    ARM中异常中断处理

    ARM 体系中的异常中断机制是一种复杂的机制,它允许处理器在执行程序时,能够及时地响应和处理各种异常中断请求,从而确保系统的稳定性和安全性。下面我们将详细介绍 ARM 体系中的异常中断机制。 一、异常中断处理...

    ARM的中断机制

    ARM的中断机制是其处理器架构中的关键组成部分,用于管理和响应各种内部和外部事件,从而确保系统的稳定性和响应性。在ARM体系中,中断被称为“异常”,主要包括以下几种类型: 1. **复位(Reset)**:这是最基础的...

    ARM的异常中断机制

    首先,要理解ARM异常中断机制的前提是先了解ARM处理器如何控制程序执行。在ARM处理器中有三种控制程序执行的情况: 1. 流水方式执行程序:在ARM处理器中,程序计数器(PC)指向下一条指令的地址,每次执行一条指令...

    Arm 中断管理 源码.

    中断机制使得系统能够及时响应外部事件,如按键输入、定时器溢出、通信接收等。在这个主题中,我们将深入探讨"Arm 中断管理"的相关知识点,并基于ucOSIII操作系统进行讲解。 首先,我们要理解ARM处理器的中断结构。...

    ARM异常处理机制ARM异常处理机制

    ### ARM异常处理机制详解 #### 一、ARM异常处理机制概述 ARM处理器作为一种广泛应用的嵌入式系统核心,为了确保系统的稳定性和实时性,设计了一套完善的异常处理机制。异常处理是嵌入式系统中非常重要的一个方面,...

    ARM异常中断机制以S3C2410为例

    【ARM异常中断机制以S3C2410为例】主要介绍了ARM9处理器,特别是S3C2410型号的中断和异常处理机制。在ARM架构中,异常分为七种模式,每种模式都有其特定的应用场景和处理方式。 1. **用户模式(usr)**:普通应用程序...

    ARM中断编程.rar

    ARM架构在嵌入式系统和移动设备中广泛应用,中断编程是其核心技能之一。本文将深入探讨ARM中断编程的关键知识点,以帮助读者...通过学习和实践,开发者能够熟练运用中断机制,实现各种实时性和性能要求高的应用场景。

    第四章ARM存储与异常中断处理.pptx

    ARM存储与异常中断处理是...综上所述,理解ARM的存储架构和异常中断处理机制对于开发高效、可靠的嵌入式系统至关重要。正确配置和利用片上存储资源,以及有效地管理中断,可以显著提升系统的实时性、稳定性和性能。

    第7章ARM异常中断处理及编程.pptx

    第 7 章 ARM 异常中断处理及编程涵盖了 ARM 架构中关于异常中断的基本概念、处理机制以及实际应用。ARM 异常中断处理是确保系统在遇到异常情况时能够正常运行的关键机制,它涉及到中断的响应、现场保存、处理程序...

    ARM异常中断以及对ARM异常返回地址的分析

    总之,ARM异常中断及其返回地址的处理机制是ARM架构设计中一个关键的部分,它不仅确保了处理器在面对各种异常情况时的鲁棒性,也为开发人员提供了强大的工具来构建复杂且可靠的系统。通过深入理解这些机制,开发者...

    ARM 异常处理机制参考

    ARM 处理器共有 7 种异常中断,每种异常都有自己固定的异常向量地址,并且在异常响应后,处理器会切换至相应的异常中断模式。 ARM 异常处理机制的主要流程包括: 1. 异常发生时处理器的动作:当 7 种异常中的任何...

    第7章 ARM异常中断处理及编程《从实践中学ARM体系结构与接口技术》

    在探讨ARM异常中断处理及编程的过程中,首先需要理解中断的基本概念。中断是处理器在执行程序过程中,遇到外部或内部的紧急事件需要处理时,暂时中止当前程序的执行,转而去处理这些紧急事件的过程。在日常生活中,...

    浅析arm的异常、中断和arm工作模式的联系

    以上便是ARM异常、中断和工作模式的联系,了解这些概念对于设计高性能的嵌入式应用至关重要。开发者需要深入理解这些机制,以便在编写中断服务程序和异常处理代码时,能够更加高效和准确地控制处理器的行为。

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

    #### 一、ARM的硬件中断机制 **1.1 中断的基本概念** 在嵌入式系统领域,外部设备的功能实现主要依赖于中断机制。中断(Interrupt)可以理解为一个事件,这一事件会改变处理器正常执行的指令顺序。这一事件通常是...

    ARM 异常处理机制参考1

    ARM 异常处理机制是 ARM 处理器中的一种机制,当正常的程序流被暂时中断时,处理器就会进入异常模式。例如响应一个来自外设的中断。在处理异常之前,ARM 内核保存当前的处理器状态,这样当处理程序结束时可以恢复...

    基于ARM9芯片S3C2410异常中断程序设计.pdf

    ### 基于ARM9芯片S3C2410异常中断程序设计 #### 概述 本文档探讨了在S3C2410 ARM9芯片上进行异常中断程序设计的方法和技术细节。S3C2410是一款广泛应用于嵌入式系统的微处理器,支持多种中断处理方式。文档首先介绍...

    V6-001_移植SEGGER的硬件异常分析机制.rar

    这涉及到对STM32的中断处理机制、异常处理流程以及SEGGER的相关工具的配置和使用。首先,我们需要理解STM32的中断系统,包括中断向量表、中断优先级以及中断服务例程的工作原理。中断是微控制器处理突发事件的主要...

    ARM9中断ISR分析.

    通过对ARM9 S3C2410中断ISR的详细分析,我们可以了解到,中断处理机制是通过中断向量表、保存现场以及跳转到具体的处理函数等步骤实现的。这种机制不仅能够确保系统的实时性和可靠性,同时也为开发者提供了高度的...

Global site tag (gtag.js) - Google Analytics