Восстановление карты, которая не определяется
Что на самом деле значит «кирпич» для FPGA-карты, почему после плохого битстрима её почти всегда можно оживить через JTAG и в каких редких случаях плата мертва.
Коротко
Если карта перестала определяться после прошивки, кристалл почти никогда не мёртв. При включении FPGA загружает битстрим из SPI flash. С плохим образом конфигурация не завершается, поэтому PCIe endpoint не появляется. Но JTAG не зависит от содержимого flash, так что лечится это почти всегда перепрошивкой.
На странице10
Что здесь значит «кирпич»
В этой связке слово обычно описывает симптом, а не диагноз. Карта больше не появляется как PCIe-устройство, поэтому всё, что дальше по цепочке, не работает. У этого симптома одна частая причина и несколько редких. Частая — во flash лежит образ, из которого FPGA не может успешно сконфигурироваться. Устройство остаётся несконфигурированным и потому невидимым для хоста. Несконфигурированная — не значит повреждённая. Несконфигурированная FPGA — это чип, который ждёт валидный битстрим, а дать ему этот битстрим — штатная операция.
Последовательность включения и где она обрывается
Пять этапов. Зная, на каком из них всё встало, вы понимаете, в чём проблема: в прошивке, в установке карты или в железе.
- 1. Питание слота
- Карта берёт питание из слота PCIe. Нет питания — нет светодиодов, и больше ничего не происходит
- 2. Конфигурация
- FPGA читает SPI flash и загружает битстрим. На повреждённом или неполном образе всё останавливается именно здесь
- 3. Done
- Конфигурация завершается, и логика начинает работать. До этого момента PCIe endpoint не существует
- 4. Link training (согласование линка)
- PCIe-линк согласуется с хостом. Сконфигурированная карта, у которой линк так и не поднимается, — это проблема установки или слота
- 5. Перечисление
- Хост читает конфигурационное пространство, и устройство появляется. Это первый этап, который хоть что-то в Windows может увидеть
Почему JTAG переживает плохой битстрим
JTAG — интерфейс тестирования и отладки, реализованный в самом кремнии. Он поднимается вместе с чипом. Ему всё равно, на какой режим конфигурации настроена плата, и всё равно, что лежит во flash. Именно на этом свойстве держится весь путь восстановления. FPGA может вообще не суметь сконфигурироваться и при этом оставаться доступной по JTAG. На практике программа загружает в FPGA по JTAG небольшой вспомогательный битстрим. Через него программа получает доступ к SPI flash и может её перезаписать. То, что карта не видна со стороны PCIe, ни на что из этого не влияет.
Путь восстановления
Это обычная процедура прошивки, а не какой-то особый режим. Если вы смогли прошить карту один раз, сможете прошить её и снова.
- Полностью выключите игровой ПК, убедитесь, что карта установлена как следует, и включите его снова
- Переставьте USB-кабель в JTAG-порт карты и в задний USB-порт второго ПК
- Закройте всё, что может занимать USB-устройство: ридер, MemProcFS, любую другую программу для прошивки
- Откройте программу прошивки и убедитесь, что она видит устройство и открывает JTAG-цепочку, прежде чем выбирать файл
- Выберите модель FPGA, соответствующую чипу на плате
- Прошейте заведомо рабочий образ именно для этой платы и этого DNA ID, выставив формат BIN
- Дайте прошивке дойти до конца, не трогая компьютер
- Сделайте холодный старт игрового ПК, переставьте кабель в порт данных и снова запустите тест подключения
Как читать симптом
Полезный вопрос — не «окирпичилась ли карта», а «до какого этапа включения она дошла». Таблица ниже сопоставляет симптомы с этапами.
| Симптом | Вероятная причина | Решение |
|---|---|---|
| При включённом игровом ПК вообще не горят светодиоды | Этап 1. Нет питания в слоте: карта не до конца вставлена, слот мёртв или плата действительно повреждена | Переустановите карту в другой слот PCIe при полностью выключенной машине. Если в заведомо рабочем слоте свечения всё равно нет, это один из немногих случаев настоящей аппаратной неисправности |
| Светодиоды горят, но в системе устройства нигде нет | Этап 2. FPGA так и не сконфигурировалась, значит, содержимое flash плохое или неполное | Перепрошейте заведомо рабочий образ через JTAG. Это частый случай, и он восстанавливается |
| Программа прошивки не может открыть JTAG-цепочку | Не тот порт, нет драйвера CH347, устройство занято каким-то процессом или выбрана не та модель | Подключитесь к JTAG-порту, установите драйвер, закройте другие программы, запустите от имени администратора и выберите правильную модель. Доступ к цепочке не зависит от содержимого flash, так что это не кирпич |
| Устройство появляется, но определяется не тем, чем должно, или с кодом ошибки | Этап 5. Конфигурация прошла успешно, значит образ работает — просто это не тот образ, который вам нужен | Убедитесь, что прошивали файл, выданный для этой платы, затем прошейте правильный. С картой всё в порядке |
| Прошивка завершается, но после холодного старта карту всё равно не видно | Образ не соответствует этой плате или этому DNA ID | Сверьте имя файла с заказом и проверьте класс FPGA. Отправьте в поддержку вывод программы, вместо того чтобы прошивать тот же файл в четвёртый раз |
| Вчера работала, сегодня нет, а прошивки в промежутке не было | Прошивка тут почти никогда ни при чём. Обычно это слот, кабель, USB-порт или зависшая карта | Полностью выключите игровой ПК на десять секунд и включите заново (холодный старт). Потом переустановите карту, потом замените кабель. Перепрошивка здесь — не первый шаг |
Когда карта действительно мертва
Такое бывает, и выглядит оно иначе. Обычная причина — физическое повреждение. Погнутые контакты PCIe, вырванное гнездо USB-C, обгоревший компонент или плата, которую вставили в слот на включённой машине. Признак — отказ на этапе 1, а не на этапе 2. Либо светодиоды не горят в слоте, исправность которого вы проверили другой картой, либо JTAG-цепочку не удаётся открыть. Второй случай засчитывается, только если драйвер, порт и выбранная модель правильные, а на карту точно подано питание. Повреждённое содержимое flash таких симптомов не даёт.
Прежде чем признать карту мёртвой
Семь пунктов. Большинство заявленных кирпичей перестают быть кирпичами где-то по ходу этого списка.
- Игровой ПК полностью выключен на десять секунд, затем холодный старт — не перезагрузка
- Карта переустановлена, фиксатор защёлкнут, планка прилегает ровно
- Карта проверена в другом слоте PCIe
- Кабель заменён на заведомо рабочий с передачей данных и подключён в задний USB-порт без хаба
- Проверено, что для прошивки кабель стоит в JTAG-порту, а для чтения — в порту данных
- Установлен драйвер CH347 или WCH, ридер и MemProcFS закрыты
- Одна чистая попытка перепрошить правильный образ, доведённая до конца без прерываний
Совет
Что отправить в поддержку
Укажите, до какого этапа дошла карта, в терминах выше. Горят ли светодиоды. Может ли программа прошивки открыть JTAG-цепочку. Точное имя файла, который вы прошивали, и выбранную модель. Полный вывод программы — вставленный целиком, а не пересказанный. Фото платы с шелкографией и маркировкой FPGA. Номер заказа. Обычно этого набора хватает, чтобы ответить за одно сообщение, а не за пять.
Вопросы о восстановлении
Я убил FPGA, прошив не тот образ?
Почти наверняка нет. После записи плохого образа FPGA не может сконфигурироваться, и это выглядит как отсутствующее устройство. С самим кристаллом ничего не случилось, и JTAG по-прежнему доступен.
Для восстановления карта должна стоять в игровом ПК?
Ей нужно питание. На большинстве плат это значит, что она установлена в игровой ПК и он включён. Некоторые платы могут питаться от одного только порта прошивки — следуйте документации к своей плате.
Можно восстановить карту без JTAG?
На практике нет. Путь через PCIe недоступен именно потому, что конфигурация не прошла, так что вход — через JTAG. Поэтому порт прошивки и сделан отдельным разъёмом.
Для восстановительной прошивки нужно заново считывать DNA?
Нет. DNA хранится в eFUSE, и запись во flash на него никак не влияет, так что образ, который у вас уже есть, по-прежнему подходит к плате.
Программа каждый раз пишет об успехе, а карта всё равно не появляется. Что дальше?
Прекратите перепрошивать. Именно так ведёт себя успешная запись образа, собранного под другую плату или другой DNA. Сверьте файл с заказом и отправьте вывод программы в поддержку.
Источники
Схема этапов и таблица симптомов — наши. Они составлены по картам, которые отказывали у нас на стенде, и по тикетам.
- 01AMD/Xilinx UG910, Vivado Design Suite User Guide: Getting Started
программирование устройства и его конфигурационной flash-памяти через JTAG — путь, на котором держится всё восстановление
docs.amd.com
Читать дальше
Не получилось? Откройте тикет в Discord
Все гайды