历史上的今天
返回首页

历史上的今天

今天是:2025年04月02日(星期三)

正在发生

2020年04月02日 | ARM各种异常返回地址的计算

2020-04-02 来源:eefocus

首先,给出ARM的三级流水线结构图,这是后面分析的基础。

这里写图片描述

上图中最左侧为指令的地址,根据三级流水线结构,当PC=0X3008是时,正在执行的的指令是地址为0X3000的这条指令。


在分别讲解各种异常之前,有一条总的原则就是:无论发生什么异常(除复位),内核总是会首先将 PC-4 放到LR寄存器中。


1.复位异常


复位异常中断处理程序不需要返回。在复位异常中断处理程序开始整个用户程序的执行,因而它不需要返回。


2.未定义指令异常


指遇到了一条没有定义的指令导致执行时无法执行。


未定义指令异常中断是由当前执行的指令自身产生的,当产生中断时,程序计数器PC的值还未更新(未更新的意思就是PC还没有加4 呢);


以上面的流水线结构为例,地址为0X3000的指令(即第一条指令)执行时产生未定义异常,这时PC = 0X3008,内核将会把PC-4即0X3004放到LR_UND寄存器中。中断执行结束之后,我们实际上要执行的就是0X3004这条指令,所以直接用MOV PC,LR


3.软件中断异常


由指令SWI引起的,程序在执行这一指令后,进入异常中断。


同样,未定义指令异常中断是由当前执行的指令自身产生的,当产生中断时,程序计数器PC的值还未更新;


具体实例与未定义指令异常相同,不再赘述。


4.预取指异常


预取指异常与下面的数据访问异常是比较难以区分的。

由程序存储器引起的中止异常叫做预取指中止异常;

由数据存储器引起的中止异常叫做数据中止异常。


虽然预取指异常在取指阶段就会被标记出来,但是一定要到执行该指令的时候才会出现异常,因为这条指令可能根本就没有机会运行。当然数据中止异常也是要到指令执行阶段才出现的。


这两者之间还有一点共同点就是,当出现异常后,要重新再执行一次这条指令,这也是与其他异常不太一样的地方。


这两者之间的重要区别就在于:预取指异常是由于指令自身引起的,所以当产生中断时,程序计数器PC的值还未更新;但是数据中止异常的产生是由ALU产生的,当产生中断时,PC的值已经更新了(比如说0X3000产生数据异常,中断产生时,PC=0X000C了已经)!!


言归正传,举例说明。地址为0X3000的指令执行时产生预取指异常,这时PC = 0X3008,内核将会把PC-4即0X3004放到LR_ABT寄存器中。中断执行结束之后,我们实际上要执行的就是0X3000这条指令,所以用 SUBS PC,LR,#4


5.数据中止异常


数据中止异常就是在执行指令时数据出现错误。


再次强调,数据访问异常中断由当前执行的指令在ALU里执行时产生,当数据访问异常中断发生时,程序计数器pc的值已经更新。


举例。地址为0X3000的指令执行时产生数据中止异常,这时PC = 0X300C,内核将会把PC-4即0X3008放到LR_ABT寄存器中。中断执行结束之后,我们实际上要执行的就是0X3000这条指令,所以用 SUBS PC,LR,#8


6.中断请求(IRQ)异常


在此不解释何为中断请求异常。

注意,产生中断请求异常时,程序计数器pc的值也已经更新!


举例。地址为0X3000的指令执行时产生数据中止异常,这时PC = 0X300C,内核将会把PC-4即0X3008放到LR_IRQ寄存器中。中断执行结束之后,我们实际上要执行的就是0X3004这条指令,所以用 SUBS PC,LR,#4


7.快速中断(FIQ)请求异常


与IRQ异常基本相同,不再赘述。


总结:

这里写图片描述

推荐阅读

史海拾趣

台湾致强(FORT)公司的发展小趣事

在追求企业发展的同时,致强科技始终不忘对环境的责任。公司积极响应环保法规要求,将环保理念融入产品研发、生产和销售的各个环节。通过采用环保材料、优化生产流程、实施节能减排等措施,致强科技有效降低了产品对环境的负面影响。此外,公司还定期评估并符合最新的环保法规要求,确保企业与消费者的价值观和环境保护目标相一致。

Eon公司的发展小趣事

随着全球对环保和可持续发展的关注日益增加,E.ON也开始加快绿色能源转型的步伐。公司加大了对可再生能源的投资力度,积极开发风电、太阳能等清洁能源项目。同时,E.ON还积极推广智能电网技术,提高能源利用效率,降低环境污染。

Electronic Transistors Corp公司的发展小趣事

