2009-08-18 4 views
2

Несколько месяцев назад мне пришлось написать небольшой инструмент для программирования eeprom карты rtl8139. Это, в основном, инструмент rtl8139-diag, урезанный для чтения/записи eeprom.читать чип-id от pci-/pcie-card

Этот инструмент должен быть расширен, чтобы иметь возможность запрограммировать eeprom карт rtl8101. Это не было проблемой, так как интерфейс к eeprom похож на интерфейс rtl8139. Собственно, единственное различие - это содержимое eeprom-файла.

Что я хочу реализовать - это автоматическое обнаружение, которое проверяет, соответствует ли карта в указанном портовом адресе rtl8139 или rtl8101 и выбирает подходящий eeprom-dump. Я не могу определить разницу этих чипов, читая eeprom, поскольку карты, которые нужно запрограммировать, являются «девственными», а содержание eeprom в основном 0xffff.

Я заметил, что Linux всегда загружает драйвер установки для этих карт, независимо от содержимого eeprom. Поэтому я думаю, что мне просто нужно прочитать чип-идентификатор карты.

Как это сделать?

ответ

3

Я думаю, вы найдете lspci или lspci -vv поможет вам. (Возможно, вам придется быть root.)

То есть, если идентификатор PCI установлен на карте и не определен с помощью eeprom, вы можете использовать lspci, чтобы получить идентификатор PCI карты и определить, какая карта вы работаете.

Опция -n предоставит вам необработанные цифры, которые, вероятно, будут более полезными, если вы будете писать сценарии.

В качестве альтернативы вы можете прочитать это/sys/devices/pci */*/device and vendor, чтобы найти эти значения.

+0

Это было бы решением, если бы я мог изменить среду, вызывающую программу (вызов lspci, regexp для получения элементарных данных, вызов программы с коммутатором), но, к сожалению, я должен реализовать автоматическое обнаружение внутри инструмента. – flokra

+1

Затем прочитайте файлы '/ sys' из программы. Если это не сработает, вам нужно объяснить ограничения больше. – retracile

+0

Спасибо, что сделаю. Мне, возможно, придется сканировать все устройства на свой ID и IO-порт, но все в порядке. – flokra