Несколько месяцев назад мне пришлось написать небольшой инструмент для программирования eeprom карты rtl8139. Это, в основном, инструмент rtl8139-diag, урезанный для чтения/записи eeprom.читать чип-id от pci-/pcie-card
Этот инструмент должен быть расширен, чтобы иметь возможность запрограммировать eeprom карт rtl8101. Это не было проблемой, так как интерфейс к eeprom похож на интерфейс rtl8139. Собственно, единственное различие - это содержимое eeprom-файла.
Что я хочу реализовать - это автоматическое обнаружение, которое проверяет, соответствует ли карта в указанном портовом адресе rtl8139 или rtl8101 и выбирает подходящий eeprom-dump. Я не могу определить разницу этих чипов, читая eeprom, поскольку карты, которые нужно запрограммировать, являются «девственными», а содержание eeprom в основном 0xffff
.
Я заметил, что Linux всегда загружает драйвер установки для этих карт, независимо от содержимого eeprom. Поэтому я думаю, что мне просто нужно прочитать чип-идентификатор карты.
Как это сделать?
Это было бы решением, если бы я мог изменить среду, вызывающую программу (вызов lspci, regexp для получения элементарных данных, вызов программы с коммутатором), но, к сожалению, я должен реализовать автоматическое обнаружение внутри инструмента. – flokra
Затем прочитайте файлы '/ sys' из программы. Если это не сработает, вам нужно объяснить ограничения больше. – retracile
Спасибо, что сделаю. Мне, возможно, придется сканировать все устройства на свой ID и IO-порт, но все в порядке. – flokra