嵌入式系统 第二章

堆栈指针—R13/sp
这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复。

5.写出ARM处理器异常中断的类型
ARM中有5种异常模式,有7种中断源。这7种中断源中有些中断是我们希望发生的,但有些中断是我们不希望发生的。
我们希望发生的中断:
软中断:属于svc模式,通过SWI指令便可以产生软中断,进入到svc模式。
irq中断:属于irq模式,当产生普通的外部中断时,处理器便进入到IRQ模式。
fiq中断:属于fiq模式,当产生高优先级外部中断时,处理器便进入到FIQ模式。
我们不希望发生的中断:
复位:属于svc模式,当系统上电时便会产生复位中断,系统进入到svc模式。复位中断不需要中断返回。
取指中止中断:属于abt模式,当预取指发生错误时,便产生取指中止中断,进入到abt模式。
数据中止中断:属于abt模式,当访问数据存储器时,便产生数据中止中断,进入到abt模式。
未定义指令中断:属于und模式,当执行到一条未定义指令时,便产生未定义指令中断,系统进入到und模式。

6.发生异常中断时ARM处理器如何响应?
1.CPSR->spsr_mode
2.设置当前状态寄存器CPSR的值
设置CPSR的M0-M4的5个位,进入相应工作模式。同时也可以设置F,I,T来禁止允许相应中断,例:设置I=0禁止IRQ中断;
设置F=1进入复位模式或者FIQ模式以禁止FIQ中断。
3.将引起异常指令的下一条地址(断点地址)保存到新的异常工作模式的LR(R14_mode,程序链接寄存器)中,
使得异常处理程序执行完后能正确返回原来的程序处继续执行。
例如异常中断发生,R13_mode存放堆栈指针,R14_mode存放断点地址。
4.给程序计数器PC强制赋值,转入表1所示的向量地址,以便执行相应的处理程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值