I den här artikeln kommer vi att förklara grunderna för PCI, PCIe och lspci-kommandot för att visa information på ditt system.
Vad är PCI?
PCI, eller Peripheral Component Interconnect är ett gränssnitt för att lägga till ytterligare hårdvarukomponenter i ett datorsystem. PCIe eller PCI Express är den uppdaterade standarden som används idag. Låt oss till exempel säga att du vill lägga till ett Ethernet-kort på din dator så att det kan komma åt internet och utbyta data. Kortet behöver ett protokoll för att kommunicera med resten av det interna systemet, PCI kan vara standardgränssnittet som används för att lägga till detta kort i ditt system. Du behöver fortfarande en drivrutin för det här kortet för att kärnan ska kunna använda det, men PCI är kortplatsen och buss och gränssnitt som kommer att användas för att lägga till hårdvaran i systemet med ett standardgränssnitt. Skapandet av en PCI Linux-drivrutin följer några standardgränssnitt som du kan se dokumentation för att skapa en PCI Linux-drivrutin här. Du kan se från strukturen nedan de standardmetoder som måste implementeras. Metoder som sond, avlägsna, uppskjuta, återuppta, etc.
struct pci_driverstruct list_head nod;
const char * namn;
const struct pci_device_id * id_table;
int (* probe) (struct pci_dev * dev, const struct pci_device_id * id);
ogiltigt (* ta bort) (struct pci_dev * dev);
int (* suspend) (struct pci_dev * dev, pm_message_t state);
int (* CV) (struct pci_dev * dev);
ogiltigt (* avstängning) (struct pci_dev * dev);
int (* sriov_configure) (struct pci_dev * dev, int num_vfs);
const struct pci_error_handlers * err_handler;
const struct attribut_grupp ** grupper;
struct device_driver driver;
struct pci_dynids dynids;
;
PCI-hastigheter och användningsområden
PCI 3.0 kan köra data upp till 1 GB / sek per fil. Olika enheter kan ha mer än en fil, så det är möjligt att enskilda enheter kan ha dataöverföringshastighet på flera gigabyte. Dessa siffror förbättras alltid när nya versioner av specifikationen kommer ut och ny hårdvara kommer ut, så kolla alltid efter det senaste och snabbaste du kan hitta. Typer av komponenter och prylar som du kan köpa som ansluts till ett PCI-gränssnitt inkluderar: WIFI-adaptrar, Bluetooth, NVME Solid State Storage-kort, Grafikkort och mer.
Utforska lspci-kommandot
Jag har skapat en Ubuntu 19.04 instans på Google moln och kommer nu att köra lspci kommandot och se vad som händer.
Vad du ser är en rad per enhet med en numerisk kod och en muntlig beskrivning av enheten. Det finns faktiskt 5 fält i denna utgång per rad: Slot, Class, Vendor, Device och Revision.
Så bryta ner den första raden vad vi har:
SPÅR: 00:00.0
Klass: Värdbro
Säljare: Intel Corporation
Enhet: 440FX - 82441FX PMC
Revision: 02
Och tittar på Slot 00:04.0 som är vår Ethernet-kontroller, som verkar vara en virtuell enhet som en del av den virtuella magin i Googles molndistribution.
För att få mer detaljerad, detaljerad information om varje PCI-kortplats, kör följande kommando:
# lspci -vmm
Detta kommando kommer att dela upp varje rad i dess komponentfält och låta dig analysera varje enhet med mer beskrivande etiketter.
Du kan också prova alternativet -v för mer detaljerad produktion
# lspci -v
Och använd dubbel v eller tripple v för verby verbose output:
# lspci -vvv
Eller prova -mm-alternativet för skriptläsbart utdataformat.
# lspci -mm
För att se vilken kärndrivrutin som används för varje enhetskör -k-alternativ.
Många av mina enheter använder virtio-pci-drivrutin.
Slutligen kan du till och med se en hexadecimal dumpning av "standarddelen av konfigurationsutrymmet" för varje PCI-enhet. Du bör vara en riktig kärnhacker för att ta reda på hur du använder den informationen. -x-alternativet är det som ger dig dumpningsutmatningen.
# lspci -x
Slutsats
Kommandot lspci är ett standard Linux-kommando som kan användas för att lista information om PCI-anslutna enheter på ditt system. Detta kan vara användbart för att veta vilka hårdvaruutrustning du har. Det är också mycket användbart för utvecklare, skapare av enhetsdrivrutiner, system på låg nivå för att fråga information om enheterna, drivrutinerna och systemet. Njut av att använda lspci.