Vom Standpunkt der Software aus sind PCI- und PCI Express-Geräte im Wesentlichen identisch. PCIe-Geräte hatten den gleichen Konfigurationsraum, BARs und unterstützen (normalerweise) dieselben PCI INTx-Interrupts.
Beispiel # 1: Windows XP hat keine speziellen Kenntnisse über PCIe, läuft aber gut auf PCIe-Systemen.
Beispiel # 2: Meine Firma bietet sowohl PCI- als auch PCIe-Versionen einer Peripheriekarte an, und sie verwenden das gleiche Windows / Linux-Treiberpaket. Der Fahrer "kennt" den Unterschied zwischen den beiden Boards nicht.
Allerdings: PCIe-Geräte nutzen häufig "fortgeschrittene" Funktionen wie MSI , Hotplugging, erweiterten Konfigurationsbereich, etc Viele dieser Funktionen existierten auf Legacy-PCI, wurden aber nicht verwendet. Wenn es sich um ein Gerät handelt, das Sie entwerfen, liegt es an Ihnen, ob Sie diese erweiterten Funktionen implementieren oder nicht.
Soweit ich mich erinnere, gibt es für den Gerätetreiber, den ich geschrieben habe, keinen Unterschied zwischen den PCI-Geräten und den PCIe-Geräten. Mein Gerätetreiber verwendet dieselben Aufrufe wie Ihre: chrdev
, pci_resource
, irq
und mem_region
.
PCIe ist eine erweiterte Version mit mehr Geschwindigkeit und Fähigkeiten. Die grundlegenden Funktionen bleiben für alle Standards gleich. Die Treiberregistrierung und das Bereitstellen der Handler ist ein und dasselbe, da sich alle PCI-Treiber beim selben Linux-PCI-Subsystem registrieren.
Tags und Links c linux linux-device-driver