Narzędzia PCI w Linux

Narzędzia PCI w Linux

PCI oznacza interkonekt komponentu peryferyjnego, jest protokołem stosowanym do łączenia urządzeń peryferyjnych (DDR, UART, USB itp.). To był protokół określony przez Intela dla własnego rozwoju architektury. W obecnym czasie PCI jest nadal używany jako autobus systemowy na komputerach komputerowych lub stacjach roboczych na podstawie architektury Intel.

W tym piśmie przejdziemy przez kilka przydatnych poleceń, które użytkownik może uruchomić, aby eksplorować PCI w systemach Linux. LSPCI i SETPCI to głównie używane polecenia w społeczności Linux PCI. Omówimy kilka przykładów i użyć przypadków tych poleceń.

Zanim zaczniemy od poleceń, pozwól nam niewiele eksploruj na systemach PCI opartych na Linux. Zazwyczaj system Linux składa się z komponentów sprzętu i oprogramowania. Część sprzętowa będzie oparta na jakiejś architekturze, powiedzmy x86. X86 to architektura zdefiniowana przez Intel. W sprzęcie jest kilka peryferyjnych: procesor, DDR, USB i UART, aby wymienić kilka. Są to wszystkie elementy sprzętowe potrzebne do komunikowania się protokołu. Właśnie tam gra PCI. PCI jest zbiorem reguł/wytycznych, które wszystkie komponenty muszą przestrzegać, aby się ze sobą komunikować.

Teraz wszystkie komponenty sprzętowe są połączone z PCI, ale to wciąż nie wystarczy. System wciąż nie jest kompletny i nie można go używać. Brakuje ważnego kawałka, ja.mi. Oprogramowanie. Komponent oprogramowania będzie miał BIOS, bootloader i system operacyjny. Wszystkie te komponenty powinny być zainstalowane na sprzęcie.

Komponenty oprogramowania będą miały niezbędne oprogramowanie do zainicjowania PCI i włączenia poleceń dla użytkownika. Po zainstalowaniu systemu operacyjnego w systemie dostępne będą polecenia LSPCI i.

Weźmy przykład Ubuntu, który jest rozkładem systemu operacyjnego opartego na Linuksie. Po zainstalowaniu Ubuntu na sprzęcie X86, polecenia LSPCI i SETPCI powinny być domyślnie dostępne. Komputery osobiste to systemy oparte na X86. Jeśli Ubuntu zostanie na nich zainstalowane, to są systemy, o których będziemy omawiać.

Otwórz terminal na Ubuntu i uruchom polecenie LSPCI. Zobaczymy poniższe wyjście:

Na powyższym zdjęciu polecenie dostarczyło wszystkie szczegóły urządzeń PCI systemu. Daje to pełną listę urządzeń PCI w tym systemie.

Aby podać kilka szczegółów na temat różnych rodzajów urządzeń PCI, istnieją 3 rodzaje urządzeń PCI: i) kompleks root II) urządzenie końcowe III) mosty PCI.

Kompleks korzeniowy

To jest port główny dla każdego systemu PCI. Wszystkie urządzenia i mosty końcowe są podłączone do kompleksu korzeniowego lub portu korzeniowego.

Punkt końcowy

Są to urządzenia, które zapewniają przypadek lub funkcję użycia punktu końcowego. Na przykład karta graficzna lub karta sieciowa, która jest podłączona do gniazda PCI na płycie głównej, wchodzi do kategorii urządzeń końcowych. Każde urządzenie końcowe może mieć wiele funkcji powiązanych z urządzeniem. Maksymalne funkcje obsługiwane przez punkt końcowy może wynosić 8. Każde urządzenie punktu końcowego może mieć liczbę funkcji od 1 do 8, indeksowanie rozpoczyna się od 0 i przechodzi do 78.

Mosty

Są to urządzenia, które łączą różne autobusy PCI razem. Załóżmy, że w systemie Jeśli obecne jest wiele autobusów, wówczas te wiele autobusów zostanie połączonych z urządzeniami mostowymi.

W dowolnym systemie PCI na ogół będzie 1 złożone urządzenie z korzeniem lub root i może istnieć wiele mostów i urządzeń końcowych.

Listy poleceń LSPCI Wszystkie urządzenia i mosty końcowe na moście Port Coot.mi. Kompleks korzeniowy. Zasadniczo przypisany do tego numer magistrali to 0. Bus 0 to korzeniowa autobus i podstawowa autobus systemu. W pojedynczej magistrali może być 256 urządzeń, a każde urządzenie może mieć maksymalnie 8 funkcji. To (numer magistrali [B], numer urządzenia [D] i numer funkcji [F]) jest powszechnie znany jako kombinacja BDF w świecie PCI. Połączenie BDF wystarczy, aby zlokalizować dowolne określone urządzenie w systemie PCI. Przypisanie tych BDF odbywa się przez BIOS w procesie znanym jako wyliczenie magistrali PCI. Wyliczenie magistrali PCI odbywa się przez BIOS, a BIOS skanuje cały numer magistrali, numer urządzenia i numer funkcji do wszystkich urządzeń i zapełniają je. LSPCI to narzędzie, które zrzuca te wyliczone informacje na przestrzeń użytkownika zgodnie z żądaniem użytkownika, uruchamiając polecenie LSPCI.

W migawce istnieje wiele urządzeń wymienionych przez LSPCI. Weźmy przykładową linię, aby zrozumieć wyjście dostarczone przez LSPCI:

W tym wyjściu możemy zobaczyć pierwsze wpisy jako 00:00.0.

Pierwsze 00 oznacza numer autobusu. To zawiera szczegóły numeru magistrali, w którym to urządzenie jest podłączone. Drugi 00 po okrężnicy, reprezentuje numer urządzenia. Ostatnia cyfra po . [DOT], reprezentuje numer funkcji.

