считать чип-идентификатор с pci-/pcie-карты

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

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

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

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

Как я могу это сделать?


person Community    schedule 18.08.2009    source источник


Ответы (1)


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

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

Параметр -n даст вам необработанные числа, которые, вероятно, будут более полезными, если вы пишете это в сценарии.

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

person retracile    schedule 18.08.2009
comment
Это было бы решением, если бы я мог изменить среду, вызывающую программу (вызов lspci, regexp для получения чипа, вызов программы с переключателем), но, к сожалению, мне нужно реализовать автоматическое определение внутри инструмента. - person ; 19.08.2009
comment
Затем прочитайте файлы /sys из программы. Если это не сработает, вам нужно больше объяснить ограничения. - person retracile; 19.08.2009
comment
Спасибо, так и будет. Возможно, мне придется сканировать все устройства на предмет их идентификатора и порта ввода-вывода, но это нормально. - person ; 19.08.2009