Linux中断知识汇总:

【深入理解Linux内核】【中断】内容汇总帖


发生硬件中断后,ARM处理器做了那些事情?

  1. CPU自动保存处理器状态,即将中断发生时的CPSR寄存器内容保存到SPSR_irq寄存器中
  2. CPU自动设置当前程序状态寄存器CPSR的低5位,使处理器进入特权模式中的IRQ模式(Linux不使用FIQ,只使用IRQ)
  3. 硬件自动关闭IRQ中断
  4. 将返回地址(PC)自动保存到LR_irq寄存器中
  5. CPU自动的将程序计数器PC设置成异常中断向量表中的地址,进入相应的异常处理程序中处理中断
  6. 处理完中断后,恢复中断发生前的处理器状态,即将SPSR_irq寄存器中的数据复制到CPSR寄存器中
  7. 设置程序计数器PC,使其指向中断发生前要执行的指令,即将LR_irq寄存器中的数据复制到PC寄存器中

接着对上述的关键字进行介绍:

CPSR:程序状态寄存器(current program status register) (当前程序状态寄存器),在任何处理器模式下被访问。它包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控制和状态位。

SPSR:程序状态保存寄存器(saved programstatus register),每一种处理器模式下都有一个状态寄存器SPSR,SPSR用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断退出时,可以用SPSR来恢复CPSR。由于用户模式和系统模式不是异常中断 模式,所以他没有SPSR。当用户在用户模式或系统模式访问SPSR,将产生不可预知的后果。


CPSR寄存器格式

31     30    29    28     27    26              7    6     5     4    3     2     1    0

N      Z       C      V      Q     DNM(RAZ)    I      F     T    M4  M3   M2   M1  M0

CPSR的高六位N、Z、C、V、Q统称为条件标志位。

  • N——本位设置成当前指令运算结果的bit[31]的值。当两个表示的有符号整数运算时,n=1表示运算结果为负数,n=0表示结果为正书或零。
  • Z——z=1表示运算的结果为零;z=0表示运算的结果不为零。对于CMP指令,Z=1表示进行比较的两个数大小相等。
  • C——下面分四种情况讨论C的设置方法:在加法指令中(包括比较指令CMP),当结果产生了进位,则C=1,表示无符号运算发生上溢出;其他情况C=0。在减法指令中(包括减法指令CMP),当运算中发生错位,则C=0,表示无符号运算数发生下溢出;其他情况下C=1。对于包含移位操作的非加减运算指令,C中包含最后一次溢出的的位的数值。对于其他非加减运算指令,C位的值通常不受影响。
  • V——对于加减运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号为溢出;通常其他指令不影响V位。
  • Q——在ARM V5的E系列处理器中,CPSR的bit[27]称为q标识位,主要用于指示增强的dsp指令是否发生了溢出。同样的spsr的bit[27]位也称为q标识位,用于在异常中断发生时保存和恢复CPSR中的Q标识位。

CPSR的低八位I、F、T、M[4:0]统称为控制位。当异常中断发生时这些位发生变化。在特权级的处理器模式下,软件可以修改这些控制位。

  • I——中断禁止位。当I=1时禁止IRQ中断
  • F——快速中断禁止位。当F=1时禁止FIQ中断
  • T——控制指令执行的状态。T=0表示执行ARM指令,T=1表示强制下一条执行的指令产生未定指令中断。
  • M[4:0]——控制处理器模式。分别对应:

USER[ob10000]、

FIQ[0b10001]、

IRQ[0b10010]、

SUPERVISOR[0B10011 ]、

ABORT[0b10111 ]、

UNDEFINEED[0b11011]、

SYSTEM[0b11111 ]

CPSR中的其他位。这些位用于将来扩展。应用软件不要操作这些位。

