这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 44b0进入异常的问题

共2条 1/1 1 跳转至

44b0进入异常的问题

菜鸟
2007-04-08 05:34:29     打赏

如果异常发生时,处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态。
ARM微处理器对异常的响应过程用伪码可以描述为:
R14_ = Return Link
SPSR_= CPSR
CPSR[4:0] = Exception Mode Number
CPSR[5] = 0 ;当运行于 ARM 工作状态时
If == Reset or FIQ then;当响应 FIQ 异常时,禁止新的 FIQ 异常
CPSR[6] = 1
PSR[7] = 1
PC = Exception Vector Address

异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:
将连接寄存器LR的值减去相应的偏移量后送到PC中。
将SPSR复制回CPSR中。
若在进入异常处理时设置了中断禁止位,要在此清除。

--------------------------------------------------------------------------------

以上是我看到的关于进入异常地描述。这些工作是处理器自动完成的还是要自己写代码啊,因为在进入IRQ的时候根本没看到这样的代码,直接就去0x18执行了啊,是不是处理器自己做完了这些工作,然后把PC强行设定为0x18啊。




关键词: 进入     异常     问题    

菜鸟
2007-04-09 03:36:00     打赏
2楼

这些是处理器自动会做的

=============================

处理器自动切换到ARM状态。
R14_ = Return Link
SPSR_= CPSR
CPSR[4:0] = Exception Mode Number
CPSR[5] = 0 ;当运行于 ARM 工作状态时
If == Reset or FIQ then;当响应 FIQ 异常时,禁止新的 FIQ 异常
CPSR[6] = 1
PSR[7] = 1
PC = Exception Vector Address

===============================

所以你自己要保存现场,查询中断状态,再跳入相应的处理程序。 如果你需要中断嵌套,那么会有一套特定的,复杂的流程,请一定查询相关资料,按例程写。

当从中断返回时,

=================

将连接寄存器LR的值减去相应的偏移量后送到PC中。
将SPSR复制回CPSR中。
若在进入异常处理时设置了中断禁止位,要在此清除。

===================

都需要你自己写代码来完成,别忘了恢复现场。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]