- Статус
- Оффлайн
- Регистрация
- 13 Фев 2026
- Сообщения
- 617
- Реакции
- 16
На ровном месте столкнулся с классической проблемой при попытке прошить новую DMA карту. Спидтесты через PCIe проходят идеально, карта живая, но JTAG наотрез отказывается её видеть. Если у вас в консоли висит бесконечный Unknown flash device (ID 0xffffff), значит данные с чипа просто не доходят до прошивальщика.
Техническое мясо из логов OpenOCD:
Что это значит на языке железа?
Ошибка all ones (все единицы) сигнализирует о том, что линия TDO (Test Data Out) постоянно находится в высоком логическом уровне. Простыми словами — программатор «не слышит» ответа от FPGA-чипа. Это не баг софта, это физика соединения или кривые драйверы.
Методы решения:
Если карта в системе определяется и работает в тестах — контроллер жив, так что паниковать рано. Копайте в сторону линка между программатором и самой платой.
Кто сталкивался с подобным на кастомных прошивках, были случаи отвала именно JTAG-порта на самой плате?
Техническое мясо из логов OpenOCD:
Код:
Error: JTAG scan chain interrogation failed: all ones
Error: Check JTAG interface, timings, target power, etc.
Error: xc7.tap: IR capture error; saw 0x3f not 0x01
Error: Unknown flash device (ID 0xffffff)
Что это значит на языке железа?
Ошибка all ones (все единицы) сигнализирует о том, что линия TDO (Test Data Out) постоянно находится в высоком логическом уровне. Простыми словами — программатор «не слышит» ответа от FPGA-чипа. Это не баг софта, это физика соединения или кривые драйверы.
Методы решения:
- Кабель и подключение. Забудьте про USB-хабы. Только прямой коннект в материнку. Проверьте кабель JTAG — он должен быть предназначен для передачи данных. Дешманские зарядные шнуры тут не прокатят.
- Питание FPGA. Карта должна быть запитана. Шить девайс, просто воткнув в него JTAG без подачи питания на саму плату (через PCIe слот или внешний БП), бессмысленно — чип банально спит.
- Траблшутинг драйверов. Проверьте через Zadig, какой драйвер висит на вашем JTAG-интерфейсе (обычно это FTDI чип). Рекомендуется ставить WinUSB или libusb-win32.
- Снижение частоты. В логах часто мелькает скорость 10000 kHz. Это слишком много для плохого контакта или длинного кабеля. Попробуйте в конфиге OpenOCD снизить adapter speed до 1000 или даже 500 kHz.
- Физический осмотр. На китайских картах иногда криво распаяны гребенки JTAG или не до конца защелкнут шлейф внутри карты.
Если карта в системе определяется и работает в тестах — контроллер жив, так что паниковать рано. Копайте в сторону линка между программатором и самой платой.
Кто сталкивался с подобным на кастомных прошивках, были случаи отвала именно JTAG-порта на самой плате?