ecos中断机制分析(1)
不同的微处理器提供的中断处理机制不相同,ecos对各种处理机制作了一定的抽象,提供了一种通用的中断处理机制。下面以m68k的mcf52xx系列处理器为例分析。当中断产生时,ecos的一段跳转程序使处理器跳转到相应的VSR,对mcf52xx处理器来说这段跳转程序就是中断向量表,当然不同处理器的跳转程序有不同的实现方式。VSR作了一些简单处理后,会调用中断服务程序(ISR)作进一步处理,对ISR的调用采用寻找中断服务程序向量表的方式。有些中断在ISR结束后还会调用延迟服务程序(DSR)作进一步处理。以下是构成mcf52xx的中断向量表的汇编代码:
/***********************************************************************/
/* ROM vector table */
.macro hw_vsr name
.long hw_vsr_\name
.endm
.section ".romvec","ax"
.globl rom_vsr_table
rom_vsr_table:
/* 0 - Initial SSP */
hw_vsr stack
/* 1 - Initial PC */
hw_vsr reset
/* 2-24 - Default exception handlers */
.rept 24-2+1
hw_vsr default
.endr
/* 25-31 - Autovector interrupts 1-7 */
.rept 31-25+1
hw_vsr autovec
.endr
/* 32-63 - Default exception handlers */
.rept 63-32+1
hw_vsr default
.endr
/* 64-255 - User interrupt vectors */
.rept 255-64+1
hw_vsr interrupt
.endr
.equ rom_vsr_table_size, . - rom_vsr_table
这段代码构成了中断向量表,假设处理器按rom方式启动,(假设为0xFFE00000),该向量表在rom中的存储示意图如下图:
嵌入式实时操作系统 来自淘豆网m.daumloan.com转载请标明出处.