Устройство с NAND-памятью перестало загружаться, а специализированного программатора под рукой нет — в такой ситуации прошивку часто можно восстановить через штатные интерфейсы самой платы: UART, JTAG, USB-загрузчик или слот для SD-карты. Большинство процессоров, работающих с NAND, имеют встроенный BootROM, который умеет принимать код извне ещё до обращения к флеш-памяти.
В этой статье разберём, какие методы прошивки NAND Flash без программатора реально работают, какое оборудование понадобится вместо дорогого программатора и как не усугубить ситуацию при восстановлении «кирпича». Конкретные команды и распиновки зависят от чипа и платы, поэтому перед началом работ найдите документацию (datasheet) именно на ваш процессор.
Когда прошивка без программатора вообще возможна
Главное условие — процессор устройства должен быть жив и способен выполнять код. Если чип физически исправен, его встроенный загрузчик (BootROM) почти всегда предлагает альтернативные источники загрузки: последовательный порт, USB, SD-карту или сеть. Именно через них и заливается образ в NAND.
Второй важный момент — состояние самой NAND. Если микросхема вышла из строя физически (износ ячеек, пробой), никакой программный метод не поможет: потребуется замена чипа и прошивка нового на программаторе. Программные способы работают только при логическом повреждении прошивки — слетевшем загрузчике, прерванном обновлении, битых блоках в области данных.
- 🔌 Процессор подаёт признаки жизни: потребляет ток, откликается на UART, определяется по USB.
- 💾 NAND физически исправна — чип определяется загрузчиком, читается его ID.
- 📄 Есть дамп прошивки или заводской образ именно для вашей ревизии платы.
- 🧰 Доступен хотя бы один интерфейс: UART, JTAG, USB OTG или SD-слот.
Метод 1: прошивка через UART и встроенный загрузчик
Самый доступный способ — последовательный порт. На плате почти любого устройства с NAND (роутера, ТВ-приставки, навигатора) есть контактные пады TX, RX и GND. Понадобится недорогой USB-UART адаптер на чипе CH340, CP2102 или FT232 — он заменяет программатор в роли посредника между ПК и устройством.
Подключите адаптер к плате (TX адаптера — к RX платы и наоборот, общий провод GND обязательно), откройте терминал (например, PuTTY) и подайте питание на устройство. Если процессор жив, в терминале появится лог загрузки. Часто загрузчик (например, U-Boot) позволяет прервать автозагрузку нажатием клавиши и попасть в командную строку.
Из консоли U-Boot NAND прошивается по сети через TFTP или с USB-флешки. Типовая последовательность выглядит так (точные команды зависят от версии загрузчика):
setenv serverip 192.168.1.10
tftpboot 0x80000000 firmware.bin
nand erase 0x0 0x200000
nand write 0x80000000 0x0 0x200000
⚠️ Внимание: адреса и размеры областей NAND в примере условны. Запись образа по неверному смещению может затереть область загрузчика, и тогда восстановление без программатора станет невозможным. Всегда сверяйте карту памяти (partition table) с документацией на ваше устройство.
Метод 2: загрузка через USB в режиме BootROM
Многие современные SoC (Allwinner, Rockchip, Amlogic, MediaTek) при отсутствии валидного загрузчика в NAND автоматически переходят в режим USB-загрузки. Устройство определяется на компьютере как специфическое USB-устройство, и прошивка заливается фирменной утилитой.
Для чипов Allwinner это режим FEL и утилита LiveSuit / PhoenixSuit, для Rockchip — режим Maskrom / Loader и утилита RKDevTool, для Amlogic — USB Burning Tool. Вход в режим обычно выполняется замыканием служебной кнопки (или контактов на NAND, блокирующих чтение) при подаче питания. Конкретная комбинация зависит от платы — ищите описание для вашей модели.
Типовой порядок действий такой. Сначала установите драйверы и утилиту от производителя чипа. Затем переведите устройство в режим загрузки, подключите по USB и убедитесь, что утилита его видит. После этого укажите файл образа и запустите запись — утилита сама разметит NAND и запишет все разделы.
Метод 3: прошивка с SD-карты
Ряд процессоров в приоритетном порядке проверяют SD-карту до обращения к NAND. Если записать на карту специальный загрузочный образ, устройство стартует с неё, а скрипт внутри образа автоматически перезаписывает флеш-память. Это штатный сервисный метод для многих ТВ-приставок, планшетов и автомагнитол.
Образ готовится на компьютере: либо фирменной утилитой (например, PhoenixCard для Allwinner в режиме «прошивочной» карты), либо записью образа на карту через balenaEtcher / Rufus. После установки карты в выключенное устройство и подачи питания начинается автоматическая прошивка, о ходе которой обычно сигнализирует индикатор или прогресс на экране. По завершении карту извлекают и перезагружают устройство.
☑️ Подготовка к прошивке NAND без программатора
Метод 4: JTAG — низкоуровневый доступ к NAND
JTAG — отладочный интерфейс, позволяющий управлять процессором напрямую: останавливать ядро, читать и писать память, включая NAND, подключённую к чипу. Это самый универсальный программный метод, но и самый медленный и требовательный к настройке.
Понадобится JTAG-адаптер (от простых на базе FT2232 до J-Link) и программа OpenOCD. Конфигурационный файл подбирается под конкретный процессор: в нём описывается контроллер NAND и параметры чипа. Через команды OpenOCD выполняется стирание и запись областей флеша. Скорость записи через JTAG невысока — полный дамп большой NAND может занять часы, поэтому обычно через JTAG восстанавливают только загрузчик, а остальное заливают уже через UART или USB.
⚠️ Внимание: контакты JTAG на плате часто не подписаны, а напряжение логики может отличаться от 3,3 В. Подключение адаптера с неверным уровнем сигналов способно вывести процессор из строя. Перед подключением измерьте напряжение на падах и сверьте распиновку с документацией.
Сравнение методов прошивки
Выбор способа зависит от того, что осталось «живым» в устройстве, и от доступных интерфейсов. Ниже — ориентировочное сравнение по ключевым критериям.
| Метод | Оборудование | Сложность | Когда применять |
|---|---|---|---|
| UART + U-Boot | USB-UART адаптер | Средняя | Загрузчик жив или частично работает |
| USB BootROM | Только USB-кабель | Низкая | NAND пуст или загрузчик повреждён, чип Allwinner/Rockchip/Amlogic |
| SD-карта | SD-карта и картридер | Низкая | Процессор поддерживает загрузку с SD |
| JTAG | JTAG-адаптер, OpenOCD | Высокая | Ничего не загружается, но процессор исправен |
Типичные ошибки и риски
Самая частая причина окончательного «окирпичивания» — запись образа от другой ревизии платы. Даже в рамках одной модели производитель может менять чипы NAND, и прошивки оказываются несовместимы. Всегда сверяйте маркировку флеш-памяти и версию платы с источником дампа.
Вторая типичная ошибка — прерывание записи. Обесточивание устройства в момент стирания или записи области загрузчика оставляет NAND в несогласованном состоянии. Обеспечьте стабильное питание на всё время операции и не трогайте кабели до явного подтверждения завершения в логе.
- 🚫 Прошивка образа от другой модели или ревизии платы.
- ⚡ Отключение питания во время стирания или записи.
- 🔀 Перепутанные TX/RX или неверная скорость UART — из-за этого консоль «молчит», и кажется, что устройство мертво.
- 🧾 Запись без резервной копии уникальных разделов (калибровки, MAC-адреса, серийные ключи).
Отдельно стоит сказать про заводские разделы с калибровками и серийными данными: они уникальны для каждого экземпляра устройства и не восстанавливаются из чужого дампа. Если чтение NAND ещё возможно, первым делом снимите полный дамп — это ваша страховка.
Как определить распиновку UART на неподписанной плате
Ищите группу из 3–4 контактных площадок рядом с процессором. Мультиметром найдите GND (прозвонка на экран/корпус разъёмов). Остальные пады проверьте в режиме измерения напряжения при включении: на TX в момент старта будут скачки напряжения из-за передачи лога. Пин питания (обычно 3,3 В) покажет стабильное напряжение — его не подключайте к адаптеру, если питание устройства штатное.
Порядок действий: от диагностики к прошивке
Работайте от простого к сложному, чтобы не тратить время на JTAG там, где хватило бы SD-карты. Сначала подключите UART и посмотрите лог загрузки — он сразу покажет, на каком этапе всё останавливается. Живой загрузчик означает, что прошивка возможна прямо из его консоли.
Если консоль молчит, проверьте, не определяется ли устройство по USB в сервисном режиме — попробуйте войти в него по инструкции для вашего чипа. Параллельно выясните, поддерживает ли процессор загрузку с SD. И только если все три пути закрыты, переходите к JTAG как к последнему программному средству.
Часто задаваемые вопросы
Можно ли прошить NAND, если устройство вообще не включается?
Да, если исправен процессор. Отсутствие признаков включения часто означает лишь повреждение загрузчика. Проверьте отклик по UART и попробуйте войти в режим USB-загрузки BootROM — он работает независимо от содержимого NAND. Если процессор не подаёт признаков жизни ни по одному интерфейсу, потребуется диагностика питания платы или программатор.
Чем заменить дорогой программатор в домашних условиях?
В большинстве случаев достаточно USB-UART адаптера стоимостью в несколько сотен рублей и, при необходимости, JTAG-адаптера. Для чипов Allwinner, Rockchip и Amlogic часто хватает одного USB-кабеля и бесплатной фирменной утилиты.
Что делать, если в NAND есть сбойные блоки (bad blocks)?
Небольшое количество бэд-блоков — норма для NAND, заводские и штатные утилиты умеют их пропускать. Проблема возникает, когда бэд-блок появляется в области загрузчика: часть BootROM умеет обходить такие блоки, часть — нет. Если число сбойных блоков быстро растёт, чип деградирует, и надёжнее заменить его с прошивкой на программаторе.
Подойдёт ли дамп прошивки от такой же модели устройства?
Только если совпадают ревизия платы и маркировка чипа NAND. Даже в одной модели производитель мог менять компоненты между партиями. Перед записью чужого дампа сравните маркировку памяти и, по возможности, сохраните собственные уникальные разделы (калибровки, MAC-адреса).
Как понять, что NAND физически вышла из строя?
Косвенные признаки: чип не отдаёт ID ни через один интерфейс, загрузчик сообщает об ошибках чтения на любых адресах, число бэд-блоков аномально велико. Окончательный ответ даст только проверка на программаторе или замена чипа — программными методами физическую неисправность отличить от проблем обвязки не всегда возможно.