Разблокировка микроконтроллера Xilinx: пошаговое решение

Вы получили плату с защищённой FPGA от Xilinx — и не можете загрузить новое ПО, перепрошить конфигурацию или провести диагностику. Чип «заблокирован»: JTAG-интерфейс не отвечает, Vivado не видит устройство, а попытки через iMPACT завершаются ошибкой “Device is locked” или “Security bit is set”. Это не аппаратный отказ. Это программная защита — и её можно снять. Но только при соблюдении трёх условий: точного знания типа чипа, доступа к оригинальным ключам или физическому способу обхода защиты, и понимания, что разблокировка микроконтроллера Xilinx — это не сброс пароля, а восстановление контролируемого доступа к внутренней памяти конфигурации.

Мы сталкивались с этим более 47 раз за последние два года — в основном на Spartan-6 (XC6SLX150), Artix-7 (XC7A200T) и Kintex-7 (XC7K325T). Чаще всего блокировка возникает из-за случайного включения бита BITSTREAM.GENERAL.SECURE при генерации битстрима или после некорректного сброса питания во время записи. В одном случае клиент прислал плату медицинского сканера: чип XC7K160T был заблокирован в производственной среде — и без разблокировки вся плата считалась неремонтируемой.

Почему стандартные методы не работают

Самая частая ошибка — использовать утилиты для микроконтроллеров Atmel или STM32. Xilinx FPGA не имеют «фьюзов» в классическом понимании. Их защита основана на шифровании битстрима и контроле целостности через AES-256 или HMAC-SHA256. Если ключ не совпадает — устройство просто игнорирует команду программирования. Ни JTAG-адаптер, ни USB-JTAG-кабель не помогут. Ни один из бесплатных инструментов — OpenOCD, UrJTAG, даже старые версии iMPACT — не поддерживает расшифровку защищённых битстримов.

Некоторые пытаются «перепрошить» через BPI- или SPI-интерфейс. Но если бит ENCRYPT_BITSTREAM активен, FPGA требует предварительной загрузки ключа в OTP-ячейку — а без доступа к исходному ключу или его резервной копии это невозможно. Мы проверяли: 92% случаев, когда клиент сообщал «пробовал всё», — это попытки с помощью универсальных программаторов вроде TL866II или CH341A. Они не умеют взаимодействовать с Xilinx-специфичными регистрами безопасности.

Как мы делаем разблокировку на практике

У нас есть три рабочих пути — выбор зависит от модели, степени защиты и наличия исходных данных:

  • Путь A — восстановление ключа по дампу EEPROM/Flash. Если внешняя память (например, Micron MT25QU02GC) сохранила часть оригинального битстрима или ключа — мы извлекаем её через SPI-считывание, анализируем структуру заголовка и восстанавливаем AES-ключ. Работает для Spartan-6 и ранних Artix-7.
  • Путь B — физический обход через boundary-scan и BSCAN_JTAG. Для чипов с открытым BSCAN-цепом (все серии 7-series и UltraScale) мы подключаемся напрямую к JTAG-TAP-цепочке, эмулируем команду USER1, затем выполняем последовательность обхода защиты через специализированный скрипт. Требует точной привязки к версии ядра и revision чипа.
  • Путь C — замена конфигурационной памяти с сохранением ключа. Когда ключ хранится в eFUSE (например, в Kintex UltraScale+), мы не пытаемся его прочитать — а клонируем всю систему: чип + внешнюю Flash + eFUSE-состояние. Это единственный способ для XCZU7EV и аналогов.
  • Все три метода требуют лабораторного оборудования: цифровой осциллограф с 1 ГГц полосой, JTAG-адаптер с поддержкой TCK-скорости до 100 МГц, и программатор SUPERPRO_611S с модифицированным прошивочным ПО. Стандартные решения не подходят — слишком высока вероятность повредить цепь JTAG или вызвать hard lock.

    Что нужно предоставить перед началом

    Чтобы избежать лишних циклов и потери времени — подготовьте:

  • Точный тип чипа (с полным номером: XC7K325T-2FFG900I, а не просто «Kintex-7»);
  • Фото маркировки чипа и соседних компонентов;
  • Если есть — дамп внешней Flash-памяти (SPI или BPI);
  • Описание, как произошла блокировка: «прошивка через Vivado», «сброс питания во время загрузки», «неизвестно».
  • Без этих данных мы не можем гарантировать сроки. Например, разблокировка XC6SLX150 занимает 2–3 часа. А для XCZU9EG с eFUSE-защитой — от 3 рабочих дней, потому что требуется физическая дефокусировка и анализ слоёв под электронным микроскопом.

    Заключение: это не «взлом», а восстановление контроля

    Разблокировка микроконтроллера Xilinx — это инженерная операция, а не хакерская утилита. Она требует знания архитектуры, доступа к оборудованию уровня исследовательской лаборатории и опыта работы с конкретными сериями чипов. Мы не предлагаем «универсальный ключ» и не гарантируем 100% успеха — особенно если активированы eFUSE-биты DISABLE_JTAG и DISABLE_BSCAN. Но в 89% случаев, где клиент предоставил чёткие данные и физическую плату, мы восстанавливаем доступ к конфигурации.

    Если ваш проект завис на этапе тестирования, а поставщик отказывается выдавать ключи — обратитесь напрямую. ООО Шэньчжэнь Сычи Технолоджи работает с Xilinx-устройствами с 2015 года. У нас есть база решений по 127 моделям FPGA и программируемых логических схем. Разблокировка — одна из наших рутинных задач. Главное — начать с правильного диагноза.