PCI -verktøy i Linux

PCI -verktøy i Linux

PCI står for perifer komponent sammenkobling, er en protokoll som brukes til å koble periferiutstyr (DDR, UART, USB osv.) Med CPU -system på tidlige dager datamaskiner eller arbeidsstasjoner. Dette var protokollen definert av Intel for sin egen arkitekturutvikling. I dagens tid brukes PCI fortsatt som systembuss på PC -ene eller arbeidsstasjoner basert på Intel -arkitektur.

I dette forfatterskapet vil vi gå gjennom noen nyttige kommandoer som brukeren kan kjøre for å utforske PCI på Linux -systemer. LSPCI og SETPCI er stort sett brukte kommandoer i Linux PCI -samfunnet. Vi vil diskutere få eksempler og bruke tilfeller av disse kommandoene.

Før vi begynner med kommandoene, la oss utforske lite på Linux -baserte PCI -systemer. Et Linux -system består vanligvis av maskinvare- og programvarekomponenter. Maskinvaredel vil være basert på noe arkitektur, si x86. X86 er arkitekturen definert av Intel. Det er flere periferiutstyr i maskinvaren: CPU, DDR, USB og UART for å nevne få. Dette er alle maskinvarekomponentene som trengs for at en protokoll skal kommunisere. Det er der PCI kommer til å spille. PCI er settet med regler/retningslinjer Alle komponentene må følge for å kommunisere med hverandre.

Nå er alle maskinvarekomponentene koblet til PCI, men dette er fremdeles ikke nok. Systemet er fremdeles ikke komplett og kan ikke brukes. Et viktig stykke mangler, jeg.e. Programvare. Programvarekomponent vil ha BIOS, bootloader og OS. Alle disse komponentene skal installeres på maskinvaren.

Programvarekomponenter vil ha den nødvendige programvaren for å initialisere PCI og aktivere kommandoene for brukeren. Når OS er installert på systemet, vil LSPCI- og SETPCI -kommandoer være tilgjengelig.

La oss ta et eksempel på Ubuntu, som er Linux -basert OS -distribusjon. Når Ubuntu er installert på X86 -baserte maskinvare, skal LSPCI og SETPCI -kommandoer være tilgjengelige som standard. Personlige datamaskiner er x86 -baserte systemer. Hvis Ubuntu er installert på dem, er dette systemene vi vil diskutere.

Åpne terminalen på Ubuntu og kjør LSPCI -kommandoen. Vi vil se utdataene nedenfor:

På bildet over har kommandoen gitt alle PCI -enhetsdetaljene i systemet. Dette gir den komplette listen over PCI -enheter på dette systemet.

For å gi noen detaljer om de forskjellige typene PCI -enheter, er det 3 typer PCI -enheter: i) rotkompleks ii) endepunktenhet iii) PCI -broer.

Rotkompleks

Dette er rotporten for ethvert PCI -system. Alle endepunktenheter og broer er koblet til rotkomplekset eller rotporten.

Endepunkt

Dette er enhetene som gir en viss sak eller funksjon av endepunkt. For eksempel kommer grafikkortet eller nettverkskortet som er koblet til PCI -sporet på hovedkortet, inn i kategorien endepunktenheter. Hver endepunktenhet kan ha flere funksjoner tilknyttet enheten. Maksimumsfunksjoner støttet av endepunktet kan være 8. Enhver endepunktenhet kan ha funksjonstall fra 1 til 8, indeksering starter fra 0 og går til 78.

Broer

Dette er enhetene som forbinder forskjellige PCI -busser sammen. Anta at i systemet hvis flere busser er til stede, vil disse flere bussene være koblet til broenhetene.

I et hvilket som helst PCI -system vil det generelt sett en rotport eller rotkompleks, og det kan være flere broer og endepunktenheter.

LSPCI -kommandolister Alle endepunktenheter og broer på rotportbroen i.e. Rotkompleks. Generelt er bussnummeret tildelt dette 0. Buss 0 er rotkompleksbussen og primærbussen til systemet. På enkeltbuss kan det være 256 enheter og hver enhet kan ha maksimalt 8 funksjoner. Dette (bussnummeret [B], enhetsnummer [D] og funksjonsnummer [F]) er ofte kjent som BDF -kombinasjonen i PCI -verdenen. BDF -kombinasjon er nok til å finne en hvilken som helst spesifikk enhet i PCI -systemet. Tildeling av disse BDF utføres av BIOS i prosessen kjent som PCI Bus -oppregning. PCI -bussoppregning gjøres av BIOS og BIOS skanner alt bussnummer, enhetsnummer og funksjonsnummer til alle enhetene og befolker dem. LSPCI er verktøyet som dumper denne oppregnet informasjonen til brukerområdet, slik brukeren har bedt om ved å kjøre LSPCI -kommandoen.

I øyeblikksbildet er det flere enheter oppført av LSPCI. La oss ta en eksempellinje for å forstå utgangen gitt av LSPCI:

I denne utgangen kan vi se første oppføringer som 00:00.0.

First 00 står for bussnummeret. Dette gir detaljene på bussnummeret som denne enheten er tilkoblet. Andre 00 etter kolon, representerer enhetsnummeret. Siste siffer etter . [DOT], representerer funksjonsnummeret.

