ARM 处理器 ~ 中断与异常

发布者:老卫最新更新时间:2020-04-23 来源: eefocus关键字:ARM  处理器  中断与异常 手机看文章 扫描二维码
随时随地手机看文章

中断与异常

定义

ARM 中的工作模式除 User 和 System 外,均为异常模式,这里的异常是广义的,包含以下三类情况


外部中断(外部中断)

由于 CPU 外部的原因而改变程序执行流程,属于异步事件,可以屏蔽


软件中断(自陷)

通过处理器拥有的软件指令,可预期地使正在执行的程序改变执行流程,以执行特定的程序

显式的事件,无条件执行

属同步事件,且不可屏蔽

例如 Motorola 68000 系列的 Trap 指令、ARM 中的 SWI、Intel 8086 中的 INT

异常

由 CPU 内部的原因(如非法指令)或外部的原因(如访存错误)引起的事件

没有对应的处理器指令

异常发生时,处理器无条件地挂起当前运行的程序,去执行特定的处理程序

属同步事件,且不可屏蔽

ARM 处理器把上述三种事件以异常模式来处理,通过异常向量来响应。ARM 的每个异常向量中存放的是一条指令(一般是跳转指令),异常发生时,CPU 自动到指定的向量地址读取该指令并执行。


异常向量表

ARM 的异常向量一般是完成程序跳转的指令


在 ARM720T,ARM9 系列及以后的内核中,异常向量表可放置在 0xFFFF0000 开始的高位地址空间

异常向量表

具体内容

异常向量表内容

如果异常处理程序的起始地址位于 32MB 的范围内,可以直接用分支指令完成跳转

如果异常处理程序的起始地址是一个合法的 ARM 指令立即数(可由0~255内的数循环右移偶数位得到),则可以用数据传输指令将该地址加载到 PC 中


其他情况需采用 LDR 指令完成对 PC 的加载


ARM 引起的异常事件类型

综合

异常响应过程

当一个异常产生,处理器核会

把 CPSR 的内容拷贝到对应模式下的 SPSR_< mode> 寄存器

设置 CPSR 的相关位(改变到ARM态、改变到异常模式 、关闭中断(如果适合))

把返回地址保存在对应模式下的 LR_< mode> 寄存器中

把 PC 拨到异常向量表地址

从异常返回,异常处理程序需要

从 SPSR_< mode> 恢复 CPSR

把 PC 拨到 LR_< mode> 指向的地址(返回地址加载到 PC)

以上只能在 ARM 状态完成

Reset 异常

Reset 被触发时,CPU 进入 Supervisor 模式并禁止 FIQ 和 IRQ


R14_svc = 不确定的值

SPSR_svc = CPSR

CPSR[4:0] = 0b10011   ;进入管理模式

CPSR[5] = 0           ;在ARM态中执行

CPSR[6] = 1           ;禁止快速中断FIQ

CPSR[7] = 1           ;禁止普通中断IRQ


未定义指令异常

触发该异常,有两种情形


CPU 执行一条协处理器指令,未等到任何协处理器的应答

CPU 执行一条未被定义的指令时

一旦发生该异常,CPU 将完成如下动作


R14_und = 未定义指令的下一条指令地址

SPSR_und = CPSR

CPSR[4:0] = 0b11011   ;进入未定义模式

CPSR[5] = 0           ;在ARM态中执行

CPSR[7] = 1           ;禁止普通中断IRQ


常用的异常返回方式


MOVS PC, R14      ;跳过发生异常的指令

SUBS PC, R14, #4  ;重新执行发生异常的指令


软件中断异常

执行 SWI 指令时触发,主要用于进入 OS 的系统调用

软中断

R14_svc = SWI指令的下一条指令地址

SPSR_svc = CPSR

CPSR[4:0] = 0b10011   ;进入管理模式

CPSR[5] = 0           ;在ARM态中执行

CPSR[7] = 1           ;禁止普通中断IRQ


常用的异常返回方式:MOVS PC, R14


指令预取异常

读取指令时发生读内存错误时被标记为中止,该指令还要执行时触发该异常,若未执行,不触发该异常


