Technical Document #77

Technical Document #77
How do I perform Direct Block transfers from one PCI card to another?

Locate and register both cards (using WD_PciScanCards(), WD_PciGetCardInfo() and WD_CardRegister()).
At least one of the cards must be PCI DMA Master Capable.
Program it with the physical address of the Slave card. Obtaining this address is possible by using pciCard.Card.Item[i].I.Mem.dwPhysicalAddr set by WD_PciGetCardInfo() for the slave card.

(Refer to the WinDriver User's Manual for more information regarding DMA handling and the related APIs. Note that in newer versions of WinDriver WD_DMALock() is described in the WinDriver PCI Low Level API Reference, which is available from the WinDriver/docs/ directory.)

A sample of programming the DMA can be found, for example, in the WinDriver PLX library and the samples that use it.