Jump to content
  • 0

LwIp echoserver times out after a AxiDMA transfer


LTV

Question

Hi,

I am using the LwIP echoserver example  on Zybo and trying to send some commands from a PC running Python  to Zynq via the recv_callback() function in the echo.c. Inside the recv_callback(), i call an AxiDma transfer. Something like this:

//inside recv_callback() in echo.c

strncpy(command, p->load, p->len);

if( strcmp(command, "startAxiDmaCmd") == 0) {

startAxiDma()// call the start AxiDma function

tcp_write() //write ack to PC

}

 

The AxiDma functions makes one transfer, and returns as it should. Consecutive transfers are done by the DMA Interrupt handlers. That is a simple register mode for AxiDma with Interrupts. The transfer take some time 6-7 seconds for 512MB in 32MB chunks/transfers  so i have  16 transfers total.

 

The problem is that after the Dma transfers are done- all 16 transfers, my echoserver no longer, calls back the recv_callback(), when i initiate another command from PC (any command dma or not ), The PC socket responds with TimeoutError " A connection attempt failed because the connection party(Zynq that is) did not properly respond after a period of time"

--it seems that the prolonged AxiDma Interrupts are messing up the echoserver TCP stack. Dont know exactly how?

I know that the echoserver uses timer interrupts for transmit. bit it happens on receive.

DMA transfers work by themselves, echoserver also work by itself ( looping back simple commands)  but when combined -not

Does anyone know  how to fix that?

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...