dsp:C6657
问题描述:
由FPGA发来图像数据,程序处理后通过McBSP发送给其他DSP。
程序在线调试的时候一切正常,但是boot后程序能正常启动,但是运行到“while(!(SendFlag == 1));”这一句时,
if(!loseFrame) {/* McBSP */SET_BIT(McBSP_SPCR(McBSP_TO_DSP2), GRST);SET_BIT(McBSP_SPCR(McBSP_TO_DSP2), FRST);SET_BIT(McBSP_SPCR(McBSP_TO_DSP2), XRST);while(!(SendFlag == 1));SendFlag = 0;RESET_BIT(McBSP_SPCR(McBSP_TO_DSP2), XRST);/* McBSP */ }
无法跳出收到发送成功标志循环(这个在线跑是没有问题的。。),SendFlag置位函数如下所示:
void EDMA_isr() {......if(GET_BIT(IPRH,McBSPr_EDMA_Ch[McBSP_TO_DSP2]-32)) //接收DSP2的处理结果{REG_WRITE(ICRH,1<<4);RecFlag = 1;}if(GET_BIT(IPRH,McBSPx_EDMA_Ch[McBSP_TO_DSP2]-32)) //发送给DSP2的处理结果{REG_WRITE(ICRH,1<<5);SendFlag = 1;}...... }
还望大神解释…谢谢
Jane Lu:
Xu,
几点建议:
1 您用的是哪种boot模式? 可以查一下该boot模式下是否默认使用了哪些资源,是否与您的程序有冲突
2 EDMA_ISR中是否有其他变量可以检查中断有没有产生?
Xu Tsou:
回复 Jane Lu:
hi, Jane
谢谢您的回复,我使用的是直接SPI BOOT,但是我不知该“查该boot模式下是否默认使用了哪些资源,是否与程序有冲突”,然后经过我的验证,是由进如EDMA_ISR中断服务函数的。
可能有些问题当时描述的可能不太清楚,
http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/69574.aspx
我在这个帖子中更加详细的描述了一次,还望您能指点一二,谢谢。