为你解颇ARM异常中断返回的几种情况

发布者:风清扬yx最新更新时间:2019-11-20 来源: 51hei关键字:ARM  异常中断  返回 手机看文章 扫描二维码
随时随地手机看文章

异常中断返回的几种情况:


重要基础知识:R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”

的指令或正在“译码”的指令。一般来说,人们习惯性约定将“正在执行的指令作为参考

点”,称之为当前第一条指令,因此 PC总是指向第三条指令。当 ARM 状态时,每条指令

为 4 字节长,所以 PC 始终指向该指令地址加 8 字节的地址,即:PC 值=当前程序执行

位置+8;


而 ADS 中的 pc,是为了调试看着方便而修改过的,它指向的是正在执行的指令,即

“真正 pc-8”!


1.SWI 和和未定义指令异常中断的返回:

指令地址

A         PC-8  当前指令为 SWI 或未定义指令 此时发生中断.PC 的值还没有更新.

A+4       PC-4  中断时处理器将 PC-4 保存到 LR。       ;lr!

A+8       PC

返回时,从发生中断的指令 A(PC-8)的下一条指令 A+4(PC-4)处开始执行,所以直接把 LR

的值赋给 PC 就行了,具体指令为 MOV PC,LR  (PC=A+4=LR)

白话解释:对于 SWI 和未定义指令异常: 发生异常时 pc 没有更新,根据 ARM 的三级

流水线原理,pc 没有更新,仍然等于(A+8); lr = pc – 4(这时处理器决定的,无法

更改!)即 A+4。

由于这类异常返回后应执行下一条指令(A+4),所以返回时,pc = lr 即可。


2.IRQ 和 FIQ 异常中断处理的返回:

指令地址  对应于 PC

A         PC-8      执行此指令完成后(!)查询 IRQ 及 FIQ,如果有中断请求则产生中

断.

A+4       PC-4

A+8       PC         ;lr!

(此时 PC 的值已经更新,指向 A+12.将当前 PC-4,即 A+8 )。

保存到 LR.返回时,要接着执行 A+4(LR-4)处的指令,所以返回指令为

SUBS PC, LR,#4(PC=A+4=LR-4)

白话解释:对于普中断和快中断异常,中断必须在一条指令执行完以后被检测到,如正在

执行指令甲时发生了中断,不等指令甲执行完是不会处理该中断的,发生异常时 pc 已经

更新(A+12); lr = pc – 4(这时处理器决定的,无法更改!)即 A+8 返回后,应执行被

中断而没有执行的指令(上面的 A+4),所以返回时,pc = lr-4


3,指令预取中止异常中断处理的返回:

指令地址

A     PC-8     执行本指令时发生中断,  

A+4   PC-4     处理器将 A+4(PC-4)保存到 LR.    ;lr!

A+8   PC

返回时,发生指令预取中止的指令 A(PC-8)处重新执行,所以返回指令为

SUBS PC, LR,#4(PC=A=LR-4)

白话解释:对于预取指令中止异常,发生预取指令异常时,是在执行时发生的异常,pc

未更新,即 pc = A+8;lr = pc – 4(这时处理器决定的,无法更改!)即 A+4 。

由于这类异常返回后应重新执行异常的那个指令(A),所以返回时,pc = lr-4


4,数据访问中止异常中断处理的返回:

指令地址

A          PC-8    本指令访问有问题的数据,产生中断时,PC 的值已经更新   

A+4        PC-4    中断发生时 PC=A+12,处理器将 A+8(PC-4)保存到 LR.

A+8        PC        ;lr!

返回时,要返回到 A 处继续执行,所以指令为 SUBS PC,  LR,#8.(PC=A=LR-8)

白话解释:对于数据访问中止异常,发生数据访问中止异常时,是在执行时访问数据错误

导致的异常,pc 已经更新,即 pc = A+12

lr = pc – 4(这时处理器决定的,无法更改!)即 A+8 。

