历史上的今天
今天是:2025年04月03日(星期四)
2020年04月03日 | ARM异常返回修正值
2020-04-03 来源:eefocus
ARM异常返回修正值因异常类型不同而不同,这主要取决于两个方面:
a、异常处理完后,返回的地址是异常产生时执行指令的地址还是执行指令下一条指令的地址;
b、处理异常时,PC值是否已更新
1、Reset异常
复位异常不需要返回,所以在这不讨论
2、SWI、未定义指令异常
a、SWI、未定义指令异常是由执行该指令时产生的异常,所以,当异常发生时PC值并未更新。
b、链接寄存器LR保存取指的前一条指令,即LR=PC-4,此时PC-4指向执行指令的下1条指令
c、返回时,SWI、未定义指令均已执行完,应返回执行指令的下1条指令,即PC=LR
3、IRQ、FIQ异常
a、处理器处理完当前执行指令后,再去查询IRQ、FIQ引脚是否有中断信号。如有中断信号且允许中断,则处理IRQ、FIQ中断异常。当处理处理IRQ、FIQ中断异常,PC值已更新,即PC指向当前执行指令的后3条指令。
b、链接寄存器LR保存取指的前一条指令,即LR=PC-4,此时PC-4指向执行指令的下2条指令
c、返回时,处理中断前的当前执行指令已被执行完,应返回执行指令的下1条指令,即PC=LR-4
4、预取指异常
a、预取指异常是在取值时出错,该指令标记为有问题指令,并在执行该指令时产生的异常。异常发生时,PC值未更新
b、链接寄存器LR保存取指的前一条指令,即LR=PC-4,此时PC-4指向执行指令的下1条指令
c、返回时,由于中断前的当前执行指令并未被正确执行需重新执行一次,所以应返回执行指令,即PC=LR-4
5、数据访问异常
a、数据访问异常发生在当前指令已执行当获取数据出错,此时PC已更新,即PC指向当前执行指令的后3条指令。
b、链接寄存器LR保存取指的前一条指令,即LR=PC-4,此时PC-4指向执行指令的下2条指令。
c、返回时,由于中断前的当前执行指令并未被正确执行需重新执行一次,所以应返回执行指令,即PC=LR-8
上一篇:ARM程序异常返回操作
下一篇:ARM体系结构与编程-2
史海拾趣
|
各位好 想请问要是我已经有个充电器 电池为手机3.6V 1200mAh锂电池 想要做个可以显示电池剩余电量的功能 用四颗LED显示 按一下亮4颗表示充满电 依电量变少LED亮灯就递减(如附件) 已经知道可以用LM324 比较电路可以完成 但毕竟是10几年前在学校 ...… 查看全部问答> |
|
关于Wince拼音输入法的怪问题(要求置顶!) 这个拼音输入法问题,我在网上找了很久很久,发现好多网友都遇到了相同的问题,可是每个贴子问题都没解决就不了了之,只有一个提问的朋友解决了,解决完之后还没影了,也没有具体说明解决问题的办法。 ...… 查看全部问答> |
|
想买一种嵌入式开发板或成品,能完成下列的简单功能,内详。恳请各位达人给个建议。 我是软件工程师,对硬件不太熟,现在项目需要一种嵌入式的小型设备,需要完成的功能和要求如下: 1。TCP/IP网络通信,最好能支持浏览器 2。必须有VGA,或CVBS的电视接口。 3。最好能有音频输出 4。应用软件由我们自己开发,所以要有比较成熟的 ...… 查看全部问答> |
|
本帖最后由 dontium 于 2015-1-23 13:19 编辑 对普通电源变压器的选用和检测不大熟悉,虽然网上也有很多资料,但看起来都很凌乱,而且基本上都是繁琐而且没有测试方法,想知道各位在实际应用中是怎么做得。 1.功 ...… 查看全部问答> |
|
最近入手了块LM4F120的板子,今天呆坐一下午调了个USB键盘的程序,发上来大家分享一下。 代码都很简单,基本都是官方代码的堆砌,我就不解释了。 使用,插入LM4F120开发板侧面usb口(再次吐槽,哪个线很难插呀很难插....),上电,自动识别usb设备 ...… 查看全部问答> |




