void InitPieVectTable(void)
{
int16 i;
Uint32 *Source = (void *) &PieVectTableInit; /*PieVectTableInit是被初始化过的Struct变量,
而PieVectTable没有被初始化*/
Uint32 *Dest = (void *) &PieVectTable;
EALLOW;
for(i=0; i < 128; i++)
*Dest++ = *Source++; //这步相当于初始化PieVectTable,在0x000D00地址开始,指向各种中断的入口
EDIS;
// 使能PIE向量表
PieCtrl.PIECRTL.bit.ENPIE = 1;
}
函数中PieVectTableInit和PieVectTable都是struct PIE_VECT_TABLE类型的变量,只是PieVectTableInit中有具体的数值而PieVectTable没有!现在有以下几个疑问
1:为什么程序不直接给PieVectTable赋值,而是要通过PieVectTableInit来初始化?
2:PieVectTable在CMD文件中被指向了固定的地址,而PieVectTableInit也占用相同大小的空间,只是具体地址不知道在哪里,这样是不是有点浪费空间呢?为什么DSP要这么操作!
3:Uint32 *Dest = (void *) &PieVectTable; 这句里面将PieVectTable的首地址给了指针Dest,为什么强制转换成的指针类型是Void 型的呢??
刚接触DSP,还请多多指教!
|