几个月前,我不得不编写一个小工具来对rtl8139卡的eeprom进行编程。从本质上讲,这是rtl8139-diag工具的简化,用于读取/写入eeprom。

必须扩展此工具才能现在对rtl8101卡的eeprom进行编程。这不是问题,因为eeprom的接口(interface)类似于rtl8139的接口(interface)。实际上,唯一的区别是eeprom文件的内容。

我要实现的是一种自动检测功能,该功能可以检查给定端口地址处的卡是rtl8139还是rtl8101,并选择合适的eeprom转储。我无法通过读出eeprom来确定这些芯片的差异,因为要编程的卡是“原始”卡,并且eeprom的内容基本上是0xffff

我注意到,无论eeprom的内容如何,​​Linux总是为这些卡加载适配驱动程序。所以我认为,我只需要读取卡的芯片ID。

我怎么做?

最佳答案

我认为您可能会发现lspcilspci -vv将对您有所帮助。 (您可能需要是root。)

也就是说,如果PCI卡是在卡中设置的,而不是由eeprom确定的,则您应该能够使用lspci来获取卡的PCI ID并确定要使用的卡。
-n选项将为您提供原始数字,如果您对此编写脚本,则可能会更有用。

或者,您可以从/sys/devices/pci */*/device和供应商处读取以找到这些值。

关于c - 从pci-/pcie卡读取芯片ID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1296603/

10-11 22:07