PCI steht für Peripheral Component Interconnect, ist ein Protokoll, das zur Verbindung von Peripheriegeräten (DDR, UART, USB usw.) an den Computern oder Workstations mit dem CPU -System verwendet wird. Dies war das von Intel für seine eigene Architekturentwicklung definierte Protokoll. In der aktuellen Zeit wird PCI weiterhin als Systembus auf den PCs oder Workstations anhand der Intel -Architektur verwendet.
In diesem Schreiben werden wir einige nützliche Befehle durchlaufen, die Benutzer ausführen können, um PCI unter Linux -Systemen zu erkunden. LSPCI und SETPCI werden in der Linux -PCI -Community hauptsächlich verwendete Befehle verwendet. Wir werden einige Beispiele und Anwendungsfälle dieser Befehle erörtern.
Bevor wir mit den Befehlen beginnen, lassen Sie uns wenig auf Linux -basierten PCI -Systemen erkunden. In der Regel besteht ein Linux -System aus Hardware- und Softwarekomponenten. Der Hardware -Teil basiert auf einer Architektur, z. B. x86. X86 ist die von Intel definierte Architektur. Es gibt mehrere Peripheriegeräte in der Hardware: CPU, DDR, USB und UART, um nur wenige zu nennen. Dies sind alle Hardwarekomponenten, die für ein Protokoll erforderlich sind, um zu kommunizieren. Dort kommt PCI zum Spielen. PCI ist der Satz von Regeln/Richtlinien, die alle Komponenten folgen müssen, um miteinander zu kommunizieren.
Jetzt sind alle Hardwarekomponenten mit dem PCI verbunden, aber dies ist immer noch nicht genug. Das System ist immer noch nicht vollständig und kann nicht verwendet werden. Ein wichtiges Stück fehlt, ich.e. Software. Softwarekomponente verfügt über BIOS, Bootloader und Betriebssystem. Alle diese Komponenten sollten auf der Hardware installiert werden.
Softwarekomponenten verfügen über die erforderliche Software, um PCI zu initialisieren und die Befehle für den Benutzer zu aktivieren. Sobald das Betriebssystem auf dem System installiert ist, sind LSPCI- und SETPCI -Befehle verfügbar.
Nehmen wir ein Beispiel für Ubuntu, bei dem es sich um Linux -basierte Betriebssystemverteilung handelt. Sobald der Ubuntu auf X86 -basierter Hardware installiert ist, sollten die Befehle LSPCI und SETPCI standardmäßig verfügbar sein. PC -Computer sind X86 -basierte Systeme. Wenn Ubuntu auf ihnen installiert ist, sind dies die Systeme, die wir diskutieren werden.
Öffnen Sie das Terminal auf Ubuntu und führen Sie den LSPCI -Befehl aus. Wir werden die folgende Ausgabe sehen:
Im obigen Bild hat der Befehl alle Details der PCI -Geräte des Systems bereitgestellt. Dies enthält die vollständige Liste der PCI -Geräte in diesem System.
Um einige Details zu den verschiedenen Arten von PCI -Geräten anzugeben, gibt es 3 Arten von PCI -Geräten: i) Root -Komplex II) Endpunkt -Gerät iii) PCI -Brücken.
Wurzelkomplex
Dies ist der Root -Port für jedes PCI -System. Alle Endpunktgeräte und Brücken sind mit dem Stammkomplex oder dem Stammanschluss verbunden.
Endpunkt
Dies sind die Geräte, die einen Endpoint -Anwendungsfall oder eine Endpunkt -Funktion bieten. Beispielsweise kommt die Grafikkarte oder die Netzwerkkarte, die an den PCI -Steckplatz auf dem Motherboard angeschlossen ist, in die Kategorie der Endpunktgeräte. Jedes Endpunkt -Gerät kann mehrere Funktionen haben, die dem Gerät zugeordnet sind. Die vom Endpunkt unterstützten maximalen Funktionen können 8 sein. Jedes Endpoint -Gerät kann eine Funktionszahl von 1 bis 8 haben, die Indizierung beginnt ab 0 und geht bis 78.
Brücken
Dies sind die Geräte, die verschiedene PCI -Busse miteinander verbinden. Nehmen wir im System an, wenn mehrere Busse vorhanden sind, werden diese mehreren Busse mit den Brückengeräten verbunden.
In jedem PCI -System gibt es im Allgemeinen 1 Root -Port- oder Root -Komplex -Gerät und es können mehrere Brücken und Endpunktgeräte vorhanden sein.
LSPCI -Befehlslisten Alle Endpunktgeräte und Brücken auf der Root Port Bridge I.e. Wurzelkomplex. Im Allgemeinen ist die dazu zugewiesene Busnummer 0. Bus 0 ist der Wurzelkomplexbus und der primäre Bus des Systems. Im Einzelbus kann es 256 Geräte geben und jedes Gerät kann maximal 8 Funktionen haben. Diese (Busnummer [b], Gerätezahl [D] und Funktionsnummer [f]) ist allgemein als BDF -Kombination in der PCI -Welt bekannt. Die BDF -Kombination reicht aus, um ein bestimmtes Gerät im PCI -System zu lokalisieren. Die Zuordnung dieser BDF erfolgt vom BIOS im Prozess, der als PCI -Busaufzählung bezeichnet wird. Die PCI -Busaufzählung erfolgt von BIOS und BIOS scans alle Busnummer, Gerätenummer und Funktionsnummer an allen Geräten und füllt sie. LSPCI ist das Dienstprogramm, das diese aufgezählten Informationen in den Benutzerraum abgelegt hat, wie vom Benutzer angefordert wird, indem Sie den Befehl LSPCI ausführen.
In der Snapshot gibt es mehrere Geräte, die von LSPCI aufgeführt sind. Nehmen wir eine Beispielzeile, um die von LSPCI bereitgestellte Ausgabe zu verstehen:
In dieser Ausgabe sehen wir die ersten Einträge als 00:00.0.
Die erste 00 steht für die Busnummer. Dies liefert die Details in der Busnummer, mit der dieses Gerät angeschlossen ist. Zweiter 00 nach dem Dickdarm repräsentiert die Gerätezahl. Letzte Ziffer danach . [DOT] repräsentiert die Funktionsnummer.
Ja, dies ist der gleiche BDF, den wir zuvor besprochen haben.
Andere Stringinformationen enthalten einige Details des Geräts. Dies ist die kurze Beschreibung des Geräts. Wie der Beispielausgang zeigt, dass dies die Host Bridge ist und auch die Herstellerinformationen liefert.
Alle Werte in diesem Beispiel sind 0, dies bedeutet nicht, dass diese immer 0 sein werden. Nehmen wir ein anderes Beispiel mit verschiedenen Werten:
In diesem Beispiel können wir die Busnummer als 2 für SATA -Controller und 3 für das Ethernet -Controller -Gerät sehen. Die Gerätenummern sind 01 für SATA -Controller und 00 für Ethernet -Controller. Beide Geräte haben eine Funktionsnummer als 0.
Nach dem BDF gibt es die Beschreibung des PCI -Geräts.
Bisher haben wir die Standardausgabe des Befehls i diskutiert i.e. Nur den Befehl LSPCI ausführen. Dieser Befehl verfügt auch über Optionen, die an den Befehl übergeben werden können, um weitere Details des Geräts anzugeben. Wenn eine Formatierung der Ausgabe erforderlich ist, gibt es auch Optionen. Lassen Sie uns eine Option des Befehls untersuchen. Die vollständige Liste der Optionen finden Sie auf der Mannseite des Befehls. Um sich mit den am häufigsten verwendeten Optionen vertraut zu machen, nehmen wir einige Beispiele an.
Um die Geräte- und Lieferanten -ID der PCI -Geräte aufzulisten, kann die Option -nnn verwendet werden.
Lieferanten -ID und Geräte -ID werden von der PCI Sig Group zugewiesen. PCI Sig ist die Gruppe, die für die Entwicklung von PCI -Standards und deren Verbesserungen arbeitet. Sie definieren die Verbesserungen und neuen Versionen der PCI so, dass sie den technologischen Entwicklungen des Systems entsprechen.
In der Beispielausgabe können wir sehen [Xxxx: xxxx], in allen Zeilen. Die ersten 4 Ziffern sind die Anbieter -ID und 4 Ziffern nach dem Dickdarm sind die Geräte -ID. Für die erste Leitungsausgabemittel -Anbieter -ID ist 8086, die Anbieter -ID für Intel, die zugewiesen wurde. Zweite 4 Ziffern nach Colon I.e. 7190 ist die Geräte -ID.
Wenn wir das Gerät basierend auf einer bestimmten Geräte -ID auflisten möchten, kann LSPCI mit -D -Option verwendet werden.
lspci -d: 7190, Der Befehl liefert die Informationen des Geräts mit Geräte -ID 7190. Der Befehl hat nur die Informationen auf einem einzelnen Gerät bereitgestellt.
Beispielausgabe ist wie folgt:
Wenn BDF von einem Gerät bekannt ist, kann LSPCI verwendet werden, um die Informationen des spezifischen Geräts zu erhalten. Halten wir uns an das gleiche Beispiel von BDF wie 00:00.0, -S -Option bietet die Möglichkeit, die Informationen des Geräts abzurufen.
LSPCI -S 00:00.0, Bietet die Informationen auf dem Gerät, das an die Busnummer 0 und das Gerät angeschlossen ist, und die Funktion des Geräts ist 0.
LSPCI -VVV -Optionen Bietet die ausführlichen Informationen des Geräts. Es liest den Konfigurationsraum des Geräts und druckt die Informationen des Geräts im detaillierten Format aus. Diese Option kann in Kombination von -D- oder -s -Option verwendet werden. Die kombinierte Verwendung von -s oder -d und -VVV liefert die Details auf dem spezifischen Gerät.
Beispielausgaben sind wie folgt:
lspci -vv -s 00:00.0
lspci -vvv -d: 7190
-x Option Bietet die Konfigurationsraumdetails des Geräts im hexadezimalen Format.
LSPCI -VT -Option Kann verwendet werden, um den Baum wie die Ausgabe der PCI -Geräte bereitzustellen. Im Folgenden finden Sie die Ausgabe, die ich in meinem System habe:
SETPCI -Befehl In Linux bietet auch einige Möglichkeiten, um auf den Konfigurationsraum der PCI -Geräte zuzugreifen/zu ändern. Um die Lieferanten -ID des PCI -Geräts zu erhalten, können wir den Befehl als verwenden. setpci -s 00:00.0 0.w
Der Befehl wird das Wort i drucken.e. 2 Bytes ab Offset 0 des BDF als 00:00.0. Wir sollten die Ausgabe als 8086 erhalten.
Geräte ID sind die 2 Bytes, die nach der Anbieter -ID bei Offset 2 vorhanden sind. Um die Geräte -ID zu erhalten.0 2.w
SETPCI -Befehl kann verwendet werden, um den Inhalt des Konfigurationsraums zu ändern. Nur vor der Erregung sollte das Konfigurationsfeld fähig schreiben sein. Einige der Geräte sind standardmäßig mit dem Bus Master deaktiviert. Um das Mastering des Busses zu ermöglichen, sollte zum Offset -Wert von 2 geschrieben werden. Um die Bus -Mastering eines jeden Geräts zu aktivieren, kann der Befehl verwendet werden, der verwendet werden kann, ist:
setpci -s 00:01.0 4.w = 2 ; Dieser Befehl ermöglicht das Mastering des Busses, und daher kann der Speicherbereich der Bar zugreifen.
Abschluss
Wir haben den beliebtesten LSPCI -Befehl in Linux und seine häufig verwendeten Optionen besprochen. Wir haben eine Basis auf einige Grundlagen von PCI -Konzepten wie BDF, Arten von PCI -Geräten usw. berührt, usw. Wir haben auch ein typisches PCI -System mit wenigen Beispielen besprochen. Wir haben nur wenige Beispielbeispiele und Verwendung des LSPCI -Befehls durchlaufen. Wir haben auf setpci und ein paar Nutzungsbeispiele von setpci ein wenig gesehen. Lassen Sie uns mit all dieser Diskussion zu diesem Thema schließen.