by support »
Hello,
I know too little about your design to say anything definite, however it looks like the mechanism for handling overflow conditions needs some looking at. Since it's a corner-case kind of mechanism, it may have worked well in the conditions it met previously, but not the one that are thrown at it after moving to Windows 10. Not to mention that it was apparently designed based upon a misconception on what a synchronous Xillybus stream is.
Speaking of which, I don't think you really want to have a synchronous stream there. In fact, there are very few cases where it makes sense to have a synchronous stream in the FPGA to host direction. What it currently does, is to require that the host issues a read() call frequent enough to prevent the FIFO from overflowing. This is most likely unnecessarily strict. You probably want the DMA buffers to be filled "in the background" as it arrives to the FPGA's FIFO, so that the host can read it slightly later.
In fact, I won't be surprised if the problem goes away if you change that stream to asynchronous. But I wouldn't do that, because that would hide a bug in the overflow protection mechanism. And then you probably want to get rid of that Windows service.
But why does it work for hours despite all this? Well, I always say that a good debugging session begins with asking why something specific doesn't work, and ends with asking why anything worked at all.
Regards,
Eli
Hello,
I know too little about your design to say anything definite, however it looks like the mechanism for handling overflow conditions needs some looking at. Since it's a corner-case kind of mechanism, it may have worked well in the conditions it met previously, but not the one that are thrown at it after moving to Windows 10. Not to mention that it was apparently designed based upon a misconception on what a synchronous Xillybus stream is.
Speaking of which, I don't think you really want to have a synchronous stream there. In fact, there are very few cases where it makes sense to have a synchronous stream in the FPGA to host direction. What it currently does, is to require that the host issues a read() call frequent enough to prevent the FIFO from overflowing. This is most likely unnecessarily strict. You probably want the DMA buffers to be filled "in the background" as it arrives to the FPGA's FIFO, so that the host can read it slightly later.
In fact, I won't be surprised if the problem goes away if you change that stream to asynchronous. But I wouldn't do that, because that would hide a bug in the overflow protection mechanism. And then you probably want to get rid of that Windows service.
But why does it work for hours despite all this? Well, I always say that a good debugging session begins with asking why something specific doesn't work, and ends with asking why anything worked at all.
Regards,
Eli