即 CPU 试图执行已被标记为无效的指令时,触发该异常


R14_abt = 中止指令的下一条指令地址

SPSR_abt = CPSR

CPSR[4:0] = 0b10111   ;进入中止模式

CPSR[5] = 0           ;在ARM态中执行

CPSR[7] = 1           ;禁止普通中断IRQ


常用的异常返回方式:SUBS PC, R14, #4


数据中止异常

CPU 和存储系统之间进行加载/存储数据操作时,若发生错误则触发该异常,分为两种情况


内部中止异常

由CPU内核自己引起,如 MMU/MPU 错误,意味着需要采取正确的措施并重新执行合适的指令


外部中止异常

由存储系统引起,可能是硬件错误,可能是内存地址不存在


R14_abt = 中止指令的下一条指令地址

SPSR_abt = CPSR

CPSR[4:0] = 0b10111   ;进入中止模式

CPSR[5] = 0           ;在ARM态中执行

CPSR[7] = 1           ;禁止普通中断IRQ


常用的异常返回方式


SUBS PC, R14, #4  ;跳过发生异常的指令

SUBS PC, R14, #8  ;返回到发生异常的指令


IRQ

当外部IRQ输入请求发生并且IRQ中断响应已经被使能,触发该异常


R14_irq = 下一条指令地址

SPSR_irq = CPSR

CPSR[4:0] = 0b10010   ;进入IRQ模式

CPSR[5] = 0           ;在ARM态中执行

CPSR[7] = 1           ;禁止普通中断IRQ


常用的异常返回方式:SUBS PC, R14, #4


FIQ

当外部 FIQ 输入请求发生并且 FIQ 中断响应已经被使能,触发该异常


通常用于快速传输数据


R14_fiq = 下一条指令地址

SPSR_fiq = CPSR

CPSR[4:0] = 0b10001   ;进入FIQ模式

CPSR[5] = 0           ;在ARM态中执行

CPSR[6] = 1           ;禁止快速中断FIQ

CPSR[7] = 1           ;禁止普通中断IRQ


常用的异常返回方式:SUBS PC, R14, #4


异常返回

除复位异常外,其他异常在处理完成后都可以返回异常发生时被打断的程序中继续执行

通常在异常处理程序的最后使用一条数据传输指令来完成

在异常模式下,在指令后加后缀 ’ S ’ ,将 PC 作为目标寄存器,这样不仅将更新 PC 的值,还会将 SPSR 寄存器的内容加载到 CPSR 中

校正返回地址的一大原因是 ARM 处理器的流水线

计算返回地址的注意点

发生异常时 PC 的值是否已经更新

异常返回后被中断的指令是否还需要执行

LR = PC - 4


异常优先级

异常被赋以了优先级,据此决定被响应的顺序

异常优先级

在所有异常的入口,IRQ 中断被屏蔽,只有重新被使能才可触发内核响应(如中断嵌套处理)


在 FIQ 和 Reset 异常的入口,FIQ 中断被屏蔽


异常处理中的寄存器使用

异常发生时伴随的模式切换意味着, 被调用的异常处理程序会访问

它自己的堆栈指针 (SP_)

它自己的链接寄存器 (LR_)

它自己的备份程序状态寄存器 (SPSR_)

如果是 FIQ异常处理,5个其它的通用状态寄存器 (r8_FIQ to r12_FIQ)

其它寄存器和原来模式下的寄存器是相同的

在外部接口上,堆栈指针(SP_) 必须保持8字节对齐

异常处理程序在返回前必须保证其它(被破坏的寄存器) 被重新载入,以恢复到异常发生前的状态

这可以通过将工作(即被破坏)寄存器的内容压栈,而在返回前出栈恢复来完成

应用的初始化代码将执行必要的寄存器初始化工作

中断处理

ARM 可响应两个外部中断请求信号,FIQ 和 IRQ


FIQ 中断比 IRQ 中断的优先级更高


当多个中断发生时,首先处理 FIQ

在响应 FIQ 中断时屏蔽 IRQ 中断(和 FIQ中断),直到 FIQ 中断处理程序完成,IRQ 中断才会被处理

