本帖最后由 24不可说 于 2017-8-29 20:08 编辑
题一: ARM异常有哪些分类? 思考过后,再到下方寻找答案
题二: ARM异常会发生哪些硬件操作? 思考过后,再到下方寻找答案
题三: 请简述中断与异常的区别。 思考过后,再到下方寻找答案
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 题一答案: 异常就是正常的用户程序被暂时中止,处理器就进入异常模式。 ARM CPU的异常分为:复位异常、中断异常(IRQ,FIR)、预取指令中止异常、未定义指令异常、软件中断指令异常、数据中止访问异常。 题二答案: 在异常发生后,ARM内核会自动做以下工作: 保存执行状态:将CPSR复制到发生的异常模式下SPSR中。 模式切换:将CPSR模式位强制设置为与异常类型相对应的值,同时处理器进入到ARM执行模式,禁止所IRQ中断,当进入FIQ快速中断模式时禁止FIQ中断。 保存返回地址:将下一条指令的地址(被打断程序)保存在LR(异常模式下LR_excep)中。 跳入异常向量表:强制设置PC的值为相应异常向量地址,跳转到异常处理程序中。 题三答案: 异常在处理的时候必须考虑与处理器的时钟同步,实际上异常也称为同步中断,在处理器执行到因编译错误而导致的错误指令时,或者在执行期间出现特殊错误,必须靠内核处理的时候,处理器就会产生一个异常;所谓中断是指外部硬件产生的一个电信号从CPU的中断引脚进入,打断CPU的运行。所谓异常是指软件运行过程中发生了一些必须作出处理的事件,CPU自动产生一个陷入来打断CPU的运行。
|