从pci- / pcie-card读取芯片ID

几个月前,我不得不写一个小工具来编写rtl8139卡的eeprom。 这基本上是剔除 /读写eeprom的rtl8139-diag工具。

这个工具必须扩展到现在可以编程rtl8101卡的eeprom。 这不是一个问题,因为eeprom的接口类似于rtl8139的接口。 其实唯一的区别就是eeprom文件的内容。

我想要实现的是一个自动检测,如果在给定的端口地址的卡是rtl8139或rtl8101,并select拟合的eeprom-dump,则会进行检查。 我不能通过读出eeprom来确定这些芯片的差异,因为要编程的卡是'virgin',eeprom的内容基本上是0xffff

我注意到,无论eeprom的内容是什么,Linux都会加载这些卡的适配驱动程序。 所以我想,我只需要读取卡的芯片ID。

我怎么做?

我想你可能会发现lspcilspci -vv会帮助你。 (您可能需要成为root用户)

也就是说,如果在卡上设置了PCI标识,而不是从eeprom中确定,则应该能够使用lspci获取卡的PCI标识,并确定您正在使用的卡。

-n选项会给你原始数字,如果你正在编写脚本,这可能会更有帮助。

或者,您可以从/ sys / devices / pci * / * / device和vendor中读取这些值。