PCI sta per l'interconnessione dei componenti periferici, è un protocollo utilizzato per collegare le periferiche (DDR, UART, USB ecc.) Con il sistema CPU sui computer o workstation. Questo era il protocollo definito da Intel per il proprio sviluppo dell'architettura. Ai tempi in corso, PCI è ancora utilizzato come bus di sistema su PC o workstations basato sull'architettura Intel.
In questa scrittura, passeremo attraverso alcuni comandi utili che l'utente può eseguire per esplorare PCI sui sistemi Linux. LSPCI e SETPCI sono comandi principalmente utilizzati nella comunità PCI Linux. Discuteremo pochi esempi e i casi di utilizzo di questi comandi.
Prima di iniziare con i comandi, esploriamo poco sui sistemi PCI basati su Linux. In genere, un sistema Linux è costituito da componenti hardware e software. La parte hardware si baserà su alcune architettura, diciamo x86. X86 è l'architettura definita da Intel. Ci sono diverse periferiche nell'hardware: CPU, DDR, USB e UART per nominare pochi. Questi sono tutti i componenti hardware necessari per comunicare un protocollo. È qui che viene a giocare PCI. PCI è l'insieme di regole/linee guida che tutti i componenti devono seguire per comunicare tra loro.
Ora tutti i componenti hardware sono collegati al PCI ma questo non è ancora sufficiente. Il sistema non è ancora completo e non può essere utilizzato. Manca un pezzo importante, io.e. Software. Il componente software avrà il BIOS, il bootloader e il sistema operativo. Tutti questi componenti dovrebbero essere installati sull'hardware.
I componenti del software avranno il software necessario per inizializzare PCI e abilitare i comandi per l'utente. Una volta installato il sistema operativo sul sistema, saranno disponibili comandi LSPCI e SETPCI.
Facciamo un esempio di Ubuntu, che è distribuzione del sistema operativo basato su Linux. Una volta installato l'Ubuntu su hardware basato su X86, i comandi LSPCI e SETPCI dovrebbero essere disponibili per impostazione predefinita. I personal computer sono sistemi basati su X86. Se Ubuntu è installato su di loro, allora questi sono i sistemi di cui discuteremo.
Apri il terminale su Ubuntu ed esegui il comando LSPCI. Vedremo l'output seguente:
Nell'immagine sopra, il comando ha fornito tutti i dettagli dei dispositivi PCI del sistema. Questo fornisce l'elenco completo di dispositivi PCI su questo sistema.
Per fornire alcuni dettagli sui diversi tipi di dispositivi PCI, esistono 3 tipi di dispositivi PCI: i) complesso radice ii) dispositivo endpoint III) Bridges PCI.
Complesso radice
Questa è la porta di root per qualsiasi sistema PCI. Tutti i dispositivi e endpoint e i ponti sono collegati alla porta radice o alla radice.
Endpoint
Questi sono i dispositivi che forniscono un caso d'uso e una funzione di utilizzo endpoint. Ad esempio, la scheda grafica o la scheda di rete che è collegata allo slot PCI sulla scheda madre, entra nella categoria dei dispositivi endpoint. Ogni dispositivo endpoint può avere più funzioni associate al dispositivo. Le funzioni massime supportate dall'endpoint possono essere 8. Qualsiasi dispositivo endpoint può avere un conteggio delle funzioni da 1 a 8, l'indicizzazione parte da 0 e va fino a 78.
Ponti
Questi sono i dispositivi che collegano insieme bus PCI diversi. Supponiamo che nel sistema se siano presenti più bus, questi più bus saranno collegati ai dispositivi bridge.
In qualsiasi sistema PCI, generalmente ci sarà 1 porta radice o dispositivo complesso di root e ci possono essere più ponti e dispositivi endpoint.
Elenchi di comandi LSPCI Tutti i dispositivi endpoint e i ponti sul ponte delle porte root i.e. Complesso radice. Generalmente, il numero del bus assegnato a questo è 0. Il bus 0 è il bus complesso radice e il bus primario del sistema. Su singolo bus, possono esserci 256 dispositivi e ogni dispositivo può avere massimo 8 funzioni. Questo (numero bus [b], numero di dispositivo [d] e numero di funzione [f]) è comunemente noto come la combinazione BDF nel mondo PCI. La combinazione BDF è sufficiente per individuare qualsiasi dispositivo specifico nel sistema PCI. L'assegnazione di questi BDF è effettuata dal BIOS nel processo noto come enumerazione del bus PCI. L'enumerazione del bus PCI viene eseguita dal BIOS e BIOS scansioni tutto il numero del bus, il numero del dispositivo e il numero di funzione a tutti i dispositivi e popolarli. LSPCI è l'utilità che scarica queste informazioni elencate nello spazio dell'utente come richiesto dall'utente eseguendo il comando LSPCI.
Nell'istantanea, ci sono più dispositivi elencati da LSPCI. Prendiamo una linea di esempio per comprendere l'output fornito da LSPCI:
In questo output possiamo vedere le prime voci come 00:00.0.
Il primo 00 sta per il numero dell'autobus. Ciò fornisce i dettagli sul numero del bus su cui è collegato questo dispositivo. Secondo 00 dopo il colon, rappresenta il numero del dispositivo. Ultima cifra dopo . [dot], rappresenta il numero di funzione.
Sì, questo è lo stesso BDF di cui abbiamo discusso in precedenza.
Altre informazioni sulla stringa forniscono alcuni dettagli del dispositivo. Questa è la breve descrizione del dispositivo. Come l'output di esempio dice che questo è il ponte host e fornisce anche le informazioni del produttore.
Tutti i valori in questo esempio sono 0, ciò non significa che questi saranno sempre 0. Facciamo un altro esempio con alcuni valori diversi:
In questo esempio possiamo vedere il numero del bus come 2 per il controller SATA e 3 per il dispositivo controller Ethernet. I numeri del dispositivo sono 01 per il controller SATA e 00 per il controller Ethernet. Entrambi i dispositivi hanno il numero di funzione come 0.
Dopo il BDF, c'è la descrizione del dispositivo PCI.
Finora abbiamo discusso dell'output predefinito del comando i.e. Solo l'esecuzione del comando LSPCI. Questo comando ha anche opzioni che possono essere passate al comando per fornire ulteriori dettagli sul dispositivo. Se è richiesta una formattazione dell'output, ci sono anche opzioni. Esploriamo un'opzione del comando. L'elenco completo di opzioni è possibile visualizzare sulla pagina man del comando. Solo per familiarizzare con le opzioni più comunemente usate, facciamo alcuni esempi.
Per elencare l'ID dispositivo e fornitore dei dispositivi PCI, è possibile utilizzare l'opzione NNN.
L'ID fornitore e l'ID del dispositivo sono assegnati dal gruppo PCI SIG. PCI SIG è il gruppo che lavora per lo sviluppo di standard di PCI e i suoi miglioramenti. Definiscono i miglioramenti e le nuove versioni del PCI per abbinare gli sviluppi tecnologici del sistema.
Nell'output di esempio, possiamo vedere [Xxxx: xxxx], In tutte le linee. Le prime 4 cifre sono l'ID fornitore e 4 cifre dopo il colon sono l'ID del dispositivo. Per il primo ID fornitore di output è 8086, che è l'ID fornitore assegnato a Intel. Seconda 4 cifre dopo il colon I.e. 7190 è l'ID del dispositivo.
Se vogliamo elencare il dispositivo in base a qualsiasi ID dispositivo particolare, è possibile utilizzare LSPCI con opzione -D.
LSPCI -D: 7190, Il comando fornirà le informazioni del dispositivo con ID dispositivo 7190. Il comando ha fornito solo le informazioni sul singolo dispositivo.
L'output di esempio è il seguente:
Se è noto BDF di qualsiasi dispositivo, LSPCI può essere utilizzato per ottenere le informazioni del dispositivo specifico. Attendiamo allo stesso esempio di BDF di 00:00.L'opzione 0, -s fornisce la capacità di recuperare le informazioni del dispositivo.
LSPCI -S 00:00.0, Fornisce le informazioni sul dispositivo collegato al numero del bus 0 e il dispositivo e la funzione del dispositivo è 0.
Opzioni LSPCI -VVV Fornisce le informazioni verbose del dispositivo. Legge lo spazio di configurazione del dispositivo e stampa le informazioni del dispositivo nel formato dettagliato. Questa opzione può essere utilizzata in combinazione dell'opzione -D o -s. L'uso combinato di -s o -d e -vvv fornirà i dettagli sul dispositivo specifico.
Gli output di esempio sono i seguenti:
lspci -vvv -s 00:00.0
lspci -vvv -d: 7190
-X opzione Fornisce i dettagli dello spazio di configurazione del dispositivo in formato esadecimale.
Opzione LSPCI -VT Può essere utilizzato per fornire l'albero come l'uscita dei dispositivi PCI. Di seguito è riportato l'output che ho nel mio sistema:
Comando setPCI In Linux fornisce anche alcuni modi per accedere/modificare lo spazio di configurazione dei dispositivi PCI. Per ottenere l'ID fornitore del dispositivo PCI, possiamo utilizzare il comando come; SetPci -S 00:00.0 0.w
Il comando stamperà la parola i.e. 2 byte dall'offset 0 del BDF come 00:00.0. Dovremmo ottenere l'output come 8086.
ID del dispositivo sono i 2 byte presenti all'offset 2 dopo l'ID fornitore. Per ottenere l'ID dispositivo, il comando dovrebbe essere setPci -s 00:00.0 2.w
Il comando setPCI può essere utilizzato per modificare il contenuto dello spazio di configurazione. L'unico prerequisito per questo è che il campo di configurazione dovrebbe essere in grado di scrivere. Alcuni dei dispositivi hanno per impostazione predefinita Master Bus disabilitato. Per abilitare il mastering del bus, al valore offset di 2 dovrebbe essere scritto. Per abilitare il padronanza del bus di qualsiasi dispositivo, il comando che può essere utilizzato è:
SetPci -S 00:01.0 4.W = 2 ; Questo comando consentirà il mastering del bus e quindi è possibile accedere.
Conclusione
Abbiamo discusso del comando LSPCI più popolare in Linux e delle sue opzioni comunemente usate. Abbiamo toccato una base su poche basi di concetti PCI come BDF, tipi di dispositivi PCI, ecc. Abbiamo anche discusso di un tipico sistema PCI con pochi esempi. Abbiamo esaminato alcuni esempi di esempio e l'uso del comando LSPCI. Abbiamo visto un po 'su setPCI e un paio di esempi di utilizzo di setPCI. Con tutta questa discussione, concludiamo su questo argomento.