单片机解密周立功lpc21xx/lpc22xx(ARM7)
| 单片机解密IRQ.S分析 以下是“IRQ.S分析”的部分摘录 一直想对中断嵌套有更深层次的了解。原因就在于一个项目中在中断频率较高的情况下,又按键中断触发,有时候会导致死机。 先来看两个问题: 1.为什么除了进入复位异常模式外,在别的异常处理模式中都允许FIQ中断? 答:所以FIQ可以用来处理实时性较高或是系统中至关重要的事。 2.数据访问中止异常的优先级大于FIQ异常,为什么在数据访问异常处理模式中,还允许 FIQ中断呢?这样不就成了:在高优先级异常处理中允许低优先级的中断发生吗?即使这样,因为FIQ中断的优先级 < 数据异常中断优先级,也不会进入FIQ中断处理程序啊,这样不就更没有用处了?? 答:在高优先级异常处理中允许低优先级的中断发生,是可以的。(1)如果CPU不支持中断嵌套,会丢弃低优先级的中断。(2)如果CPU支持中断嵌套,低优先级的中断会被挂起,待退出高优先级后再处理低级中断。 单片机解密 这两个问题说明了各种异常模式也是有优先级的,并且低优先级异常能被高优先级异常中断。当CPU不支持嵌套时,会丢弃低优先级中断,支持嵌套时会挂起,等高优先级处理后再处理低优先级。 优先级异常1复位2数据异常终止3FIQ4IRQ5预取异常终止6未定义指令7SWI 单片机解密RAM7中断优先级表 既然不支持嵌套的cpu不能被低优先级的中断打断,那么为什么arm7tdmi的中断处理过程会被其他中断打断呢? ... ... 简单描述下这个中断处理过程:1.计算返回地址 2.保存环境 3.切换到系统模式 4.实际中断处理 5.切换回IRQ模式 6.恢复环境 7.返回 这里的动作就像括号一样层层包围着实际中断处理函数,就是为了让实际中断处理函数在系统模式下进行,而非irq模式下。正是在系统模式下,中断才能被新的IRQ打断,才会造成类似嵌套的效果。 在一般的中断处理程序中,需要按照以下步骤进行响应: 1.计算返回地址 2.保存会有改变的寄存器组 3.调用实际中断响应函数 4.恢复寄存器组 5.返回被中断处 |

芯片解密