向量中断和非向量中断的区别


为什么会有两种IRQ中断处理方式呢。原来,44B0X 是基于ARM7TDMI的芯片。ARM系列内核对于IRQ中断的处理就是通过查询中断标志寄存器来确定中断源,并执行对应的中断服务程序,这也就是非向量中断处理方法了。44B0X的厂家三星为了加快IRQ中断的响应速度,在此基础上添加了另外一种方法,其实也就是单片机中都采用的固定中断向量地址的办法,很明显这种方法减少了中断响应的时间。

   向量中断就是不同的中断有不同的入口地址,非向量中断就只有一个入口地址,进去了在判断中断标志来识别具体是哪个中断。向量中断实时性好,非向量中断简单

向量中断------由硬件提供中断服务程序入口地址;
非向量中断------由软件件提供中断服务程序入口地址;

向量中断模式用于RESET、NMI、异常处理。当向量中断产生时,控制器直接将PC赋值,如跳到0x0000000d处,而在0x0000000d地址处通常放置
ISR服务程序地址LDR PC, =ISR_HANDLER。
非向量中断模式,有一个寄存器标识位,跳转到统一的函数地址,此函数通过判别寄存器标识位和优先级关系进行中断处理。
向量中断模式是当CPU读取位于0x18处的IRQ中断指令的时候,系统自动读取对应于该中断源确定地址上的指令取代0x18处的指令,通过跳转指
令系统就直接跳转到对应地址函数中,节省了中断处理时间提高了中断处理速度。例如 ADC 中断的向量地址为0xC0,则在0xC0处放如下代码:
ldr PC,=HandlerADC 当ADC中断产生的时候系统会自动跳转到HandlerADC函数中处理中断。
非向量中断模式处理方式是一种传统的中断处理方法,当系统产生中断的时候,系统将INTPND寄存器中对应标志位置位,然后跳转到位于0x18
处的统一中断函数中;该函数通过读取INTPND寄存器中对应标志位来判断中断源,并根据优先级关系再跳到对应中断源的处理代码中处理中断

猜你喜欢

转载自blog.csdn.net/u013407012/article/details/80042900
今日推荐