ARM异常和中断

发布者:彩虹微笑最新更新时间:2020-04-23 来源: eefocus关键字:ARM  异常  中断 手机看文章 扫描二维码
随时随地手机看文章

异常和中断

异常就是在程序运行过程中(USER mode),出现了一些异常情况,而中断是异常的一种情况.


模式和异常的对应关系


需要特别注意的就是,如果在程序执行过程中需要进行系统调用(程序正常运行在USER模式,而内核运行在SVC模式,user模式无法直接运行SVC模式的指令,因此需要通过异常的方式进入到特权模式. 故这里就通过SWI实现.),即 SWI软中断–>SVC.


异常处理

异常向量表

存储在内存固定区域,表中每一个表项都对应一个异常类型,存了一个跳转指令:LDR PC, handle(将需要调用的函数地址放到PC中,即可跳转到指定的地址执行)


异常优先级

RESET

Data Abort(数据异常)

FIQ

IRQ

Prefetch Abort(指令预取异常)

SWI(软件中断)

Undefined Instruction(未定义指令)

异常处理流程

CPU(进入异常)

拷贝 进入异常前的模式的CPSR —-> SPSR_< mode>(对应的异常模式的SPSR,用以退出异常时恢复到当前现场);

在异常处理中,再重新设置异常模式的CPSR:

改变处理器状态进入ARM状态;

改变处理器模式进入相应的异常模式;

设置中断禁止,禁止相应中断;

(以上操作后,进入到SVC模式)

保存当前模式(user)的返回地址到异常模式中的LR_< mode>(LR_SWI);

返回地址: 这个返回地址指的是,异常到达时,正在执行的指令的下一条指令的地址;

这里cpu进入异常处理时,默认操作为:lr= pc-4(结合三级流水线)

因此,针对不同的异常在恢复pc时操作是不一样的:

SWI/Undef: 直接取回lr中的指令地址即可, 即 mov pc,lr

IRQ/FIQ/Prefetch Abort: 在取回时,还需手动-4, 即 subs pc, lr,#4

Data Abort: 重新执行当前指令,因此手动-8, 即 subs pc, lr ,#8

设置PC为相应的异常向量;

程序员(退出异常,恢复)

从SPSR_< mode> 恢复 CPSR;(切换会原来的状态)

从LR_< mode> 恢复 PC;(让PC指向LR_SWI)

note:

这些操作只能在arm态下才能执行.


中断处理

ARM有两级中断FIQ,IRQ.

FIQ之所以快的原因:


优先级非常高

FIQ禁止产生IRQ

设计时,将FIQ放在异常向量表的末尾,因此可以直接将FIQ的异常处理函数紧跟放在其后,无需跳转;


独有的私有寄存器,因此无需在中断前保护其他寄存器状态.

关键字:ARM  异常  中断 引用地址:ARM异常和中断

上一篇:ARM 之六 Cortex-M 内核中断/异常系统、中断优先级/嵌套 详解
下一篇:windowsCE异常和中断服务程序初探

推荐阅读最新更新时间:2024-11-08 10:52

Broadcom取得ARM Cortex M3处理器授权以开发其下一代无线应用
ARM Cortex-M3处理器降低Broadcom未来蓝牙SoC设计方案的功耗与尺寸 ARM于日前宣布,Broadcom已取得其ARM Cortex-M3处理器之授权,并将整合该技术至新一代无线与网络解决方案。此款多用途(multi-use)授权协议,将进一步协助Broadcom开发其先进的蓝牙产品。Broadcom在取得ARM Cortex-M3处理器授权后,将用来支持高阶无线SoC设计,以开发出更小、更低功耗,以及成本更低廉的平台,并针对各种新兴蓝牙应用与产品的特殊需求进行改良。 Broadcom事业群副总裁暨无线连结事业群总经理Robert A. Rango表示:“ARM Cortex-M3处理器优异的程序代码密度,不
[焦点新闻]
基于ARM+FPGA的高速同步数据采集方案
◆应用背景 众所周知,大多数的勘探、观测工作都是在严苛的环境中进行的,对数据的准确性、实时性都有着较高的要求,并且大多情况下要求多参数同步测量。北京恒颐针对勘探、测控等行业的特点,推出了基于ARM+FPGA的低功耗、高速率、高精度、多通道同步数据采集方案,可以通过监测者的要求完成多通道数据的同步采集并实现实时的网络传输。 ◆应用场合 物探分析领域   天然气、石油等地下勘探领域   观测技术领域(地震波、频谱分析)   电力调度系统 ◆系统架构 恒颐高速同步数据采集方案,功能特点如下:   1)通过系统接口直接与采集终端通讯,完成工业现场的多通道模拟量、开关量的数据采集与A/D转换,实现对数据采集终端的
[单片机]
用GNU工具开发基于ARM的嵌入式系统
摘要:介绍如何利用GNU的工具开发基于ARM的嵌入式系统,以及使用编译器、连接器和调试工具的具体方法,为广大嵌入式系统开发人员提供一种低成本的开发手段。 关键词:ARM GNU MC928MX1 gcc gdb gdbserver 当前,ARM公司的32位RISC处理器,以其内核耗电少、成本低、功能强、特有16/32位双指令集,已成为移动通信、手持计算、多媒体数字消费等嵌入式解决方案的RISC标准,市场占有率超过了75 %。多家公司都推出了自己的基于ARM内核的处理器产品,越来越多的开发人员开始了针对ARM平台的开发。通常开发人员需要购买芯片厂商或第三方提供的开发板,还需要购买开发软件,如C编译器或者集成了实时操作系统的开
[嵌入式]
英特尔明年中 回击ARM阵营
    处理器大厂英特尔宣布采用新一代3D晶体管Tri-Gate架构的22纳米制程,已可以生产智能型手机及平板计算机使用的系统单芯片(SoC),预计明年中旬开始以该制程量产Atom处理器,并希望藉此回攻由ARM阵营芯片供应商高通(Qualcomm)、辉达(NVIDIA)等所掌控的行动装置核心应用处理器市场。      智能型手机及平板计算机的销售畅旺,但内建芯片有逾9成是采用ARM架构的应用处理器,英特尔虽然推出Atom处理器应战,但目前仅有摩托罗拉、联想等少数手机厂采用,一直无法有效拓展市场占有率。      由于英特尔Atom处理器的功耗过高问题,是手机厂不想采用其芯片的主要原因,所以英特尔利用制程微缩来大幅降低功耗,昨日在旧金
[手机便携]
基于ARM的给煤机控制系统的设计
引言 本文设计的给煤机控制系统主要用于火力发电厂的磨煤制粉系统中,它与磨煤机设备配合,承担向系统定量均匀供煤的任务,是火力发电厂重要的辅助设备。这种系统同样可以应用于冶金、化工等部门的散状物料的计量输送系统,对于节约能源和提高经济效益及保证安全方面有重大意义。 图1 自跟踪电源电路 图2 4~20mA电流产生电路 控制系统硬件的设计 该控制系统主要包括称重传感器信号的检测、数字式速度传感器信号的检测、键盘输入信号的扫描、液晶显示屏的显示,以及一些报警装置等。由于本设计对主控制器的要求较高,所以最终采用了Samsung公司的基于ARM7TDMI-S内核的低功耗ARM处理器S3C44B0x作为系统的主控制器。
[单片机]
基于<font color='red'>ARM</font>的给煤机控制系统的设计
GNU ARM汇编--(十五)linux下的printascii
在前面对很多s3c2440的功能模块进行学习后,已经具备了将这些模块综合起来的条件,基于此,将前面的代码综合成一个简单的bootloader.自己写的bootloader在引导kernel的时候,串口输出只有Uncompressing Linux...和done, booting the kernel。串口有这个输出,说明kernel被正确引导了,但是串口有问题。 这篇blog只是分析解决这个问题的第一步: 既然 Uncompressing Linux... 这句打印是kernel代码中的,那kernel的其他打印怎么没有? 在archarmootcompressed目录下的misc.c中,上面的
[单片机]
STM8S---TIM2产生PWM与TIM1定时器周期中断的时钟问题
1 问题   在下面的测试程序中,如果将Init_CLK()函数中的 CLK_CKDIVR |= 0x08;去掉’|‘,则TIM1的功能实现跟预设定相同(10ms中断一次),但是TIM2的PWM频率就变高了;如果加上,则TIM2的功能实现跟预设定相同(产生1Hz的PWM),但是TIM1的周期就变长了;   尝试了很多测试,均无效(买的开发板和另一块gs自画板测试也都一样)。 2 尝试   因为STM8S默认使用内部16M高速RC振荡器,且8分频,则系统启动主时钟为2M。即CLK_CKDIVR = 0X18;,如果再去赋值CLK_CKDIVR |= 0X08; 则主时钟还是不变即0X18,但是如果赋值为CLK_CKDIVR = 0
[单片机]
【GD32 MCU 入门教程】GD32 MCU 常见外设介绍(4)EXTI 中断介绍
EXTI(中断/事件控制器)包含多个相互独立的边沿检测电路并且能够向处理器内核产生中断请求或唤醒事件。 EXTI 有三种触发类型:上升沿触发、下降沿触发和任意沿触发。 EXTI中的每一个边沿检测电路都可以独立配置和屏蔽。 4.1.GD32 EXTI 外设原理简介 GD32 EXTI 主要特性(以 GD32F30x 为例) ◼ 高效的中断处理; ◼ 支持异常抢占和咬尾中断; ◼ 将系统从省电模式唤醒; ◼ 3 种触发类型:上升沿触发,下降沿触发和任意沿触发; ◼ 软件中断或事件触发; ◼ 可配置的触发源; ◼ Cortex-M4系统异常; ◼ 多达68种可屏蔽的外设中断; ◼ 4位中断优先级配置位,可配置16个中断优先级; ◼ EX
[单片机]
【GD32 MCU 入门教程】GD32 MCU 常见外设介绍(4)EXTI <font color='red'>中断</font>介绍
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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