你好
我的 arm 和 dsp 核都跑的是裸机。用arm核的 uart1 和 upp 来接收外部数据,通过ipclite送至dsp核进行运算(算法中包括FFT),计算完的结果又通过ipclite送至arm核,经uart1发送给上位机。如果dsp核中不进行运算(算法中包括FFT),程序运行正常,如果进行进行运算(即下面的main2()),就会出现卡死在main2()下面的Notify_sendEvent函数处;
main2();
Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID2, (UInt32)dsp_obj_info_buffer, TRUE);
有帖子称,FFT运算时,会禁用所有中断,我尝试在main2()之后,再使能一次中断,如下所示:
main2();
IntDSPINTCInit();
IntGlobalEnable(); /* Enable C674x global interrupt */
Notify_sendEvent(IPC_ARM_HOST,IPC_HOST_INTLINE, EVENTID2, (UInt32)dsp_obj_info_buffer, TRUE);
程序会卡死在IntDSPINTCInit()函数。
我如果只使用dsp核 uart1和upp 直接来接收数据 ,然后进行运算。发现只要不向uart1发数据,upp 一直可以正常中断(接收数据),并正常运行main2();但是一向uart1发送数据整个程序就会死掉,不知道是什么原因?有没有什么办法可以解决?
Shine:
可以用仿真器跟踪一下FFT程序,看执行完后总中断是否被关掉了?如果被关掉了,在执行完fft后,重新使能总中断。不需要再重新初始化中断IntDSPINTCInit();
,
x x5:
你好
,
x x5:
你好
,
Shine:
请问您还有什么问题?