中断初始化相关知识资料.doc

1.InitPieVectTable(): 每个中断都有自己的中断向量,即每个中断源都对应着自己的中断服务程序的入口地址,这些中断向量连续存在于RAM中,就是整个系统的中断向量表; Uint32 *Source = (void *) PIE_RESERVED;中断服务函数入口地址; 取PIE_RESERVED地址,强制转换为void*。换后的void*直接赋值给Uint32 *指针。这里要把PIE_RESERVED的首地址给指针Source,Source是Uint32型的,不能够直接给地址的,需要类型转换,在C语言里面指针强制转换要求两边的类型要是一样的,同时也指出了void类型是可以赋值给任何类型的,所以这里用了(void*),其实改成(Uint32*)。Uint32 *Dest = (void *) PieVectTable;中断向量表 extern struct PIE_VECT_TABLE PieVectTable;(Device.h) 一共128个中断,即128个中断向量ID: EALLOW; for(i=0; i 128; i++) *Dest++ = *Source; EDIS; 把中断入口地址送给中断向量表,达到关联的目的; #define EALLOW asm( EALLOW) #define EDIS asm( EDIS)

文档评论(0)

1亿VIP精品文档

相关文档