Hi,
in my DM648 application (frame grabber PCI card) there is an EDMA transfer: Videoport -> DDR (grabbing an image). Each "Videoport-FIFO-Full" event triggers the copy of the data into DDR Ram. For example if an image with 640x480 bytes is grabbed, 480 EDMA events will be triggered, each copies 640bytes of data.
A TSK runs parallel and polls PaRAM.DST in order to see how far the data was already copied. The valid data is forwarded over the PCI bus into the PCs memory.
Polling PaRAM.DST sometimes brings a strange result - the value jumps back to a smaller value - which can not be true because the memory is filled linear from lower to higher addresses. For example (polling once every ms with about 30MB/s of incoming net data):
0xE36D35A0
0xE36D8BB0
0xE36EFB10
0xE36E6F80
0xE36EDEE0
0xE36F4E40
It seems that the update of the PaRAM.DST register on the EDMA side is not synchronized to reading it on the DSP side - so sometimes you get some of the bits with wrong values.
Is it theoretically possible that reading PaRAM.DST results in wrong values because EDMA is updating the register "at the same time"? Is there any synchronization mechanism?
best regards,
Thomas