由于这类异常返回后应重新执行异常的那个指令(A),所以返回时,pc = lr-8

深圳嵌入式ARM、linux专业实训,QQ754634522

小节:

Ø 引起 PC 更新的原因一种是数据中止,还有就是中断了.

Ø 中断必须是在一条指令执行完毕后才能被检测到,所以它中断的只是还未执行的那条

指令(pc - 8),所以 pc = lr – 4;

Ø 与中断相同,SWI 和未定义指令异常也是返回到下一条指令(pc - 4),只是他们在执行

时,PC 的值并没有更新,所以 pc = lr;

Ø 预取指令中止异常,也没有发生 pc  更新,但它还得重新执行发生异常的那条指令,

所以 pc = lr – 4;

Ø 数据访问中止异常,发生了 pc  更新,并且它也需要重新执行发生异常的那条指令,

所以 pc = lr – 8。

关键字:ARM  异常中断  返回 引用地址:为你解颇ARM异常中断返回的几种情况

上一篇:Linux学习方法分享
下一篇:ARM程序编写笔记

推荐阅读最新更新时间:2024-11-04 16:01

选择ARM处理器,ARM7还是Cortex-M3
要使用低成本的 32位处理器,开发人员面临两种选择,基于Cortex-M3内核或者ARM7TDMI内核的处理器。如何做出选择?选择标准又是什么?本文主要介绍了ARM Cortex-M3内核微控制器区别于ARM7的一些特点,帮助您快速选择。 1.ARM实现方法 ARM Cortex-M3是一种基于ARM7v架构的最新ARM嵌入式内核,它采用哈佛结构,使用分离的指令和数据总线(冯诺伊曼结构下,数据和指令共用一条总线)。从本质上来说,哈佛结构在物理上更为复杂,但是处理速度明显加快。根据摩尔定理,复杂性并不是一件非常重要的事,而吞吐量的增加却极具价值。 ARM公司对Cortex-M3的定位是:向专业嵌入式市场提供低成本、低功耗的芯片。在
[单片机]
Xilinx、Arm、Cadence和台积公司构建全球首款7纳米CCIX测试芯片
集微网消息,赛灵思、Arm、Cadence和台积公司今日宣布一项合作,将共同构建首款基于台积7纳米FinFET工艺的支持芯片间缓存一致性(CCIX)的加速器测试芯片,并计划在2018年交付。这一测试芯片旨在从硅芯片层面证明CCIX能够支持多核高性能Arm CPU和FPGA加速器实现一致性互联。 出于功耗及空间方面的考虑,在数据中心内对应用进行加速的需求日益增长,诸如大数据分析、搜索、机器学习、4G/5G无线、内存内数据处理、视频分析及网络处理等应用,都已受益于可在多个系统部件中无缝移动数据的加速器引擎。CCIX将支持部件在无需复杂编程环境的情况下,获取并处理位于任何地方的数据。 CCIX将利用现有的服务器互连基础架构,实现对共享内
[手机便携]
基于ARM9和嵌入式Linux的电力负荷终端系统设计
随着客户对电能质量要求的逐步提高,传统的电力网络难以满足发展要求。为此,提出发展“全覆盖、全采集、全预付费”智能电网的设想,以实现传统电网的升级。电力用户用电信息采集系统——智能电网管理终端,是一种集计算机、通信、用电及计量技术于一体的智能抄表设备,它具有抄收速度快、计算精度高、抄表实时性好、集成度高、可靠性好、结构简洁、安装使用方便等突出的优点,可直接与营业计算机联网,对电力用户进行数据采集计算及控制管理。电能计量自动抄表系统实现了从电能数据采集、传输到处理的自动化,采用自动抄表可以缓解抄表人员的劳动强度,降低人为因素造成的抄表误差,并能迅速统计低压时线损,降低用电成本,同时对加强用电管理,防止国家电力资源流失,对推进电能管理现代
[单片机]
基于<font color='red'>ARM</font>9和嵌入式Linux的电力负荷终端系统设计
ARM开发(5)基于STM32的UART串口通信实验
一 串口通信原理: 1.1 本实验实现串口助手发送数据然后回送在串口助手呈现出来。 1.2 实验思路:看懂电路图,理解uart串口通信原理。 1.3 开发环境 : MDK5 库函数版本开发 JLINK仿真 二 实验步骤: 2.1 uart.h代码: #ifndef __USART_H #define __USART_H #include stdio.h #include sys.h #define USART_REC_LEN 200 //定义最大接收字节数 200 #define EN_USART1_RX 1 //使能(1)/禁止(0)串口1接收 extern u16 USART_TX_B
[单片机]
基于ARM LPC2210的以太网RTL8019AS驱动系统设计
Author :tiger-john WebSite :blog.csdn.net/tigerjb Email : jibo.tiger@gmail.com 开发环境 硬件环境:LPC2200 操作系统:UC/OS-II操作系统 编译环境:ADS1.2 Update-Time : 2011年2月28日星期四 Tiger声明:本人鄙视直接复制本人文章而不加出处的个人或团体, 但不排斥别人转载tiger-john的文章,只是请您注明出处并和本人 联系或留言给我。3Q --------------------------
[单片机]
基于<font color='red'>ARM</font> LPC2210的以太网RTL8019AS驱动系统设计
LG再获ARM授权 手机业务欲借芯片扭亏为盈
        近日,LG电子--韩国的手机、电视、家庭设备以及其他电子消费品生产商--已经获得了ARM授权,开始生产这种架构的芯片。     LG获得授权的架构师ARM Cortex-A9和更新的ARM Cortex-A15,LG未来还将获得ARM Mail CPU的授权,这种芯片目前大多用于电视机,但很少于智能手机。     早在1995年,LG就开始向ARM授权,近日的这次协议,是这家公司为了确保在智能手机、电视机和其他设备持有的领先地位。随着越来越多的移动设备出现、以及该芯片对耗能的严格要求,ARM架构的芯片展现了极大的优势。因此,这对LG 来说可能是利好的信息,去年该公司的手机业务亏损,今年2月,公司表示,计划在
