U ovom ćemo članku objasniti osnove PCI, PCIe i naredbe lspci za prikaz podataka na vašem sustavu.
Što je PCI?
PCI ili Peripheral Component Interconnect je sučelje za dodavanje dodatnih hardverskih komponenti u računalni sustav. PCIe ili PCI Express je ažurirani standard koji se danas koristi. Na primjer, recimo da želite dodati Ethernet karticu na svoje računalo kako bi moglo pristupiti internetu i razmjenjivati podatke. Pa, kartici je potreban protokol za komunikaciju s ostatkom unutarnjeg sustava, PCI može biti standardno sučelje koje se koristi za dodavanje ove kartice u vaš sustav. I dalje vam je potreban upravljački program za ovu karticu kako bi ga kernel mogao koristiti, međutim PCI je utor, sabirnica i sučelje koje će se koristiti za dodavanje hardvera u sustav sa standardnim sučeljem. Stvaranje PCI linux upravljačkog programa slijedit će neka standardna sučelja. Možete vidjeti dokumentaciju za izradu a PCI linux upravljački program ovdje. Iz strukture ispod možete vidjeti standardne metode koje se moraju implementirati. Metode poput sonda, ukloniti, obustaviti, nastaviti, itd.
struct pci_driverčvor struct_head_head;
const char * ime;
const struct pci_device_id * id_table;
int (* sonda) (struct pci_dev * dev, const struct pci_device_id * id);
void (* ukloniti) (struct pci_dev * dev);
int (* suspend) (struct pci_dev * dev, pm_message_t state);
int (* nastavak) (struct pci_dev * dev);
void (* isključivanje) (struct pci_dev * dev);
int (* sriov_configure) (struct pci_dev * dev, int num_vfs);
const struct pci_error_handlers * err_handler;
const struct attribute_group ** grupe;
struct driver_driver upravljački program;
struct pci_dynids dynids;
;
PCI brzine i upotrebe
PCI 3.0 može pokretati podatke do 1 GB / s po traci. Različiti uređaji mogu imati više traka, tako da je moguće da pojedini uređaji mogu imati više gigabajta brzine prijenosa podataka. Ovi se brojevi uvijek poboljšavaju kako izlaze nove verzije specifikacija, tako i novi hardveri, pa uvijek provjerite ima li najnovijeg i najbržeg što možete pronaći. Vrste komponenata i naprava koje možete kupiti i koje se uključuju u PCI sučelje uključuju: WIFI adaptere, Bluetooth, NVME SSD kartice, grafičke kartice i još mnogo toga.
Istraživanje naredbe lspci
Stvorio sam Ubuntu 19.04 na Googleovom oblaku i sada će pokretati lspci zapovijedi i vidi što će se dogoditi.
Ono što vidite je jedan redak po uređaju s numeričkim kodom i usmenim opisom uređaja. U ovom se izlazu zapravo prikazuje 5 polja po retku: Slot, Class, Dobavljač, Uređaj i Revizija.
Dakle, razbijanje prvog retka onoga što imamo:
SLOT: 00:00.0
Klasa: Most domaćina
Dobavljač: Korporacija Intel
Uređaj: 440FX - 82441FX PMC
Revizija: 02
I gledajući utor 00:04.0, to je naš Ethernet kontroler, koji se čini virtualnim uređajem kao dijelom virtualne čarolije Googleove implementacije u oblaku.
Da biste dobili detaljnije, detaljne informacije o svakom PCI utoru, pokrenite sljedeću naredbu:
# lspci -vmm
Ova će naredba rastaviti svaki redak na njegova komponentna polja i omogućiti vam analizu svakog uređaja s opisnijim oznakama.
Također možete isprobati opciju -v za detaljniji izlaz
# lspci -v
I upotrijebite double v ili tripple v za verby verbose output:
# lspci -vvv
Ili isprobajte opciju -mm za izlazni format čitljiv skriptom.
# lspci -mm
Da biste vidjeli koji se pokretački program jezgre koristi za svaku opciju pokretanja -k.
Mnogi moji uređaji koriste virtio-pci upravljački program.
I na kraju, možete čak vidjeti heksadecimalni dump "standardnog dijela prostora za konfiguraciju" za svaki PCI uređaj. Trebali biste biti pravi haker jezgre da biste shvatili kako koristiti te informacije. -x opcija je ono što vam daje izlaz za dump.
# lspci -x
Zaključak
Naredba lspci je standardna Linux naredba koja se može koristiti za popisivanje podataka o PCI povezanim uređajima na vašem sustavu. Ovo može biti korisno da znate koju hardversku perifernu opremu imate. Također je vrlo korisno za programere, tvorce upravljačkih programa uređaja, ljude niskog nivoa za traženje informacija o uređajima, upravljačkim programima i sustavu. Uživajte u korištenju lspci.