cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Visitor
Visitor
487 Views
Registered: ‎02-20-2019

axi stream stuck busy

Jump to solution

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

intface_summary.PNGfp.PNG

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++;
		 }
	 }

 

 

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Visitor
Visitor
446 Views
Registered: ‎02-20-2019

Ok it's dumb. there is a peripheral function called enable auto restart.

View solution in original post

0 Kudos
1 Reply
Highlighted
Visitor
Visitor
447 Views
Registered: ‎02-20-2019

Ok it's dumb. there is a peripheral function called enable auto restart.

View solution in original post

0 Kudos