[手机便携]
ARM remap与重定位摘抄
(一)关于ARM处理器Remap的理解 0.什么是Remap 我的理解是:在ROM从0x0用几句指令引导系统之后,把RAM映射到0x0就是Remap。 1.Remap的作用 当ARM处理器上电或者Reset之后,处理器从0x0取指。因此,必须保证系统上电时,0x0处有指令可以执行。所以,上电的时候,0x0地址处必定是ROM或者Flash(NOR)。 但是,为了加快启动的速度,也方便可以更改异常向量表,加快中断响应速度,往往把异常向量表映射到更快、更宽(32bit/16bit)的RAM中。但是异常向量表的开始地址是由ARM架构决定的,必须位于0x0处,因此,必须把RAM映射到0x0。 2.Remap的配置 Rem
[单片机]
ARM发布业界最广泛的40纳米G物理IP平台
ARM公司近日宣布,开始向台积电的40纳米G制造工艺提供业界最完善的IP平台。这一ARM® 最新的、已通过流片验证的物理IP能够满足性能驱动消费产品的高成本效率开发;这些产品要求在不提高功耗的前提下提供先进的功能。这一平台是为那些期望使用40纳米工艺进行设计的开发者设计的,能够促进更高水平的技术创新,同时保持性能驱动消费产品的功耗水平。这些消费产品包括:磁盘驱动器、机顶盒、移动计算设备、网络应用、高清电视以及图形处理器。 通过多通道的逻辑库,ARM平台提供了非常高的灵活性。这些库包括高性能和高密度标准单元库,以及电源管理套件和ECO套件库扩展;后者主要用于解决亚微米设计中的漏电问题。所有的多通道长度库(length
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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