В тази статия ще обясним основите на PCI, PCIe и командата lspci за показване на информация във вашата система.
Какво е PCI?
PCI или Peripheral Component Interconnect е интерфейс за добавяне на допълнителни хардуерни компоненти към компютърна система. PCIe или PCI Express е актуализираният стандарт, който се използва днес. Да предположим например, че искате да добавите Ethernet карта към компютъра си, за да може той да има достъп до интернет и да обменя данни. Е, картата се нуждае от протокол за комуникация с останалата част от вътрешната система, PCI може да бъде стандартният интерфейс, използван за добавяне на тази карта към вашата система. Все още се нуждаете от драйвер за тази карта, за да може ядрото да я използва, но PCI е слотът и шината и интерфейсът, които ще се използват за добавяне на хардуера в системата със стандартен интерфейс. Създаването на PCI linux драйвер ще следва някои стандартни интерфейси, можете да видите документация за създаване на PCI linux драйвер тук. Можете да видите от структурата по-долу стандартните методи, които трябва да бъдат приложени. Методи като сонда, Премахване, спиране, продължи, и т.н.
struct pci_driverstruct list_head възел;
const char * име;
const struct pci_device_id * id_table;
int (* сонда) (struct pci_dev * dev, const struct pci_device_id * id);
void (* премахване) (struct pci_dev * dev);
int (* суспендиране) (struct pci_dev * dev, pm_message_t състояние);
int (* възобновяване) (struct pci_dev * dev);
void (* изключване) (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 ** групи;
struct driver_driver драйвер;
struct pci_dynids dynids;
;
Скорости и употреба на PCI
PCI 3.0 може да изпълнява данни до 1GB / Sec на лента. Различните устройства могат да имат повече от една лента, така че е възможно отделните устройства да имат мулти-гигабайта скорост на трансфер на данни. Тези цифри винаги се подобряват, тъй като излизат нови версии на спецификацията и излиза нов хардуер, така че винаги проверявайте за най-новите и най-бързите, които можете да намерите. Видовете компоненти и приспособления, които можете да закупите, които се включват в PCI интерфейс, включват: WIFI адаптери, Bluetooth, NVME SSD карти за съхранение, графични карти и други.
Изследване на командата lspci
Създадох Ubuntu 19.04 в облака на Google и сега ще стартира lspci команда и вижте какво се случва.
Това, което виждате, е по един ред на устройство с цифров код и устно описание на устройството. В този изход на ред са показани 5 полета: Slot, Class, Vendor, Device и Revision.
Така че разбивайки първия ред това, което имаме:
СЛОТ: 00:00.0
Клас: Мост на домакина
Доставчик: Intel Corporation
Устройство: 440FX - 82441FX PMC
Ревизия: 02
И гледайки слот 00:04.0, това е нашият Ethernet контролер, който изглежда е виртуално устройство като част от виртуалната магия на облачното внедряване на Google.
За да получите по-подробна, подробна информация за всеки PCI слот, изпълнете следната команда:
# lspci -vmm
Тази команда ще раздели всеки ред на полетата на компонентите и ще ви позволи да анализирате всяко устройство с по-описателни етикети.
Можете също да опитате опцията -v за по-подробен изход
# lspci -v
И използвайте двойно v или тройно v за подробен изходен изход:
# lspci -vvv
Или опитайте опцията -mm за четене на скрипт изходен формат.
# lspci-мм
За да видите кой драйвер на ядрото се използва за всяка опция run -k на устройството.
Много от моите устройства използват virtio-pci драйвер.
И накрая, можете дори да видите шестнадесетичен дъмп на „стандартната част от конфигурационното пространство“ за всяко PCI устройство. Трябва да сте истински хакер на ядрото, за да разберете как да използвате тази информация. -x опцията е това, което ви дава изходния изход.
# lspci -x
Заключение
Командата lspci е стандартна команда на Linux, която може да се използва за изброяване на информация за свързаните с PCI устройства във вашата система. Това може да е полезно, за да знаете какви хардуерни периферни устройства имате. Също така е супер полезно за разработчици, създатели на драйвери за устройства, хора от ниско ниво, за да поискат информация за устройствата, драйверите и системата. Приятно използване на lspci.