ARM的异常处理 |
您所在的位置:网站首页 › arm处理器异常处理过程 › ARM的异常处理 |
当系统运行时,异常可能会随时发生,为保证在ARM处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异常处理,采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理程序,当ARM处理器发生异常时,程序计数器PC会被强制设置为对应的异常向量,从而跳转到异常处理程序,当异常处理完成以后,返回到主程序继续执行.
向量表是异常发生时,ARM内核跳转地址组成的表,通常用跳转指令跳转到对应的处理程序。
地 址 异 常 进入模式 0x0000,0000 复位 管理模式 0x0000,0004 未定义指令 未定义模式 0x0000,0008 软件中断 管理模式 0x0000,000C 中止(预取指令) 中止模式 0x0000,0010 中止(数据) 中止模式 0x0000,0014 保留 保留 0x0000,0018 IRQ IRQ 0x0000,001C FIQ FIQ
当异常发生时,内核会跳转到向量表的相应位置,并执行当中的指令,通常,在向量表中会存放一些B,LDR PC等跳转指令,用来跳转到对应的处理程序,下面给出一个一地址0x00000000开始的向量表例子:
b reset ; 复位 0x00000000 ldr pc, _undefined_instruction ;未定义的指令异常 0x00000004 ldr pc, _software_interrupt ;软件中断异常 0x000000008 ldr pc, _prefetch_abort ;预取指令 0x0000000c ldr pc, _data_abort ;数据 0x00000010 ldr pc, _not_used ;未使用 0x00000014 ldr pc, _irq ;慢速中断异常 0x00000018 ldr pc, _fiq ;快速中断异常 0x0000001c
/* 中断向量表入口地址 */ _undefined_instruction: .word undefined_instruction _software_interrupt: .word software_interrupt _prefetch_abort: .word prefetch_abort _data_abort: .word data_abort _not_used: .wordnot_used _irq: .wordirq |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |