EDN首页   博客首页

日志档案

发表于 2006-10-14 21:18:02

18

标签: 无标签

ARM学习笔记

1寄存器R16用作CPSR(Current Program Status Register,当前程序状态寄存器)CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。

每一种运行模式下又都有一个专用的物理状态寄存器,称为SPSRSaved Program Status Register,备份的程序状态寄存器),当异常发生时,SPSR用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR

由于用户模式和系统模式不属于异常模式,他们没有SPSR,当在这两种模式下访问SPSR,结果是未知的

    当中断产生的时候,把CPSR保存在SPSR是自动完成的。

 

对异常的响应

当一个异常出现以后,ARM微处理器会执行以下几步操作:

1、将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。若异常是从ARM状态进入,LR寄存器中保存的是下一条指令的地址(当前PC4PC8,与异常的类型有关);若异常是从Thumb状态进入,则在LR寄存器中保存当前PC的偏移量,这样,异常处理程序就不需要确定异常是从何种状态进入的。例如:在软件中断异常SWI,指令MOV PCR14_svc总是返回到下一条指令,不管SWI是在ARM状态执行,还是在Thumb状态执行。

2、将CPSR复制到相应的SPSR中。

3、根据异常类型,强制设置CPSR的运行模式位。

4、强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。

还可以设置中断禁止位,以禁止中断发生。

如果异常发生时,处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态

 

从异常返回

异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:

1、将连接寄存器LR的值减去相应的偏移量后送到PC中。

2、将SPSR复制回CPSR中。

3、若在进入异常处理时设置了中断禁止位,要在此清除。

可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。

系统分类: ARM   |   用户分类: 无分类   |   来源: 无分类   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(5828)    回复(8)  

投一票您将和博主都有获奖机会!

最新评论

  • xlf512

    2006-10-18 23:12:19

    sgh看到留言后,请加我QQ ,qq号 152911677。有事商量

  • cocappjj

    2006-10-18 11:31:37

    你好!

     
    首先恭喜你的博客在我们的博客大赛中间获奖。我们需要以下信息,才能把奖金汇给你:
     
    姓名:
    身份证号码:
    招商银行银行卡(一定要要招行的)的卡号:
     
    请速提供,谢谢!
     
    email:jeanjing@idg-rbi.com.cn
     

  • wacko

    2006-10-18 12:22:18

    晕,不会是骗人的吧?

  • cocappjj

    2006-10-31 15:40:10

    那要怎么联系人啊。一看又是不认识我的,嘻嘻

  • jakepain

    2006-10-25 14:34:34

    肯定是骗人的!

    哪有这样联系人的!

  • cocappjj

    2006-10-20 17:48:07

    hehe,wacko一看就是不认识我~~~

  • sdf

    2006-11-16 10:50:45

    妈的,傻b想

  • ARM

    2007-9-9 18:35:12

    有比较详细的ARM数据手册吗?我找的大多都够详细.控制位的作用不全.