几个月前,我不得不编写一个小工具来对rtl8139卡的eeprom进行编程。它基本上是精简的rtl8139-diag工具,用来读/写eeprom。
该工具必须进行扩展,以便现在能够对RTL8101卡的eeprom进行编程。这不是问题,因为eeprom的接口类似于rtl8139的接口。实际上,唯一的区别是eeprom-file的内容。
我想实现的是一个自动检测,它检查给定端口地址的卡是rtl8139还是rtl8101,并选择合适的eeprom转储。我不能通过读出eeprom来确定这些芯片的区别,因为要编程的卡是“原始的”,并且eeprom内容基本上是0xffff
的。
我注意到,Linux总是为这些卡加载合适的驱动程序,而不管eeprom的内容是什么。所以我认为,我只需要读取卡的芯片id。
我该怎么做?
发布于 2009-08-18 21:25:41
我想你会发现lspci
或lspci -vv
会对你有所帮助。(您可能需要是root用户。)
也就是说,如果PCI是在卡中设置的,而不是从eeprom中确定的,那么您应该能够使用lspci
来获取卡的PCI,并确定您正在使用的是哪一张卡。
-n
选项将为您提供原始数字,如果您正在编写脚本,这可能会更有帮助。
或者,您可以从/sys/devices/pci*/*/device and vendor中读取以查找这些值。
https://stackoverflow.com/questions/1296603
复制相似问题