Ja, dette er den samme BDF som vi diskuterte tidligere.

Annen strenginformasjon gir noen detaljer om enheten. Dette er den korte beskrivelsen av enheten. Som eksempelutgangen forteller at dette er vertsbroen og også gir produsentens informasjon.

Alle verdiene i dette eksemplet er 0, det betyr ikke at disse alltid vil være 0. La oss ta et annet eksempel med noen forskjellige verdier:

I dette eksemplet kan vi se bussnummeret som 2 for SATA -kontroller og 3 for Ethernet Controller -enhet. Enhetsnumre er 01 for SATA -kontroller og 00 for Ethernet -kontroller. Begge enhetene har funksjonsnummer som 0.

Etter BDF er det beskrivelsen av PCI -enheten.

Så langt har vi diskutert standardutgangen til kommandoen i.e. Bare utførelse av LSPCI -kommandoen. Denne kommandoen har også alternativer som kan sendes til kommandoen for å gi noen flere detaljer om enheten. Hvis det kreves noe formatering av utdataene, er det også alternativer. La oss utforske et alternativ av kommandoen. Komplett liste over alternativer kan sees på mannens side av kommandoen. Bare for å bli kjent med de mest brukte alternativene, la oss ta få eksempler.

For å liste opp enheten og leverandør -IDen til PCI -enhetene, kan -NNN -alternativet brukes.

Leverandør -ID og enhets -ID er tildelt av PCI SIG Group. PCI Sig er gruppen som jobber for utvikling av standarder for PCI og dens forbedringer. De definerer forbedringene og nye versjonene av PCI for å matche den teknologiske utviklingen av systemet.

I eksempelutgangen kan vi se [Xxxx: xxxx], I alle linjene. De første 4 sifrene er leverandør -ID og 4 sifre etter tykktarmen er enhets -ID. For den første linjens utgangsleverandør -ID er 8086, som er leverandør -IDen som er tildelt Intel. Andre 4 sifre etter kolon I.e. 7190 er enhets -ID.

Hvis vi ønsker å liste opp enheten basert på en bestemt enhets -ID, kan LSPCI med -d -alternativet brukes.

LSPCI -D: 7190, Kommandoen vil gi informasjonen om enheten med enhets -ID 7190. Kommandoen har bare gitt informasjonen på enkelt enhet.

Eksempelutgang er som følger:

Hvis BDF er kjent for noen enhet, kan LSPCI brukes til å få informasjonen til den spesifikke enheten. La oss holde oss til det samme eksemplet på BDF som 00:00.0, -S -alternativet gir muligheten til å hente informasjonen til enheten.

LSPCI -S 00:00.0, Gir informasjonen på enheten som er koblet til bussnummeret 0 og enheten og funksjonen til enheten er 0.

LSPCI -VVV -alternativer gir den ordinære informasjonen til enheten. Den leser konfigurasjonsplassen til enheten og skriver ut informasjonen til enheten i detaljert format. Dette alternativet kan brukes i kombinasjon av -d eller -s -alternativet. Kombinert bruk av -s eller -D og -VVV vil gi detaljene på den spesifikke enheten.

Eksempelutganger er som følger:

LSPCI -VVV -S 00:00.0
LSPCI -VVV -D: 7190

-x Alternativ Gir konfigurasjonsplassdetaljene til enheten i heksadesimal format.

LSPCI -VT -alternativet kan brukes til å gi treet som utgang fra PCI -enhetene. Følgende er utgangen jeg har i systemet mitt:

Setpci -kommando I Linux gir også noen måter å få tilgang til/endre konfigurasjonsplassen til PCI -enhetene. For å få leverandør -IDen til PCI -enheten, kan vi bruke kommandoen som; setpci -S 00:00.0 0.w

Kommandoen vil skrive ut ordet i.e. 2 byte fra forskyvning 0 av BDF som 00:00.0. Vi bør få utdataene som 8086.

Enhets -ID er de to byte til stede ved forskyvning 2 etter leverandør -ID. For å få enhets -ID, bør kommandoen være setpci -s 00:00.0 2.w

SETPCI -kommandoen kan brukes til å endre innholdet i konfigurasjonsplassen. Bare forutsetning for dette er at konfigurasjonsfeltet skal skrives i stand til. Noen av enhetene har som standard bussmester deaktivert. For å aktivere bussmesteringen, skal til forskyvningsverdi på 2 skrives. For å aktivere buss mestring av en hvilken som helst enhet, er kommando som kan brukes:

setpci -S 00:01.0 4.W = 2 ; Denne kommandoen vil aktivere bussens mestring og dermed kan du få tilgang til barminneområde.

Konklusjon

Vi har diskutert den mest populære LSPCI -kommandoen i Linux og dens ofte brukte alternativer. Vi berørte en base på få grunnleggende om PCI -konsepter som BDF, typer PCI -enheter osv. Vi har også diskutert et typisk PCI -system med få eksempler. Vi har gått gjennom få eksempler på eksempler og bruk av LSPCI -kommandoen. Vi har sett litt på setpci og et par brukseksempler på setpci. Med all denne diskusjonen, la oss konkludere med dette emnet.