ARM中断深入分析几点

Posted zhihui-3669

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ARM中断深入分析几点相关的知识,希望对你有一定的参考价值。

ARM中断深入分析几点

1.程序发生中断后,是如何跳转到中断程序里面的?

2.执行完中断后,如何返回到原来被打断的地方接着执行呢?

3.ARM处理器的流水线结构对中断返回地址的计算有什么影响?

4.ARM7,ARM9处理器流水线结构一个是3级一个是5级,为什么中断返回地址是相同的?

5.ARM启动后是SVC模式,发生中断后进入什么模式?

6.发生中断后,哪些事情是需要ARM自动完成?哪些是需要编程实现的?

  读书留痕,思考留果

1.程序发生中断后,是如何跳转到中断程序里面的?

  首先要执行完当前指令!然后自动完成以下事情:

  CPSR---->SPSR_irq(IRQ模式)(逆过程不能自动完成)

  PC-4  ----> R14_irq

  PC <---- 0X00000018(irq中断向量表的入口地址)

程序员需要补充做的事情有:

    R0----R12,和LR的值入栈。

   用户处理函数放在irq中断向量表的入口地址,以供跳转。

2.执行完中断后,如何返回到原来被打断的地方接着执行呢?

  恢复R0--R12,出栈;

  R14-4 ----> PC

  SPSR_irq---->CPSR

3.ARM处理器的流水线结构对中断返回地址的计算有什么影响?

  pc始终指向当前正在执行指令的下两条指令处(PC-8).执行完当前的,就变为PC-4。保存的就是PC-4.

4.ARM7,ARM9处理器流水线结构一个是3级一个是5级,为什么中断返回地址是相同的?

  因为:pc始终指向当前正在执行指令的下两条指令处(PC-8),不管是几级流水线。

5.ARM启动后是SVC模式,发生中断后进入什么模式?

  IRQ模式

6.发生中断后,哪些事情是需要ARM自动完成?哪些是需要编程实现的?

ARM自动完成:

 CPSR---->SPSR_irq(IRQ模式)(逆过程不能自动完成)

  PC-4  ----> R14_irq

  PC <---- 0X00000018(irq中断向量表的入口地址)

需要编程实现的:

   R0----R12,和LR的值入栈。

     用户处理函数放在irq中断向量表的入口地址,以供跳转。

今天的学习就到这里了。

 

  

以上是关于ARM中断深入分析几点的主要内容,如果未能解决你的问题,请参考以下文章

深入理解Linux内核---中断和异常(x86平台)

学习ARM开发(17)

深入理解Linux系统调用

C++函数调用过程深入分析

[深入理解Android卷一全文-第八章]深入理解Surface系统

[深入理解Android卷一全文-第七章]深入理解Audio系统