【中断】发生硬件中断后,ARM处理器做了那些事情?相关推荐

  1. js中使用new操作符做了什么事情

    例:var obj = new Base(); 该步一共做了三件事:即 var obj = {}; obj.__proto__ = Base.prototype; Base.call(obj); 第一 ...

  2. linux arm内核栈切换,ARM Linux中断发生时内核堆栈切换

    转载注明出处:http://www.wowotech.net/forum/viewtopic.php?id=54 对ARM Linux中断非常简洁.精确的描述. 发生了中断,最重要的是保存现场,在中断 ...

  3. 用C语言写ucos中断服务程序,在ARM处理器上移植uCOS II的中断处理

    uCOS II是一个源码公开.可移植.可固化.可剪裁和抢占式的实时多任务操作系统,其大部分源码是用ANSI C编写,与处理器硬件相关的部分使用汇编语言编写.总量约200行的汇编语言部分被压缩到最低限度 ...

  4. arm中断保护和恢复_浅谈ARM处理器的七种异常处理

    昨天的文章,我们谈了ARM处理器的七种运行模式,分别是:用户模式User(usr),系统模式System(sys),快速中断模式(fiq),管理模式Supervisor(svc),外部中断模式(irq ...

  5. ARM处理器中CP15协处理器的寄存器1376698090

    本章和第5章的内容都与ARM处理器中CP15协处理器的寄存器有密切关系,所以我们这里先介绍一下CP15寄存器以及访问CP15寄存器的汇编指令. 4.1.1  访问CP15寄存器的指令 访问CP15寄存 ...

  6. ARM处理器中“8位位图”

    在ARM处理器的汇编语言中,对指令语法格式中的<shifter_operand>的常数表达式有这样的规定:"该常数必须对应8位位图,即常数是由一个8位的常数循环移位偶数位得到的. ...

  7. 什么是嵌入式视觉?ARM处理器打造嵌入式视觉硬件

    嵌入式视觉是指在嵌入式系统中使用计算机视觉技术,与经常所说的机器视觉系统最大的区别在于嵌入式视觉系统是多合一的设备,简单来说嵌入式视觉是嵌入式系统与机器视觉技术的集合. 传统机器视觉系统由摄像系统.图 ...

  8. 硬件:关于ARM的22个常用概念!

    1.ARM中一些常见英文缩写解释 MSB:最高有效位: LSB:最低有效位: AHB:先进的高性能总线: VPB:连接片内外设功能的VLSI外设总线: EMC:外部存储器控制器: MAM:存储器加速模 ...

  9. 计算机原理与应用 第二章——ARM处理器

    第二章--ARM微处理器 文章目录 第二章--ARM微处理器 一.ARM微处理器特点及功能结构 1.ARM微处理器主要特点 2.指令集方面的主要特点 3.Cortex系列处理器特点 4.ARM处理器功 ...

最新文章

  1. Maven教程(3)--Maven导入工程常见问题(编码、MavenArchiver、Lifecycle Mapping、maven install 没有反应)...
  2. 电脑动态屏保_8款电脑软件,每一款都能让你的电脑更好用
  3. prometheus+node_exporter+grafana实践
  4. liferay 如何在页面实现添加多个portlet
  5. 作者:刘挺(1972-),男,哈尔滨工业大学教授,社会计算与信息检索研究中心主任。...
  6. 基于SSM的员工管理系统设计(含源文件)
  7. 8599元起!三星Galaxy Z Fold3/Flip3 5G折叠手机国行即将发货
  8. Linux多线程工作笔记0003---C语言中%p,%u,%lu都有什么用处
  9. 清除zend studio10.5中的内置浏览器中的历史记录
  10. Java 线程池实际运用案例
  11. Windows程序设计的第一个实例
  12. 有什么电脑软件可以测试网速,电脑怎么测试网速(测网速大全)
  13. Word转换成pdf之pdf虚拟打印机如何使用操作教程
  14. mysql先进后出_栈、队列中“先进先出”,“后进先出”的含义
  15. 第3章第11节:如何将众多图片制作成照片墙并作为幻灯片的背景 [PowerPoint精美幻灯片实战教程]
  16. 宝塔服务器之堡塔应用管理器的使用【php消息队列】
  17. ps ui html,PS UI设计技巧(3)
  18. 漏洞系列之——SQL注入
  19. 第二章 第二节课 等效电路 惠斯通电桥 等效变换
  20. LoadRunner(一)Win10系统下LoadRunner12的安装下载

热门文章

  1. C语言之强化,弱化符号weak
  2. Linux 驱动开发 三:字符设备驱动框架
  3. 科普:alphago是什么
  4. 【电磁场计算】磁偶极子在外磁场中的受力
  5. 面向非日本籍厨师的日本烹饪大赛:第六届日本料理世界挑战赛:冠军由Yoo Sung Yeub摘得
  6. Mathorcup数学建模竞赛第六届-【妈妈杯】A题:水产养殖池塘综合研究(附一等奖获奖论文、lingo和matlab代码)
  7. 阿里开源的27个项目,值得收藏!
  8. 让 AirDrop 支持有线传输,甚至让不支持 AirDrop 的 Mac 也能使用该功能 黑苹果也可以的哦
  9. unity Mirror使用心得二(服务器端的怪物创建,及其怪物AI的行为)
  10. 制作Android开机动画 bootanimation.zip