Tak, to ten sam BDF, o którym rozmawialiśmy wcześniej.

Inne informacje o ciągu zawierają kilka szczegółów urządzenia. To jest krótki opis urządzenia. Jak pokazuje przykładowy wynik, że jest to most gospodarza, a także dostarcza informacji producenta.

Wszystkie wartości w tym przykładzie to 0, nie oznacza to, że zawsze będą one 0. Weźmy kolejny przykład z różnymi wartościami:

W tym przykładzie możemy zobaczyć numer magistrali jako 2 dla kontrolera SATA i 3 dla urządzenia kontrolera Ethernet. Numery urządzeń to 01 dla kontrolera SATA i 00 dla kontrolera Ethernet. Oba urządzenia mają numer funkcji jako 0.

Po BDF jest opis urządzenia PCI.

Do tej pory omówiliśmy domyślne dane wyjściowe polecenia i.mi. Wykonanie tylko polecenia LSPCI. To polecenie ma również opcje, które można przekazać do polecenia, aby podać więcej szczegółów urządzenia. Jeśli wymagane jest pewne formatowanie wyjścia, są też opcje. Zbadajmy opcję polecenia. Pełną listę opcji można zobaczyć na stronie Man of the Command. Aby zapoznać się z najczęściej używanymi opcjami, weźmy kilka przykładów.

Aby wymienić urządzenie i identyfikator dostawcy urządzeń PCI, można użyć opcji -nnn.

Identyfikator dostawcy i identyfikator urządzenia są przydzielane przez grupę PCI SIG. PCI SIG to grupa, która działa na opracowanie standardów PCI i jego ulepszeń. Definiują ulepszenia i nowe wersje PCI w celu dopasowania do rozwoju technologicznego systemu.

W przykładzie wyjściowym możemy zobaczyć [Xxxx: xxxx], we wszystkich liniach. Pierwsze 4 cyfry to identyfikator dostawcy i 4 cyfry po okrężnicy identyfikator urządzenia. Dla pierwszego linii identyfikator dostawcy wyjściowej wynosi 8086, czyli identyfikator dostawcy przydzielony do Intel. Drugie 4 cyfry po Colon I.mi. 7190 to identyfikator urządzenia.

Jeśli chcemy wymienić urządzenie na podstawie jakiegokolwiek konkretnego identyfikatora urządzenia, można użyć LSPCI z opcją -D.

LSPCI -D: 7190, Polecenie dostarczy informacje o urządzeniu z identyfikatorem urządzenia 7190. Polecenie dostarczyło tylko informacje o jednym urządzeniu.

Przykładowe dane wyjściowe jest następujące:

Jeśli BDF jest znany z dowolnego urządzenia, można użyć LSPCI do uzyskania informacji o konkretnym urządzeniu. Trzymajmy się tego samego przykładu BDF jak 00:00.0, opcja -s zapewnia możliwość pobierania informacji urządzenia.

LSPCI -S 00:00.0, dostarcza informacji o urządzeniu podłączonym do numeru magistrali 0, a urządzenie, a funkcja urządzenia wynosi 0.

Opcje LSPCI -VVV dostarcza szczegółowych informacji o urządzeniu. Odczytuje przestrzeń konfiguracyjną urządzenia i drukuje informacje o urządzeniu w szczegółowym formacie. Tej opcji można użyć w połączeniu opcji -d lub -s. Połączone użycie -s lub -d i -vvv poda szczegóły na określonym urządzeniu.

Przykładowe wyniki są następujące:

lspci -vvv -s 00:00.0
LSPCI -VVV -D: 7190

-Opcja x Zapewnia szczegóły przestrzeni konfiguracji urządzenia w formacie szesnastkowym.

Opcja LSPCI -VT może być używane do dostarczenia drzewa podobnego do wyjścia urządzeń PCI. Poniżej znajduje się wyjście, które mam w moim systemie:

Polecenie setPci w Linux zapewnia również kilka sposobów dostępu do przestrzeni konfiguracji urządzeń PCI. Aby uzyskać identyfikator dostawcy urządzenia PCI, możemy użyć polecenia jako; setpci -s 00:00.0 0.w

Polecenie wydrukuje słowo i.mi. 2 bajty z przesunięcia 0 BDF jako 00:00.0. Powinniśmy uzyskać wyjście jako 8086.

Identyfikator urzadzenia to 2 bajty obecne na przesunięciu 2 po identyfikatorze dostawcy. Aby uzyskać identyfikator urządzenia, polecenie powinno być setPci -s 00:00.0 2.w

Polecenie SETPCI można użyć do modyfikacji zawartości przestrzeni konfiguracji. Tylko warunek wstępny jest to, że pole konfiguracji powinno pisać zdolne. Niektóre urządzenia mają domyślnie wyłączone magister. Aby włączyć opanowanie autobusów, należy zapisać o wartości przesunięcia 2. Aby umożliwić opanowanie magistrali dowolnego urządzenia, polecenie, które można użyć, to:

setpci -s 00:01.0 4.w = 2 ; To polecenie włączy opanowanie autobusów, a zatem można uzyskać dostęp do regionu pamięci baru.

Wniosek

Omówiliśmy najpopularniejsze polecenie LSPCI w Linux i jego powszechnie używane opcje. Dotknęliśmy podstawy kilku podstaw koncepcji PCI, takich jak BDF, rodzaje urządzeń PCI itp. Omówiliśmy również typowy system PCI z kilkoma przykładami. Przeszliśmy kilka przykładowych przykładów i użycie polecenia LSPCI. Niewiele widzieliśmy na SETPCI i kilka przykładów użytkowania SETPCI. Dzięki całej tej dyskusji zakończmy na ten temat.