04-07-2019 07:30 AM
Hi everyone
I know there are a lot of posts about this problem, but mine is a little bit different.
The first transaction finished properly. (It is not busy forever)
Then the second transaction stuck there forever.
Interface summary
Above are HLS interface summary and axi stream data port struct.
float input_real[100][1024]; .... int correctnum = 0; for(int i =0; i<100; i++){ printf("%d\n",(int)XAxiDma_SimpleTransfer(&axiDma,(u32)input_real[i],32*32*sizeof(float),XAXIDMA_DMA_TO_DEVICE)); printf("%d\n",(int)XAxiDma_SimpleTransfer(&axiDma,(u32)m_dma_buffer_RX,10*sizeof(float),XAXIDMA_DEVICE_TO_DMA));; while(XAxiDma_Busy(&axiDma,XAXIDMA_DMA_TO_DEVICE)); // stuck at the second transcation where i = 1, the first one is finished properly while(XAxiDma_Busy(&axiDma,XAXIDMA_DEVICE_TO_DMA)); Xil_DCacheInvalidateRange((u32)m_dma_buffer_RX,10*sizeof(float)); float output = find_max(m_dma_buffer_RX); printf("%f\n",output); if(output == label[i]){ correctnum++; } }
04-08-2019 04:48 AM
Ok it's dumb. there is a peripheral function called enable auto restart.
04-08-2019 04:48 AM
Ok it's dumb. there is a peripheral function called enable auto restart.