在电子行业的早期,ETC公司以其独特的技术创新能力在晶体管市场上崭露头角。公司创始人带领研发团队,通过不断的实验和改进,成功研发出一种新型的MOSFET晶体管,具有更高的性能和更低的功耗。这一创新成果迅速在市场上引起轰动,ETC公司的知名度也随之提升。随着产品销量的不断增长,ETC逐渐在电子行业中确立了其领导地位。

AnalogicTech公司的发展小趣事

AnalogicTech公司成立于1997年,总部位于美国硅谷。在创立初期,公司面临资金短缺、市场竞争激烈等诸多挑战。然而,凭借创始团队对半导体技术的深刻理解和前瞻视野,AnalogicTech成功开发出一系列具有创新性的产品,逐渐在市场中站稳脚跟。

Bellnix Co Ltd公司的发展小趣事

Bellnix Co Ltd自创立之初,便以技术创新为核心竞争力。在电子元器件制造领域,公司不断投入研发,推出了一系列高性能、低成本的芯片产品。这些产品不仅在国内市场占据了一席之地,还成功打入了国际市场,赢得了众多客户的认可。随着技术的不断积累,Bellnix逐渐在行业内树立起了技术领先的形象,从而实现了公司的快速发展。

Custom LeatherCraft Manufacturing Co Inc公司的发展小趣事

在快速发展的同时,CLC也关注环保和可持续发展。他们采用环保材料和生产工艺,减少对环境的影响。同时,他们还积极推动循环利用和废物减量化措施,努力实现绿色生产。这些努力不仅提升了品牌形象,也为公司的长期发展奠定了基础。

问答坊 | AI 解惑

下一代爆炸性技术是什么?

下一代爆炸性技术是什么? 大趋势的出现都不是简单或孤立的。它们都是以能够完全改变现状的爆炸性技术为起始标志的,例如火药、飞机和微处理器。秘密在于如何提早发现潜在的爆炸性技术并预测出它们可能引领的趋势。 早在1976年,我曾是Tektronix ...…

查看全部问答>

半桥式开关电源变压器参数的计算 开关电源原理与设计(连载41)

1-8-2-5.半桥式开关电源变压器参数的计算 半桥式变压器开关电源的工作原理与推挽式变压器开关电源的工作原理是非常接近的,只是变压器的激励方式与工作电源的接入方式有点不同;因此,用于计算推挽式变压器开关电源变压器初级线圈N1绕组匝数的数 ...…

查看全部问答>

wince桌面图标和工具栏模糊,如果搞好了,我的分全部散出

wince能跑起来,但桌面图标和工具栏模糊,不知道是哪个函数设置出问题 这个地方搞了一个多月了,还没有头绪 恳请高手指导,不胜感谢…

查看全部问答>

如何在WINCE下通过串口与PC串口直接连接(支持TCP/IP和SLIP)?

最近几天看了几天的帖子,想了很多办法,要实现PC与PDA的串口通信,但遇到 很多奇怪的问题。希望高人指点一二。 1.PDA是用的WINCE 5.0版本,利用建立新连接→直接连接→串口1(38400,无流控)→网络设置(SLIP,无压缩,无IP头压缩)   PC端 ...…

查看全部问答>

求单片机源程序~~

1.        十字路口交通灯 基本要求: (1)        两交叉道路上的车交替运行,即红绿灯交替亮,每车道的通行时间为25秒; (2)        在换灯前,提示缓行,黄灯先亮5秒,才能 ...…

查看全部问答>

WM5.0 超级问题

各位兄弟姐妹: 最近小弟买了一个多普达得PPC 上面安装的是WM5.0的系统. 我想搭建一个WM5.0的开发平台 学习一下怎么样在上面开发程序 .我应该怎么样做? 还有那里有相应的开发资料 PPC的 SDK 我这里已经下载好了... 谢谢…

查看全部问答>

刚刚收到的【艳照门】,还是凉的呢,快来看啊!

replyreload += \',\' + 1221089;正所谓凉的,是因为大冷天刚从外边取回来的啊 速尔快递刚刚送来的TI送的各种资料还有一个4G的U盘,速速上照跟大家显摆显摆,秀一秀! Timson,如果您要查看本帖隐藏内容请回复 [ 本帖最后由 jjkwz 于 2011-11-28 ...…

查看全部问答>

Unitech MS337H二维医疗扫描器

诚昱(条形码)自动化技术有限公司 / 2012-03-16 MS337H是专门针对医疗院所应用环境设计的高性能扫描器,采用适应医疗应用环境的白色、蓝色两色配搭设计;抗菌材质可有效防止病毒细菌的入侵,及在使用过程中受漂白剂、酒精、消毒剂、生理盐水 ...…

查看全部问答>

为可调电源减负

使用图中的电路,可以大幅度地减低可调电源调整元件的功耗!它可以自动跟踪输出电压变化,始终让调整元件两端的压降保持在2.5-3V左右! …

查看全部问答>