打印
[其他ST产品]

ARM处理器异常返回地址

[复制链接]
883|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
powerantone|  楼主 | 2023-11-28 11:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在ARM处理器中一条指令的执行分为取指、译码、执行三个阶段,由于指令流水线的存在造成当前执行的指令的地址是PC-8(ARM指令集),那么当前执行指令的下一条指令的地址应该是PC-4,所以在异常产生时处理器会将PC-4的值保存到对应模式的LR寄存器中,但是该返回地址是否能够被使用还要看具体产生的异常的种类而定。


FIQ与RIQ异常:

FIQ与RIQ异常返回处理是一样的,当处理器执行完当前指令后才去查询中断且查看是否允许中断,如果处理器产生了中断,这时PC的值已经更新,即PC指向了当前指令后第三条指令的位置(被中断指令地址加12),产生FIQ与RIQ异常后处理器将PC-4的值保存到了对应模式下的LR,而它指向的是当前被中断指令的后面的第二条指令,因此在返回时我们需要人为的将LR中保存的值自减4以得到正确的返回地址。

预取指中止异常:

在指令预取时如果地址是非法的,该指令就被标记为有问题的指令,流水线上该指令之前的指令继续执行,当执行被标记为有问题的指令的时候,处理器就会产生异常。产生该异常最终返回时需要返回到被标记的指令处重新读取并执行该指令,因此异常返回时需要返回到该指令处而不是该指令的下一条指令。所以在中断返回时我们需要人为的对LR中保存的值自减4。

指令未定义异常:

指令未定义异常由当前正在执行的指令产生,即产生异常时PC的值还没有更新,PC的值指向当前指令后面第二条指令,产生异常后LR中保存的指令是当前指令的下一条指令的地址,所以异常返回时直接把LR的值给PC即可不许人为的去修正返回地址。

软中断异常:

软中断异常与指令未定义异常一样,也是当前指令在执行过程中就产生了异常,所以LR中保存的返回地址是当前软中断指令的下一条指令的地址,不需要人为的去修正,返回时直接将LR的值赋给PC即可。

数据中止异常:

产生该异常的时候程序要返回到有问题的指令处重新访问该数据,因此应该返回到产生异常的指令处而不是产生异常指令的下一条指令处。当异常产生时PC的值已经更新,所以PC指向的是异常产生指令的后面的第三条指令,而LR中保存的是PC-4的值即异常产生指令的后面的第二条指令的地址。所以在返回时我们需人为的对LR中的值进行自减8的处理。以保证异常正确的返回。

上述每一种异常发生时,返回地址都要根据具体的异常类型进行重新修正。

使用特权

评论回复
沙发
dongnanxibei| | 2023-11-29 16:01 | 只看该作者
很多库函数有异常处理机制。

使用特权

评论回复
板凳
小夏天的大西瓜| | 2023-11-29 22:45 | 只看该作者
MCU内部异常处理机制确实非常重要

使用特权

评论回复
地板
Undshing| | 2023-11-30 16:46 | 只看该作者
异常机制有什么用啊

使用特权

评论回复
5
帛灿灿| | 2024-8-16 08:27 | 只看该作者

ESD静电保护器基本上都是通过静电进行吸收和耗散

使用特权

评论回复
6
Bblythe| | 2024-8-16 09:30 | 只看该作者

这类型灌封胶一般分为A、B双组份在进行1:1的配比后再进行灌封的操作

使用特权

评论回复
7
周半梅| | 2024-8-16 11:26 | 只看该作者

同时把异常高压箝制在一个安全水平之内

使用特权

评论回复
8
Pulitzer| | 2024-8-16 12:29 | 只看该作者

从而抑制电路的振荡。

使用特权

评论回复
9
童雨竹| | 2024-8-16 14:25 | 只看该作者

当电路出现异常过压并达到其击穿电压时

使用特权

评论回复
10
Wordsworth| | 2024-8-16 15:28 | 只看该作者

例如下图中在SPI信号线上串联电阻就是为了改善匹配情况

使用特权

评论回复
11
Clyde011| | 2024-8-16 16:31 | 只看该作者

对于环氧树脂而言,一般把导热系数为0.5W/M·K的导热性能已经被定义为高导热

使用特权

评论回复
12
公羊子丹| | 2024-8-16 17:24 | 只看该作者

即原/副边交错通断。

使用特权

评论回复
13
万图| | 2024-8-16 18:27 | 只看该作者

般只要关注值、精度、额度功率

使用特权

评论回复
14
Uriah| | 2024-8-16 19:30 | 只看该作者

会占用PCB的空间,成本也会更高。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

560

主题

2434

帖子

4

粉丝