1、在bios下,设置一个硬件中断,但是事件是CIC里面的,我首先在cfg文件里面创建了一个中断,关于CIC到core中断的映射,不知道用什么语句来写,我就把CIC里面寄存器的地址写出来,去设置这些寄存器,使CIC中EDMA0的中断映射到了core中断4,我不知道这么设置对不对?设置寄存器的时候,需不需要解锁KICK0等?
2、还有一个问题是依旧是BIOS下,第一个核利用messageq向第二个核发送消息,第二个核根据消息内容来判断执行哪一步,类似于官方vlfft OK那个历程,但是总是卡在mode = msg->mode;,这一步不再往下进行,不知道问题出现在哪,也没报错
while(1)
{
status = MessageQ_get(messageQ, (MessageQ_Msg *)&msg, MessageQ_FOREVER);
mode = msg->mode;
if(mode == VLFFT_DO_NOTHING)
{
msg->mode = VLFFT_PROCESS_1stITER;//VLFFT_OK;
}
// 1st iteration processing
if(mode == VLFFT_PROCESS_1stITER)
{
#if ENABLE_VLFFT_PROCESSING
/******************************************************/
/* configure EDMA for 1st iteration of FFTs */
/******************************************************/
vlfftEdmaConfig_1stIter( &DMAparams);
ptrIn = inData;
ptrOut = workBufExternal;
VLFFT_1stIter( ptrIn, ptrOut, &VLFFTparams, &VLFFTbuffers, &DMAparams, coreNum);
#endif
msg->mode = VLFFT_OK;
} // if(msg.mode == VLFFT_PROCESS_1stITER)
// 2nd iteration processing
if(mode == VLFFT_PROCESS_2ndITER)
{
/******************************************************/
/* configure EDMA for 2nd iteration of FFTs */
/******************************************************/
#if ENABLE_VLFFT_PROCESSING
vlfftEdmaConfig_2ndIter( &DMAparams);
ptrIn = workBufExternal;
ptrOut = outData;
VLFFT_2ndIter( ptrIn, ptrOut, &VLFFTparams, &VLFFTbuffers, &DMAparams, coreNum);
#endif
msg->mode = VLFFT_OK;
} // if(msg.mode == VLFFT_PROCESS_2ndITER)
if(mode == VLFFT_EXIT){
#ifdef ENABLE_PRINTF
System_printf("The test is complete!\n");
// System_printf("\n\n");
#endif
#ifdef ENABLE_SYSTEM_TRACE_LOGS
STMXport_logMsg(pSTMHandle, STM_CHAN_STATUS, "Test Complete\0");
#endif
System_exit(0);
}
/*********************************************/
/* send the message to the remote processor */
/*********************************************/
#if DEBUG_DISPLAY
System_printf( " Sending a message to core0\n" );
#endif
status = MessageQ_put(core0QueueId, (MessageQ_Msg)msg);
#if DEBUG_DISPLAY
if (status < 0) {
System_abort("MessageQ_put had a failure/error\n");
}
#endif
} // while(1)
}