Technical Document #126

Technical Document #126
Does WinDriver support the PCI Express (PCIe) bus?

WinDriver fully supports backward compatibility with the standard PCI features on PCI Express boards. The wide support provided by WinDriver for the standard PCI bus — including a rich set of APIs, code samples and the graphical DriverWizard for hardware debugging and driver code generation — is also applicable to PCI Express devices, which by design are backward compatible with the legacy PCI bus.

You can also use WinDriver's PCI API to easily communicate with PCI devices connected to the PC via PCI Express-to-PCI bridges and switches (e.g., the PLX 8111/8114 bridges or the PLX 8532 switch, respectively).

In addition, WinDriver provides you with a set of APIs for easy access to the PCI Express extended configuration space — see the description of the WDC_PciReadCfgXXX() and WDC_PciWriteCfgXXX() functions, or the lower-level WD_PciConfigDump() function, in the WinDriver PCI User's Manual. Access to the PCI Express extended configuration space is supported beginning with v7.0.0 of WinDriver and is available on target platforms that support such access (e.g., Windows and Linux).

On Linux and Windows Vista and higher, beginning with version 9.1.0 the WinDriver interrupt handling APIs also support Message-Signaled Interrupts (MSI) and Extended Message-Signaled Interrupts (MSI-X), as detailed in the WinDriver User's Manual.
WinDriver also features enhanced support for PCI Express cards with the Xilinx Bus Master DMA (BMD) design, in the form of a specific sample, found under the WinDriver/xilinx/bmd_design/ directory, and customized DriverWizard code generation (available beginning with v11.3.0). (In versions 9.1.0–10.3.0 there was only a specific sample for Virtex 5, found under the WinDriver/virtex5/bmd/ directory.) The sample and customized generated code include library APIs and a sample application for communicating with the card using the WinDriver APIs, including DMA and MSI handling.