lettura chip id da PCI / PCIe-card
-
18-09-2019 - |
Domanda
Alcuni mesi fa ho dovuto scrivere un piccolo strumento per programmare l'eeprom di un rtl8139-card. E 'fondamentalmente la rtl8139-diag attrezzo ridotta per leggere / scrivere l'EEPROM.
Questo strumento deve essere estendere a essere in grado di programmare l'eeprom di RTL8101-cards ora. Questo non era un problema, come interfaccia nella EEPROM è simile a quella del rtl8139. In realtà, l'unica differenza è il contenuto della EEPROM-file.
Quello che voglio implementare è un rilevamento automatico che controlla, se la carta alla data porta-indirizzo è un rtl8139 o RTL8101 e seleziona il raccordo eeprom-dump. Non è possibile determinare la differenza di questi chip dalla lettura della EEPROM come carte da programmare sono 'vergine' e EEPROM-contenuti è fondamentalmente 0xffff
.
Ho notato, che Linux carica sempre il driver adatta per queste schede, indipendentemente dal contenuto della EEPROM. Quindi penso, che non mi resta che leggere il chip-id della scheda.
Come faccio a farlo?
Soluzione
Credo che si possono trovare lspci
o lspci -vv
vi aiuterà. (Potrebbe essere necessario essere root.)
Cioè, se l'ID PCI si trova nella carta, e non determinato dalla EEPROM, si dovrebbe essere in grado di utilizzare lspci
per ottenere id PCI della scheda e determinare quale carta si sta lavorando.
L'opzione -n
vi darà i numeri grezzi, che sarà probabilmente più utile se si sta script questo.
In alternativa, si poteva leggere da / sys / devices / pci * / * / dispositivo e fornitore di trovare quei valori.