V tomto článku vysvetlíme základy PCI, PCIe a príkazu lspci na zobrazenie informácií o vašom systéme.
Čo je to PCI?
PCI alebo Peripheral Component Interconnect je rozhranie na pridanie ďalších hardvérových komponentov do počítačového systému. PCIe alebo PCI Express je aktualizovaný štandard, ktorý sa dnes používa. Povedzme napríklad, že chcete do svojho počítača pridať ethernetovú kartu, aby mala prístup na internet a mohla si vymieňať údaje. Karta potrebuje na komunikáciu so zvyškom interného systému protokol. Štandardným rozhraním použitým na pridanie tejto karty do vášho systému môže byť PCI. Aby ste ju mohli v jadre používať, stále potrebujete ovládač pre túto kartu, avšak PCI je slot a zbernica a rozhranie, ktoré sa použijú na pridanie hardvéru do systému so štandardným rozhraním. Vytvorenie PCI linuxového ovládača bude nasledovať niekoľko štandardných rozhraní, ktoré nájdete v dokumentácii k vytvoreniu Ovládač PCI linux tu. Z nižšie uvedenej štruktúry môžete vidieť štandardné metódy, ktoré sa musia implementovať. Metódy ako napr sonda, odstrániť, pozastaviť, pokračovať, atď.
struct pci_driveruzol struct list_head;
const char * meno;
const struct pci_device_id * id_table;
int (* sonda) (struct pci_dev * dev, const struct pci_device_id * id);
void (* remove) (struct pci_dev * dev);
int (* pozastaviť) (struct pci_dev * dev, pm_message_t state);
int (* resume) (struct pci_dev * dev);
void (* vypnutie) (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 ** skupiny;
ovládač struct device_driver;
struct pci_dynids dynidy;
;
Rýchlosti a použitia PCI
PCI 3.0 môže spustiť dáta až 1 GB / s na dráhu. Rôzne zariadenia môžu mať viac ako jeden jazdný pruh, takže je možné, že jednotlivé zariadenia môžu mať rýchlosť prenosu dát viac gigabajtov. Tieto čísla sa neustále zlepšujú, pretože vychádzajú nové verzie špecifikácií a vychádza nový hardvér, takže vždy vyhľadajte najnovšie a najrýchlejšie, ktoré nájdete. Medzi typy komponentov a pomôcok, ktoré si môžete kúpiť, ktoré sa pripájajú k rozhraniu PCI, patria: adaptéry WIFI, Bluetooth, karty NVME Solid State Storage, grafické karty a ďalšie.
Skúmanie príkazu lspci
Vytvoril som Ubuntu 19.04 inštancie v cloude Google a bude teraz spustená lspci príkaz a uvidíme, čo sa stane.
Uvidíte jeden riadok na zariadenie s číselným kódom a slovným popisom zariadenia. V tomto výstupe je na každom riadku skutočne zobrazených 5 polí: Slot, Class, Vendor, Device a Revision.
Takže prelomenie prvého riadku, čo máme:
SLOT: 00:00.0
Trieda: Hostiteľský most
Predajca: Intel Corporation
Zariadenie: 440FX - 82441FX PMC
Revízia: 02
A pri pohľade na Slot 00:04.0, to je náš ethernetový radič, ktorý sa javí ako virtuálne zariadenie ako súčasť virtuálnej mágie nasadenia cloudu spoločnosti Google.
Ak chcete získať podrobnejšie a podrobné informácie o každom slote PCI, spustite nasledujúci príkaz:
# lspci -vmm
Tento príkaz rozdelí každý riadok na polia jeho komponentov a umožní vám analyzovať každé zariadenie popisnejšími štítkami.
Môžete tiež vyskúšať voľbu -v pre podrobnejší výstup
# lspci -v
A použite verbálny výstup double v alebo tripple v:
# lspci -vvv
Alebo vyskúšajte voľbu -mm pre výstupný formát čitateľný skriptom.
# lspci -mm
Ak chcete zistiť, ktorý ovládač jadra sa používa pre jednotlivé zariadenia, spustite voľbu -k.
Mnoho mojich zariadení používa ovládač virtio-pci.
Nakoniec môžete dokonca vidieť hexadecimálny výpis „štandardnej časti konfiguračného priestoru“ pre každé zariadenie PCI. Mali by ste byť skutočným jadrovým hackerom, aby ste zistili, ako tieto informácie použiť. -x je to, čo vám dáva výstup z výpisu.
# lspci -x
Záver
Príkaz lspci je štandardný príkaz systému Linux, ktorý sa dá použiť na výpis informácií o zariadeniach pripojených k PCI vo vašom systéme. To môže byť užitočné vedieť, aké hardvérové periférie máte. Je tiež veľmi užitočný pre vývojárov, tvorcov ovládačov zariadení, ľudí na nízkej úrovni systému, ktorí majú záujem o informácie o zariadeniach, ovládačoch a systéme. Príjemné používanie lspci.