【问题标题】:read chip-id from pci- / pcie-card从 pci- / pcie-card 读取芯片 ID
【发布时间】:2009-08-18 21:22:40
【问题描述】:

几个月前,我不得不编写一个小工具来对 rtl8139 卡的 eeprom 进行编程。它基本上是 rtl8139-diag 工具被剥离来读取/写入 eeprom。

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

我想要实现的是自动检测,检查给定端口地址的卡是否是 rtl8139 或 rtl8101 并选择合适的 eeprom-dump。我无法通过读出 eeprom 来确定这些芯片的区别,因为要编程的卡是“处女”并且 eeprom-contents 基本上是0xffff

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

我该怎么做?

【问题讨论】:

    标签: c linux detection hardware-interface pci-bus


    【解决方案1】:

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

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

    -n 选项将为您提供原始数字,如果您正在编写脚本,这可能会更有帮助。

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

    【讨论】:

    • 这将是一个解决方案,如果我可以更改调用程序的环境(调用 lspci,正则表达式以获取芯片 ID,使用 switch 调用程序),但不幸的是我必须实现自动检测在工具内部。
    • 然后从程序中读取/sys 文件。如果这不起作用,您需要进一步解释限制条件。
    • 谢谢,这样就可以了。我可能需要扫描所有设备的 id 和 IO-Port,但这没关系。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2018-01-04
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多