DSPRelated.com
Forums

DM642 PCI_xferTest() says the transfer is done, but it isn't really done...

Started by Clem Taylor August 6, 2005
I'm using the PCI bus on the DM642 and I've been having a rather
annoying problem with PCI_xferTest() saying that a read DMA is done,
but the data doesn't check correctly. However, if I check the data a
second time, it will be magically correct.

It seems that even though PCI_xferTest() returns 0, the data hasn't
actually made it to memory. So doing a read will return the old data,
but doing another read a short time later will get the correct data.
This problem doesn't happen that often and normally only on small
transfers. I'm DMAing to SRAM, so it shouldn't be a cache problem.

1) Issue PCI DMA on DM642 to copy from PCI address to SRAM:
PCI_xfrConfigArgs ( ... )
PCI_xfrStart ( PCI_READ_NOPREF );
2) Wait for DMA to compete:
while ( PCI_xferTest() );
3) validate data in SRAM
<< sometimes this will fail if the transfer size is small (16-32 bytes) >>
4) validate data in SRAM again
<< this will pass >>

Has anyone else had problems like this? I saw a problem like this on
another processor, but in that case it turned out to be a silicon
bug...

Thanks,
Clem