Как прошить nand память

Обновлено: 07.07.2024


Собрал недавно программатор NAND Flash памяти.
Программатор разработала организация НТП "Тиком".

"USB программатор ChipStar‑Janus
USB программатор ChipStar‑Janus — простой внутрисхемный программатор для микроконтроллеров (PIC, AVR, MCS51 и других) и микросхем FLASH памяти с возможностью расширения.

Через адаптер расширения позволяет программировать микросхемы NAND FLASH.

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

Таким образом, этот программатор в некоторых случаях будет достаточен для разработки и ремонта современного радиоэлектронного оборудования." — текст описания с сайта производителя.

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

Сайт производителя
Есть 2 варианта печатной платы, для smd(двухсторонняя) и для DIP.
Прошивка и ПО доступны после регистрации на сайте.

МК PIC25k50 я прошивал программатором JDM Extrapic, а ПО picpgm.
Единственная проблема при сборке программатора у меня была с выставлением конфиг. битов, picpgm сама не смогла их корректно распознать :(. В документации на программатор конфиг. битов я не нашел, и начал пробовать вытянуть их из HEX файла. Начал читать, узнавать где они там хранятся и т.д. Попутно задал вопрос в тех. поддержку производителя, а дело было в 22 часа примерно, пятница, ну думаю пока до понедельника далеко, буду пробовать сам из прошивки вытянуть, по итогу через минут 40 вытянул конфиг биты из файла прошивки и вижу письмо пришло новое, открываю, а это к слову было 23 часа, а там подробный ответ на несколько моих вопросов по программатору. Я был приятно шокирован скоростью ответа тех.поддержки, при том что вопрос был по БЕСПЛАТНОМУ программатору, а не купленой версии. Сравнил полученные биты с вытянутыми, все сошлось. Прошил МК и продолжил сборку.
Программатор сразу заработал.
Еще одно приятное впечатление оставила тестовая программа для отладки и проверки программатора. Эта программа вручную выставляет напряжение программирования на выходах питания, выставляет низкий или высокий уровень на линиях данных, прослушивает входы, и для каждого действия обозначены контрольные точки на схеме для проверки, схема с точками показана на вкладке в программе, очень удобно.

Сделал себе сразу 3 адаптера, для 24х, 25х, 93х, NAND(делал под впайку микросхемы в адаптер, пока не куплю панельку)

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

Схема, платы, инструкция по сборке, все доступно БЕЗ регистрации, а регистрация нужна для получения прошивки и ПО под прошивку, там еще дается период бесплатного обновления, и для каждой прошивки он свой, если шить мою прошивку, то вы потеряете то количество дней, которое прошло с момента моей регистрации. Так что крайне рекомендую регистрироваться и скачивать свою прошивку.


Собрал недавно программатор NAND Flash памяти.
Программатор разработала организация НТП "Тиком".

"USB программатор ChipStar‑Janus
USB программатор ChipStar‑Janus — простой внутрисхемный программатор для микроконтроллеров (PIC, AVR, MCS51 и других) и микросхем FLASH памяти с возможностью расширения.

Через адаптер расширения позволяет программировать микросхемы NAND FLASH.

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

Таким образом, этот программатор в некоторых случаях будет достаточен для разработки и ремонта современного радиоэлектронного оборудования." — текст описания с сайта производителя.

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

Сайт производителя
Есть 2 варианта печатной платы, для smd(двухсторонняя) и для DIP.
Прошивка и ПО доступны после регистрации на сайте.

МК PIC25k50 я прошивал программатором JDM Extrapic, а ПО picpgm.
Единственная проблема при сборке программатора у меня была с выставлением конфиг. битов, picpgm сама не смогла их корректно распознать :(. В документации на программатор конфиг. битов я не нашел, и начал пробовать вытянуть их из HEX файла. Начал читать, узнавать где они там хранятся и т.д. Попутно задал вопрос в тех. поддержку производителя, а дело было в 22 часа примерно, пятница, ну думаю пока до понедельника далеко, буду пробовать сам из прошивки вытянуть, по итогу через минут 40 вытянул конфиг биты из файла прошивки и вижу письмо пришло новое, открываю, а это к слову было 23 часа, а там подробный ответ на несколько моих вопросов по программатору. Я был приятно шокирован скоростью ответа тех.поддержки, при том что вопрос был по БЕСПЛАТНОМУ программатору, а не купленой версии. Сравнил полученные биты с вытянутыми, все сошлось. Прошил МК и продолжил сборку.
Программатор сразу заработал.
Еще одно приятное впечатление оставила тестовая программа для отладки и проверки программатора. Эта программа вручную выставляет напряжение программирования на выходах питания, выставляет низкий или высокий уровень на линиях данных, прослушивает входы, и для каждого действия обозначены контрольные точки на схеме для проверки, схема с точками показана на вкладке в программе, очень удобно.

Сделал себе сразу 3 адаптера, для 24х, 25х, 93х, NAND(делал под впайку микросхемы в адаптер, пока не куплю панельку)

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

Схема, платы, инструкция по сборке, все доступно БЕЗ регистрации, а регистрация нужна для получения прошивки и ПО под прошивку, там еще дается период бесплатного обновления, и для каждой прошивки он свой, если шить мою прошивку, то вы потеряете то количество дней, которое прошло с момента моей регистрации. Так что крайне рекомендую регистрироваться и скачивать свою прошивку.


Собрал недавно программатор NAND Flash памяти.
Программатор разработала организация НТП "Тиком".

"USB программатор ChipStar‑Janus
USB программатор ChipStar‑Janus — простой внутрисхемный программатор для микроконтроллеров (PIC, AVR, MCS51 и других) и микросхем FLASH памяти с возможностью расширения.

Через адаптер расширения позволяет программировать микросхемы NAND FLASH.

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

Таким образом, этот программатор в некоторых случаях будет достаточен для разработки и ремонта современного радиоэлектронного оборудования." — текст описания с сайта производителя.

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

Сайт производителя
Есть 2 варианта печатной платы, для smd(двухсторонняя) и для DIP.
Прошивка и ПО доступны после регистрации на сайте.

МК PIC25k50 я прошивал программатором JDM Extrapic, а ПО picpgm.
Единственная проблема при сборке программатора у меня была с выставлением конфиг. битов, picpgm сама не смогла их корректно распознать :(. В документации на программатор конфиг. битов я не нашел, и начал пробовать вытянуть их из HEX файла. Начал читать, узнавать где они там хранятся и т.д. Попутно задал вопрос в тех. поддержку производителя, а дело было в 22 часа примерно, пятница, ну думаю пока до понедельника далеко, буду пробовать сам из прошивки вытянуть, по итогу через минут 40 вытянул конфиг биты из файла прошивки и вижу письмо пришло новое, открываю, а это к слову было 23 часа, а там подробный ответ на несколько моих вопросов по программатору. Я был приятно шокирован скоростью ответа тех.поддержки, при том что вопрос был по БЕСПЛАТНОМУ программатору, а не купленой версии. Сравнил полученные биты с вытянутыми, все сошлось. Прошил МК и продолжил сборку.
Программатор сразу заработал.
Еще одно приятное впечатление оставила тестовая программа для отладки и проверки программатора. Эта программа вручную выставляет напряжение программирования на выходах питания, выставляет низкий или высокий уровень на линиях данных, прослушивает входы, и для каждого действия обозначены контрольные точки на схеме для проверки, схема с точками показана на вкладке в программе, очень удобно.

Сделал себе сразу 3 адаптера, для 24х, 25х, 93х, NAND(делал под впайку микросхемы в адаптер, пока не куплю панельку)

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

Схема, платы, инструкция по сборке, все доступно БЕЗ регистрации, а регистрация нужна для получения прошивки и ПО под прошивку, там еще дается период бесплатного обновления, и для каждой прошивки он свой, если шить мою прошивку, то вы потеряете то количество дней, которое прошло с момента моей регистрации. Так что крайне рекомендую регистрироваться и скачивать свою прошивку.


Так же стоит отметить, что нам не придется прошивать оригинальную версию прошивки, сойдет любая, лишь бы на ней стоял HSPL 2.08 и версия радиомодуля, поддерживающая 576 RAM.

Собственно, на этом всё. Можно приступать к увеселительной программе.

1. Синхронизируем телефон через activesync или WMDC, используя стандартный USB-шнурок
2. Открываем папку, в которую мы распаковали MAGLDR
3. Запускаем ROMUpdateUtility.exe от имени администратора
4. Дважды соглашаемся на все риски и ответственности, жмём «далее»
• Здесь происходит проверка usb-подключения
5. Жмём «update»
6. Проверяем образ, который будет прошиваться (название должно быть 2.00.000.0)
7. Жмём «далее», два раза
8. Телефон перейдет в режим загрузчика и потихоньку прошьется
9. После перепрошивки телефон сам перезапустится. Первый этап пройден.

Антракт, можно пойти выпить / покурить / отдохнуть. Чего мы достигли на данном этапе? Прошили кастомный загрузчик, который стартует после основного и может запустить Android, который мы зальем в основную память сразу после завершения перерыва. Кстати, перерыв окончен.

• После перезагрузки, если вы всё сделали правильно в первой части Марлезонского балета, телефон сам запустит MAGLDR
1. Навигация осуществляется при помощи кнопок регулирования громкости, а так же «поднять трубку» и «повесить трубку»
2. Освоившись с управлением, переходим к Option 4: USB Flasher, после чего выбираем пункт, нажав «поднять трубку» (крайняя левая кнопка)
3. Телефон перейдет в режим прошивки Androidа, установит USB-драйвера, если их еще нет
4. (на компьютере) Открываем папку, в которую мы распаковали NANDroid, запускаем DAF.exe от имени администратора
5. Читаем, соглашаемся, жмём «далее»
6. Дальше всё пройдет без нашего участия. Прошивальщик зальет билд Androidа в телефон, телефон перезагрузится, минут через 10-15 у вас уже будет рабочий Android в памяти телефона.
На этом, собственно, инструкция окончена. Вопросы приветствуются, по мере поступления добавлю часть из них в пост, если будут повторятся / актуальны. Всем спасибо за внимание.

Ещё раз ссылки, на всякий случай
MAGLDR: раз, два, три
Прошивка: раз
HSPL: раз, два



Нередко при анализе встроенной системы происходят преднамеренные, а иногда и нет, изменения, которые приводят к тому, что целевая система выходит из строя и впадает в так называемое состояние «кирпича». В некоторых случаях для ее реанимации достаточно выполнить сброс к заводским настройкам, в иных же приходится прошивать систему при помощи интерфейса отладки (JTAG/SWD/*) или вручную через внешнее устройство памяти (SPI/NOR/Nand/eMMC). В данной статье мы рассмотрим весьма креативный метод «раскирпичивания» системы после подобного сбоя.

Как-то в свободное время я возился с памятью маршрутизатора, где в качестве загрузчика использовалась прошивка CFE (Common Software Environment). В ходе моего взаимодействия с CFE в попытке определить аргументы, передаваемые при загрузке в ОС устройства, конфигурация системы была случайно повреждена:


В тот момент я понял, что для сохранения этих случайных изменений осталось выполнить заключительную операцию сохранения/записи, поэтому решил просто физически перезапустить устройство, чтобы избежать внесения изменений. После перезапуска возникла ошибка:


Когда маршрутизатор снова заработал, то тут же выдал вышеприведенную ошибку и в CFE не вошел. Без возможности обратиться к загрузчику конфигурацию изменить было нельзя, а процесс его восстановления тоже не представлялся возможным. Онлайн-поиск решения по этой ошибке ничем не помог и привел в тупик. Единственным выводом было, что при повреждении CFE подобным образом устройство впадает в состояние «кирпича». Тогда я переключился на работу с резервным девайсом, чтобы получить ответ на изначальный вопрос по интересовавшим меня аргументам. К слову говоря, установка kernp mfg_nvram_mode=1 mfg_nvram_url=BADURL была особенно интересна.

Позже я вернулся к своему «кирпичу», чтобы найти способ его восстановления. В нем используется Broadcom SoC, и, как выяснилось, доступ к JTAG обеспечивается через нераспаянные контакты на плате:


После перебора контактов JTAG с помощью JTagulator мне удалось подключиться, используя OpenOCD.


Другой способ восстановления системы реализуется через флеш-память, а именно микросхему Macronix NAND:


И здесь я задумался. У меня ведь есть рабочее устройство, на котором я вполне могу запустить загрузчик. А что, если при этом попробовать заменить его рабочий чип NAND на поврежденный, чтобы перепрошить?

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

Первым делом предстояло выяснить, переживет ли система удаление NAND в работающем состоянии? Я понимал, что для ответа на этот вопрос мне потребуется более методический подход, нежели просто «обдать работающее устройство горячим воздухом и извлечь микросхему». Для начала нужно было выяснить, как NAND запитана. Судя по схеме, Vcc подключены к микросхеме в следующих местах:


Определив дорожки подключения Vcc, проще всего ответить на основной вопрос можно было отключив их от NAND при работающей системе. Чтобы это сделать, изначально я попробовал отсечь эти дорожки и добавить проводные перемычки (рекомендую 36 AWG Magnet Wire), которые можно будет разъединить после запуска загрузчика:


С правой стороны я отсек трассу питания подальше, решив, что это место будет более удачным, поскольку от него запитывается несколько контактов NAND. При установке первой перемычки трассу я отсек небольшим ножом и зачистил покрытие абразивным карандашом:


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



Припаяв и соединив провода, я запустил маршрутизатор и, дождавшись старта загрузчика (CFE), с помощью команды dn (dump nand) убедился в доступности NAND, затем обесточил микросхему, разъединив провода.


После отключения питания (отмечено как Vcc removed ), устройство перезагрузилось и не смогло запустить загрузчик, так как NAND была недоступна. Проблема оказалась в том, что точка отсечения питания справа отключала его подачу не только на NAND, но и на SoC. Чтобы не усложнять, я просто восстановил этот отрезок и проделал всю ту же процедуру с установкой перемычки в точке ближе к NAND:


Вернув систему в строй и повторив предыдущий тест, я получил ответ на изначальный вопрос: когда питание отключается разъединением проводов перемычки, система продолжает работать, что подтверждается командой dn :


После того, как я убедился в возможности отключения NAND на работающей системе без влияния на загрузчик, очередным шагом было попробовать физически извлечь отключенную NAND из платы.

Прогрев микросхему горячим воздухом, я поочередно приподнял пинцетом сначала правую, а затем левую стороны:


В результате этого процесса система перезапустилась и провалила попытку войти в загрузчик:


Так как стороны микросхемы при ее отсоединении я поднимал поочередно, посматривая при этом в консоль, то стало очевидно, что перезагрузка произошла при подъеме именно левой стороны:




Затем я снова поочередно извлек правую-левую стороны микросхемы, поглядывая в консоль загрузчика:


На этот раз он остался активен, и система в перезагрузку не ушла. Закончив очередной этап головоломки, я перешел к следующему – установке поврежденной NAND в работающее устройство.

Для припаивания NAND снова использовался горячий воздух. Первая попытка оказалась безуспешной, так как некоторые контакты замкнуло при моей попытке выровнять чип по обеим сторонам. На этом этапе ввиду сбоя в очередной раз пришлось ставить обратно рабочую NAND.

Во второй попытке я уже использовал небольшой листок бумаги для изолирования одной стороны NAND на время выравнивания и закрепления другой:



Тест чтения завершился успешно, и через веб-интерфейс загрузчика я прошил микросхему заводским образом:

Как видно из вывода, прошивка прошла успешно, и система загрузила ОС устройства.

И все же считаю, что здесь будет уместна цитата персонажа из к/ф «Парк Юрского периода», которого играл Джефф Голдблюм:

Читайте также: