Потеря связи с устройством FPGA - PullRequest
0 голосов
/ 11 ноября 2010

Я пытаюсь отладить несколько странную проблему в драйвере устройства для FPGA-устройства PCIe.Как драйвер устройства, так и образ ПЛИС разрабатываются на месте.

Целевая система - x86, а ОС - fedora 9. Она имеет карту PCIe с FPGA, подключенную только к одному слоту PCIe.Образ FPGA загружается после загрузки из EEPROM.

Драйвер написан таким образом, что он использует /sys/bus/pci/devices/0000:02:00.0/ файлы ресурсов (где 0000: 02: 00.0 - слот PCI карты, содержащей FPGA) для настройки FPGA.

Когда система загружается (или когда она возвращается из режима гибернации), швы соединения FPGA теряются, ифайлы ресурсов отсутствуют.Когда FPGA загружается правильно, все работает нормально (файлы ресурсов есть).Когда система переходит в спящий режим, FPGA выключается.Когда он возвращается из режима гибернации, перед началом инициализации драйвера включается FPGA.

Я подозреваю следующее:

  • ошибка во встроенном программном обеспечении - что-то, связанное с PCIподключите?
  • ошибка в ядре - наименее вероятно, потому что другие карты PCI распознаются нормально.Только
    эта карта PCI создает проблемы

И вопросы:

  • У кого-нибудь были подобные проблемы?
  • Что еще может быть не так?
  • Есть предложения по устранению этой проблемы?

РЕДАКТИРОВАТЬ

Я только что нашел эту ошибку , котораяочень похоже на проблему, с которой я сталкиваюсь.

Ответы [ 2 ]

1 голос
/ 17 ноября 2010

Мне наконец-то удалось отладить мою проблему. Непосредственно перед входом в режим гибернации все процессы, которые все еще используют файлы ресурсов, уничтожаются. По какой-то неизвестной причине один процесс не освободил ресурсы и был убит. У нас есть сторожевой таймер, который запускает все процессы, которые не запущены.

При выходе из режима гибернации этот процесс запускался заново, и поскольку он не мог открыть файлы ресурсов, он снова умер, а затем была объявлена ​​критическая ошибка. Через некоторое время ОС добавила файлы ресурсов, и этот процесс мог продолжаться в обычном режиме.

0 голосов
/ 11 ноября 2010

Карта PCIe должна ответить на сообщение «Кто-нибудь есть» в течение определенного времени. Возможно ли, что ваша карта не отвечает достаточно быстро после спящего режима / сброса?

Без подробностей вашего дизайна трудно что-либо сделать, кроме предположения.

Можете ли вы перечислить различия между системой, работающей и не работающей, то есть, что вы делаете по-другому, чтобы заставить карту работать?

...