ARM中断深入分析几点

1.程序发生中断后,是如何跳转到中断程序里面的?

2.执行完中断后,如何返回到原来被打断的地方接着执行呢?

3.ARM处理器的流水线结构对中断返回地址的计算有什么影响?

4.ARM7,ARM9处理器流水线结构一个是3级一个是5级,为什么中断返回地址是相同的?

5.ARM启动后是SVC模式,发生中断后进入什么模式?

6.发生中断后,哪些事情是需要ARM自动完成?哪些是需要编程实现的?

  读书留痕,思考留果

1.程序发生中断后,是如何跳转到中断程序里面的?

  首先要执行完当前指令!然后自动完成以下事情:

  CPSR---->SPSR_irq(IRQ模式)(逆过程不能自动完成)

  PC-4  ----> R14_irq

  PC <---- 0X00000018(irq中断向量表的入口地址)

程序员需要补充做的事情有:

R0----R12,和LR的值入栈。

用户处理函数放在irq中断向量表的入口地址,以供跳转。

2.执行完中断后,如何返回到原来被打断的地方接着执行呢?

  恢复R0--R12,出栈;

  R14-4 ----> PC

  SPSR_irq---->CPSR

3.ARM处理器的流水线结构对中断返回地址的计算有什么影响?

  pc始终指向当前正在执行指令的下两条指令处(PC-8).执行完当前的,就变为PC-4。保存的就是PC-4.

4.ARM7,ARM9处理器流水线结构一个是3级一个是5级,为什么中断返回地址是相同的?

  因为:pc始终指向当前正在执行指令的下两条指令处(PC-8),不管是几级流水线。

5.ARM启动后是SVC模式,发生中断后进入什么模式?

  IRQ模式

6.发生中断后,哪些事情是需要ARM自动完成?哪些是需要编程实现的?

ARM自动完成:

 CPSR---->SPSR_irq(IRQ模式)(逆过程不能自动完成)

  PC-4  ----> R14_irq

  PC <---- 0X00000018(irq中断向量表的入口地址)

需要编程实现的:

  R0----R12,和LR的值入栈。

  用户处理函数放在irq中断向量表的入口地址,以供跳转。

今天的学习就到这里了。

  

ARM中断深入分析几点的更多相关文章

  1. 可能是讲解ARM中断和中断嵌套最通俗易懂的文章

    几天前一个学生问我ARM中断嵌套的问题,我才发现原来在我心中理所当然的事对学生来说理解实属不易.  ARM有七种模式,我们这里只讨论SVC.IRQ和FIQ模式.  我们可以假设ARM核心有两根中断引脚 ...

  2. linux-2.6.26内核中ARM中断实现详解(转)

    转载:http://www.cnblogs.com/leaven/archive/2010/08/06/1794293.html 更多文档参见:http://pan.baidu.com/s/1dDvJ ...

  3. ARM 中断状态和SVC状态的堆栈切换 (异常)【转】

    转自:http://blog.csdn.net/edwardlulinux/article/details/9261393 版权声明:本文为博主原创文章,未经博主允许不得转载. ARM 中断状态和SV ...

  4. arm中断体系结构

     ARM处理器中有7种类型的异常,按优先级从高到低的排列如下:                   复位异常(Reset).     数据异常(Data Abort).     快速中断异常(FIQ) ...

  5. arm中断汇编

    IRQ_Handler: push {lr} /* 保存 lr 地址 */ push {r0-r3, r12} /* 保存 r0-r3,r12 寄存器 */ mrs r0, spsr /* 读取 sp ...

  6. ARM中断与架构知识 精简知识点

    目录 一.ARM系统的异常与中断 二.CPU模式与寄存器 1.ARM CPU模式 2.ARM CPU state,两种指令集 3.ARM CPU寄存器: 引申介绍一下存储空间中的数据存放 4.ARM三 ...

  7. LINUX-内核-中断分析-中断向量表(3)-arm【转】

    转自:http://blog.csdn.net/haolianglh/article/details/51986987 arm中断概念 在<ARM体系结构与编程>第9章中说到,ARM 中有 ...

  8. request_irq() | 注册中断服务函数【转】

    本文转载自:http://blog.csdn.net/wealoong/article/details/7566546#t0 参考  : ARM Linux 中断机制分析.pdf linux-2.6. ...

  9. STM32学习笔记(六) SysTick系统时钟滴答实验(stm32中断入门)

    系统时钟滴答实验很不难,我就在面简单说下,但其中涉及到了STM32最复杂也是以后用途最广的外设-NVIC,如果说RCC是实时性所必须考虑的部分,那么NVIC就是stm32功能性实现的基础,NVIC的难 ...

随机推荐

  1. jmxtrans docker-compose 运行

    以下是一个简单的demo,使用jmxtrans 进行jmx 指标的处理,项目使用docker-compose 运行 同时写入数据到graphite 环境准备 docker-compose文件   ve ...

  2. 1-开发共享版APP(源码介绍)-BUG修复

    这一系列文章将介绍APP的源码,这一节作为所有BUG问题修复! https://www.cnblogs.com/yangfengwu/category/1512162.html    //开发共享版A ...

  3. 【loj2262】【CTSC2017】网络

    题目 一颗\(n\)个点的树,求加入一条边点之后两点间最长距离的最小值 : \(n \le 100000\) ; 题解 首先加入边的两个端点一定在直径上面,先\(dfs\)拎出直径来讨论(下标只代表直 ...

  4. SpringBoot导入Excel数据到MySQL数据库

    package com.example.example1.Controller; import com.example.example1.Entity.User; import com.example ...

  5. Django自带后台admin的使用配置

    Django自带后台使用配置参考官网地址:https://docs.djangoproject.com/en/1.11/ref/contrib/admin/ ,本文章值是介绍简单配置,如果需要详细内容 ...

  6. 关于移动虚拟机后,linux网卡启动异常问题解决

    废话不多说,直接上解决办法. 首先执行命令:ifconfig -a 会发现原来是eth0, 而现在变成了eth1了 然后我们编辑规则配置信息: vim /etc/udev/rule.d/70-pers ...

  7. mysql sqrt() 函数

    mysql> ); +----------+ | sqrt() | +----------+ | | +----------+ row in set (0.00 sec)

  8. P3396 哈希冲突(思维+方块)

    题目 P3396 哈希冲突 做法 预处理模数\([1,\sqrt{n}]\)的内存池,\(O(n\sqrt{n})\) 查询模数在范围里则直接输出,否则模拟\(O(m\sqrt{n})\) 修改则遍历 ...

  9. java web开发及Servlet常用的代码

    日志 1.使用门面模式的slfj,并结合log4j,logback. 2.info.debug.error,要写清楚. 3.使用占位符,如下: log.info("用户id为: {} &qu ...

  10. [C++] 对象指针使用方法

    对象指针:指向类对象的指针 类指针指向类变量(对象)的地址 对象指针定义格式: 类类型 *变量名: 举例: #include <iostream> using namespace std; ...