以下设计使得 IFQ 尽快的响应


FIQ 向量在异常向量表的最后,使 FIQ 处理程序可以直接从 FIQ 向量开始,省去跳转的时间

FIQ 模式下有五个额外的寄存器 (R8_FIQ to R12_FIQ),这些寄存器在进入和退出 FIQ 时不需保存和恢复

FIQ 中断在 FIQ 中断处理程序的入口是被屏蔽的,需要重新使能(FIQ 中断源可以有多个,但是为了最好的系统性能应该避免 FIQ 中断的嵌套)

绝大多数基于 ARM 的系统有两个以上的中断源,因此需要一个中断控制器 (通常是内存映射编址))来控制中断信号如何进入 ARM 芯片

多级中断

关键字:ARM  处理器  中断与异常 引用地址:ARM 处理器 ~ 中断与异常

上一篇:Arm架构异常处理流程之中断
下一篇:ARM异常与中断处理

推荐阅读最新更新时间:2024-11-17 04:46

最便宜的诺基亚Android机 诺基亚2发布
11月1日消息,在10月的最后一天,HMD在印度发布了一款最便宜的诺基亚Android机,这就是传闻已久的诺基亚2,该机全球平均售价仅为99欧元,约合人民币765元。比之前推出的诺基亚6、诺基亚5和诺基亚3都要便宜,相比诺基亚3售价为139欧元。诺基亚最近还推出了旗舰机诺基亚8以及中端机诺基亚7。   在设计方面,诺基亚2沿袭了较为硬朗的设计风格,机身正面没有任何实体按键,也没有指纹识别功能。配置方面,该机采用5英寸720p屏,搭载骁龙212处理器,内置1GB+8GB存储组合,前置500万+后置800万像素摄像头,配备4100mAh大电池。值得一提的是,诺基亚2还支持IP52防水防尘功能,内置3.5毫米耳机孔,并支持双卡双待。
[手机便携]
华为海外社交平台表决心!首款 AI 处理器将于年内发布
电子网消息,7月31日,华为在Twitter、Facebook等多个海外社交平台的官方账号推送了一张海报,内容为:“AI不止语音助手。”这进一步暗示华为在 AI 领域的决心,意味着人工智能手机即将来临。 近日,华为消费者BG业务负责人余承东多次在接受采访时表示,华为将在今年年底前推出旗下首款人工智能处理器。他表示,华为将是第一家推出搭载 AI 芯片手机的厂商。依据华为的产品规划,这款处理器就很可能会成为华为Mate 10 的大脑。有猜测指出,这款 AI 芯片很有可能是华为最新一代的麒麟970 处理器。 人工智能时代的来临,意味着移动互联网进入到智慧互联网时代,用户入口将有由从传统的APP,向智慧助理+API入口发展。余承东
[半导体设计/制造]
Microchip MPLAB ICD 4的处理器速度更快,RAM更大
Microchip Technology Inc.(美国微芯科技公司)日前发布MPLAB® ICD 4——Microchip的PIC®单片机和dsPIC®数字信号控制器系列产品的在线编程和调试开发工具。MPLAB ICD 4囊括了MPLAB ICD 3调试器的所有功能,在此基础上采用更快的处理器提高了速度并增大了RAM容量。 MPLAB ICD 4速度之所以能够显著提高是因为采用了一片运行在300 MHz的32位MCU。处理速度更快,还增加了2 MB的高速缓存,使得该产品速度是前一代产品的两倍。 圆形MPLAB ICD 4封装在一个耐用的黑色外壳中,顶部采用拉丝铝,醒目的LED灯带用于指示调试状态。该工具具有以下特性:
[嵌入式]
Microchip MPLAB ICD 4的<font color='red'>处理器</font>速度更快,RAM更大
一加8T参数揭秘:骁龙865 Plus 处理器/120Hz OLED 屏幕
众所周知,一加每年都会发布两款旗舰产品,分别是数字系列和 T 系列。今年下半年,一加也会推出他们的常规更新产品一加 8T。目前,这款产品的部分参数已经从外媒手中曝光。 根据外媒消息,一加 8T 将搭载一块 6.55 英寸 OLED 屏幕,拥有 120Hz 屏幕刷新率。论屏幕大小来说,它与上半年发布的一加 8 完全相同,但一加 8 采用的是 90Hz 屏幕刷新率。而一加 8T 将在这方面进一步提升,达到顶尖旗舰水平。 此外,根据最近的一加 8T 谍照可以看到,这款产品可能会采用直面屏,而非一加 8 以及一加 8 Pro 的曲面屏。不过,挖孔屏这一主要特征是不会改变的。 一加8 至于其它参数,一加 8T 将搭载四摄,
[手机便携]
ARM-Linux s3c2440 之UART分析(二)
本文系itspy原创,复制/转载请尽量标明原出处http://blog.csdn.net/yyplc/article/details/7196290,谢谢! 软件篇(linux-2.6.30.4): Linux系统的串口驱动与一般字符设备并一样,它采用层次化的架构,从而看做是一个串行系统来实现。 (1) 关注UART或其他底层串行硬件特征的底层驱动程序。 (2) 和底层驱动程序接口的TTY驱动程序。 (3) 加工用于和TTY驱动程序交换数据的线路规程。 下图描述了串行系统间的层次结构关系(s3c2440串口实现例),可以概括为:用户应用层 -- 线路规划层 -- TTY层 -- 底层驱动层 -- 物理硬件层
[单片机]
<font color='red'>ARM</font>-Linux s3c2440 之UART分析(二)
ARM单片机超声波监测预警系统电路设计
随着信息化、智能化、网络化的发展,嵌入式系统技术获得广阔的发展空间,工业控制领域也进行着一场巨大的变革,以32位高端处理器为平台的实时嵌入式软硬件技术将应用在工业控制的各个角落。嵌入控制器因其体积小、可靠性高、功能强、灵活方便等许多优点,其应用已深入到工业、农业、教育、国防、科研以及日常生活等各个领域,对各行各业的技术改造、产品更新换代、加速自动化化 进程、提高生产率等方面起到了极其重要的推动作用。 障碍物距离检测电路的设计 在本系统中超声波测距电路是由MICROCHIP的PIC16C57设计而成的,选用的超声波传感器是T/R40-16压电陶瓷传感器。在工作中,主控器PIC16C57发出信号使发射端的超声波换能器发出加以电压激
[电源管理]
<font color='red'>ARM</font>单片机超声波监测预警系统电路设计
日本富士通打造150核心超级处理器:2nm工艺
富士通的A64FX处理器曾经助力“富岳”(Fugaku)登顶全球超算第一,目前他们已开始研发下一代处理器,代号“Monaka”。 Monaka处理器和A64FX一样仍然基于Arm架构,基于最新的Armv9-A指令集,最多大约150个核心,通过3D Chiplet设计分成两个Die,并与SRAM、IO控制器等单元封装在一起。 每个核心均有SVE2矢量单元,因此能并行处理大规模矢量数据,非常适合高性能计算、人工智能,但具体宽度暂时不详。 Monaka处理器支持DDR5内存和下一代PCIe 6.0总线,也支持CXL 3.0。 功耗不详,但号称风冷就可以搞定,能效非常高。 它将采用尚未投产的台积电2nm工艺制造,预计2026年(富士通的2
[嵌入式]
凌阳携手CEVA开发便携式多媒体处理器
硅产品知识产权 (SIP) 平台解决方案和数字信号处理器 (DSP) 内核授权厂商CEVA公司宣布,凌阳多媒体股份有限公司 (Sunplus mMedia) 已获授权采用CEVA完全可编程的MM2000 便携式多媒体解决方案,为功耗敏感的应用如便携式多媒体播放器 (PMP) 等,开发低成本及高性能的系统级芯片 (SoC)。 凌阳多媒体是为数码相机、手持式游戏机、移动电话和PMP产品开发高集成度高质量IC的领导厂商。这些器件需要高功效解决方案来完成处理器密集型的多标准视频/音频处理任务。CEVA的MM2000解决方案采用单DSP引擎来支持所有视频和音频编解码处理任务,无需额外的加速器或硬件,可大幅降低凌阳多媒体针对最
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved