Программа для прошивки нанд флеш
Например, в ходе анализа данных, вы выяснили, что фирма контроллера ChipsBank, а модель CBM2099E. Сначала вбиваем в представленную выше поисковую форму модель контроллера (CBM2099E) и пробуем найденные утилиты. Если таким методом, вам не удалось найти ни одной эффективной утилиты, то можете попробовать поискать по названию производителя USB-контроллера (в данном случае, это ChipsBank).
На боковой панели сайта, можно обнаружить серию статей из рубрики по подбору утилит, для некоторых трудно подбираемых производителей чипов.
Если вы не обладаете хотя бы элементарными познаниями в этой теме, то я сначала рекомендую ознакомится с материалами расположенным в разделе СТАТЬИ. А в частности с РУКОВОДСТВОМ ДЛЯ ЧАЙНИКОВ. Со всеми вопросами, не стесняйтесь, обращайтесь ко мне за помощью на ФОРУМ ПРОЕКТА USBDev.
Приведённые ниже программы, работают с совершенно различными моделями микроконтроллеров. Хотя некоторые из них, понимают только несколько моделей контроллеров, но ни смотря на это их можно назвать универсальными.Часть из них уже достаточно сильно устарели и потеряли былую актуальность, а удалять мне их жалко, да и не к чему это.
Наиболее нужные под рукой инструменты, я выделил особым цветом, чтобы глаза быстрее их находили. Экономия времени, достигается ещё за счёт того, что вы не качаете не нужные вам программы, а сосредотачиваетесь исключительно на определённом перечне.
К сожалению, использование последних операционных систем Microsoft Windows, не всегда возможно, для восстановления флешек. Режим совместимости, который встроен в винду, как правило, абсолютно бесполезен.Самой универсальной системой, несомненно, является 32-битная Windows XP. В более современных, могут наблюдаться, как непонятные ошибки в ходе процесса прошивки, так и просто вылет самого процесс.
Никто не занимается адаптацией старых программ, к современным реалиям. Этому можно найти крайне простое объяснение, если понимать, что большинство утилит являются производственными инструментами, которыми шьют флешки на заводах. Ну а туда, в свою очередь, не спешат ставить топовое железо, ибо это лишь выкидывание денег на ветер.
К тому же, жизненный цикл, который отводится под каждую модель USB-контроллера, не такой уж и большой. Производители любят, каждые пару лет выпускать новую модель, а к ней уже новые прошивальщики.
Установка Windows XP на виртуалку, взамен развёртывания полноценной системы на компьютере, вполне допускается в большинстве ситуаций.Но всё же, ни одна виртуальная система не заменит живой, в полной мере. Вы можете встретить на своём пути, как мелкие препятствия, так и фатальные непроходимые ошибки.
Более подробную информацию по данному вопросу, вы можете получить из статьи про ремонт с виртуальной машины. В которой наглядно показаны, как плюсы, так и минусы конкретных технологий, эмулирующих устаревшую операционную систему Windows XP.
Если говорить про ложные срабатывания антивирусов, на некоторые файлы, то за всё время существования проекта, никто не смог обнаружить ни одного реального вируса на сервере сайта.Основные факторы, из-за которых происходит ошибочное срабатывание антивирусных продуктов:
1] Служебные драйверы, для работы с USB-интерфейсом, которые содержат производственные инструменты.
2] Некоторые исполняемые файлы сжаты пакерами файлов, а их использование, нередко, блокируется антивирусами (на всякий случай).
3] Есть на сервере несколько утилит, которые раньше были реально заражены серьезными троянами, но перед заливкой на сайт, были мною пролечены с помощью сканера CureIt. Вирус то удалился, а некоторые сигнатуры остались, вот и часть антивирусов, по привычки вопит о небезопасности файлов.
Чтобы никому не усложнять схему, просто кидайте названия утилит в область комментариев, на первой попавшейся вам странице сайта. Я потом приду, всё лишнее подправлю и удалю.
(3559) 4.90 (10) Оценки, комментарии2021-02-11 Дата последнего изменения: 2021-02-28
Автор: Линьков Е.А. — разработчик программаторов ChipStar .
В статье в предельно доступной форме рассматриваются особенности применения микросхем NAND FLASH.
CОДЕРЖАНИЕ:
NAND не совсем обычные микросхемы, поэтому те инженеры, которые с ними сталкиваются впервые, часто бывают обескуражены. Более подробно, хотя и очень примитивно, особенности NAND описаны в статьях "Программирование NAND FLASH" и "Программирование SPI NAND".
Здесь же я постараюсь изложить суть использования NAND еще проще.
Тому, кто собирается работать с NAND профессионально, материала из этой статьи будет явно недостаточно, но для любителя, который решил отремонтировать 2–3 прибора, в которых используется микросхема типа NAND, это может очень помочь.
1. Коварство NAND. Структура.
NAND организованы следующим образом: страницы –> блоки –> логические модули –> кристаллы.
На рисунке ниже показан типичный пример организации микросхемы NAND с одним логическим модулем и одним кристаллом.
В чем коварство NAND? В адресации.
Даже начинающий радиолюбитель знает, что к любой ячейке микросхемы памяти можно обратиться, указав её адрес. Перебирая по порядку все адреса с первого до последнего, можно считать или записать всю микросхему (именно так поступает программатор).
При считывании NAND всегда происходит чтение всей страницы целиком, страница перемещается во внутренний буфер (page register), а уже из буфера можно прочитать содержимое страницы байт за байтом или в произвольном порядке.
То же самое при записи — сначала заполняется внутренний буфер (целиком или частично), затем страница записывается целиком. Размер буфера равен размеру страницы. Коварство адресации в том, что размер страницы не кратен степени двух. То есть просматривать содержимое микросхемы байт за байтом не получится.
2. Коварство NAND. Ошибки.
При работе микросхемы NAND возникновение ошибок — это норма. "Как так? Как можно работать с такой микросхемой?!" — скажете вы. Как можно работать с такой памятью? Способы есть, но об этом позже, а сейчас о типичном заблуждении начинающих:
- Пользователь ставит микросхему в программатор.
- Читает её. Читает еще раз.
- Сравнивает. О ужас! Обнаружено более тысячи ошибок!
- Паника! Микросхема не работает. Программатор не работает.Ничего не работает.
- Нужно срочно звонить нам (производителю) и требовать ремонта программатора!
Спокойно, дружище, спокойно. Это NAND, она так работает.
Сейчас типичная страница наиболее распространенных NAND равна двум килобайтам плюс дополнительные байты. Очень многие микросхемы при чтении дают до 16-ти одиночных ошибок на одну страницу. И это нормально. Берем, например, микросхему на 2 гигабайта. Нехитрое вычисление. Получаем, что при считывании микросхемы может быть до 16 777 216 ошибок!
Еще раз: 16 миллионов! Ошибок в микросхеме! Как с этим жить?! Как может что-то работать вообще? Об этом поговорим чуть позже.
А сейчас поясним понятие "одиночные ошибки".
"Одиночная ошибка" — это не одна единственная ошибка на страницу или микросхему, это ошибка в одном бите. Таких ошибок может быть много, вопреки слову "одиночная". Применительно к памяти такие ошибки правильнее было бы называть однобитными, но термин "одиночный" пришёл из теории передачи данных по линиям связи, где ошибки выявляют и исправляют такими же способами, что и в NAND.
3. Магия ЕСС.
Все наверное знают, что такое CRC. Код CRC (еще иногда (ошибочно) называют "контрольная сумма") — это такой специальный код, который позволяет найти ошибку в данных.
Кратко опишем как выглядит работа кодера/декодера ЕСС:
- Берется порция данных, например, 2048 байт, записывается в страницу NAND.
- Рассчитывается код ЕСС и тоже записывается (назовем его ECC1) (именно для записи таких кодов страница сделана чуть больше!)
- Затем читаем страницу 2048 байт.
- Опять рассчитываем код ЕСС (назовем его ECC2).
- Читаем записанный код ЕСС1 и сравниваем ECC1 и ECC2.
- Если коды совпадают, значит ошибок нет.
Вот до этого места коды CRC и ECC не сильно отличаются, магия ЕСС начинается дальше:
Вот и вся магия. Мы просто исправляем ошибки.
4. Коварство NAND. Магия ЕСС есть, но она не работает.
"Так просто?" — скажете вы. "Тогда почему программатор не использует ЕСС для исправления ошибок?! Я из раза в раз читаю микросхему и все время ошибки".
Да. Действительно, почему?
- Какими порциями (128, 256, 512, 1024 или 2048) в вашем приборе (не в микросхеме NAND, а именно в приборе. ) разработчик прибора решил записывать данные и вычислять ЕСС.
- Какой алгоритм ЕСС он решил использовать.
- Какой порождающий полином он решил использовать.
- Как разработчик разбил страницу NAND на порции и куда решил записывать сами коды ЕСС.
Как? Вы это не знаете?! Вот и мы не знаем. И, возможно, никто, кроме разработчика прибора, не знает.
Если из этого списка 1-й и 4-й пункты можно попытаться выяснить, анализируя прошивку микросхемы, а порождающий полином (пункт 3) - подобрать, то с пунктом 2 (алгоритм ECC) все очень плохо.
5. Почему алгоритмов расчета ECC так много.
На данный момент самые распространённые коды исправляющие ошибки это:
Математические теории кодов достаточно сложные, но основные приемы работы с кодами известны, порождающие полиномы легко найти. Казалось бы, мы легко сможем подобрать нужный алгоритм ECC, просто анализируя прошивку. Сначала мы тоже так решили, однако всё оказалось сложнее.
Большинство современных встроенных систем базируются на Linux. Linux для работы накопителей на основе FLASH памяти, как правило, использует драйвер MTD. В драйвере MTD реализовано программное кодирование для NAND кодом BCH с вполне известным набором полиномов. Всё будто просто, но в реальной жизни (в реальных прошивках) такое кодирование не встречается. Почему? Всё упирается в деньги. Вернее, в желание производителей аппаратуры их сэкономить.
Почему вместо обычной памяти FLASH, работающей безошибочно, используются NAND, производящие кучу ошибок? Потому что это в разы дешевле. За разработку алгоритма кодирования/декодирования ЕСС заплатить нужно ОДИН раз, за память без ошибок нужно платить КАЖДЫЙ раз в КАЖДОМ устройстве.
Ровно по этой же причине в реальных устройствах (особенно массовых) никогда не используется чисто программное декодирование ЕСС – это декодирование является очень ресурсозатратным. Получается: ставим дешевую память – получаем или медленно работающее устройство, или нужно ставить мощный процессор, стоимость которого сводит на нет выгоды от использования дешевой памяти.
Поэтому декодированием ЕСС в современных системах занимаются специальные сопроцессоры или контроллеры. Придумываются и реализуются более совершенные коды ЕСС. Часто используются комбинированные коды CRC/ECC. Код CRC рассчитывается быстрее, чем ЕСС, это позволяет использовать CRC-часть для обнаружения ошибок, а полное декодирование ЕСС — только при их наличии.
Все эти коды и алгоритмы являются предметом авторского права и собственностью компаний, их разработавших. Ежедневно патентуются все более совершенные коды и все более быстрые алгоритмы их расчета. И никто не спешит делиться своими секретами.
Как итог — мы видим прошивку. Часто мы видим как страница разбита на подстраницы. Мы видим где находятся коды ЕСС подстраниц. Но не знаем, каким алгоритмом они рассчитаны, и поэтому не можем их использовать для исправления ошибок .
Для тех, кого посетит мысль о том, что взломать алгоритм ECC не сложно, хочу напомнить, что для шифрования данных и расчета кодов исправления ошибок используется идентичный математический аппарат.
6. Коварство NAND. Магия ЕСС есть, но она не работает. Что делать?
Очень часто нам приходится слышать один и тот же вопрос: "Что делать, если NAND всегда читается с огромным количеством ошибок? Как прочитать без ошибок?"
Проблема может быть успешно преодолена, если вы нам скажете, какой алгоритм ЕСС использует ваше устройство. В этом случае мы сделаем расчет ЕСС по вашему алгоритму и у вас всё будет работать без ошибок при чтении NAND для этого устройства.
Вы не знаете алгоритм? Тогда есть только один способ: толерантность к ошибкам (и этот способ успешно работает).
Просто читаете микросхему. Она будет считана с ошибками. При верификации требуется задать допустимое количество ошибок на страницу микросхемы. (Для всех вновь добавленных микросхем значение по умолчанию уже задано. Если не задано – нужно смотреть документацию или просить нас, чтобы мы внесли данные ЕСС в базу).
Программа будет сверять микросхему и подсчитывать количество ошибок. Если количество ошибок не превысит заданное значение — значит всё в порядке. Ошибка сравнения не будет выдана, вы просто будете проинформированы о количестве "исправимых" ошибок.
Но не все так однозначно.
Вот небольшая задачка:
Допустим, микросхема записывается всегда правильно, а все ошибки возникают только при чтении (чаше всего, это именно так). Предположим при каждом чтении каждой страницы всегда возникает ровно 3 ошибки при допустимых для данной микросхемы 4-х ошибках.
Понятно, что пример несколько искусственный, но на нём проще объяснить.
Случай 1:Запись эталона в NAND
Мы записали в микросхему эталонную (точно не содержащую ошибок) прошивку. При верификации получаем 3 ошибки на страницу. Программа предупреждает об исправимых ошибках, но верификация проходит успешно.
Рисунок 1.
Если вы эту микросхему NAND поставите в ваш прибор, он исправно заработает, поскольку встроенный в прибор алгоритм ЕСС обязан(!) исправлять не менее 4-х ошибок на страницу (это паспортные характеристики данной NAND и прибор просто обязан справляться с таким количеством ошибок).
Случай 2:Чтение микросхемы NAND
Мы считали прошивку из исправной микросхемы, стоящей в приборе (напомню, мы получаем по 3 ошибки на страницу). Далее мы еще раз считывали прошивку. Мы опять получили 3 ошибки на страницу.
Рисунок 2.
Но ошибки не возникают в одних и тех же местах! При сравнении результатов 1-го и 2-го считывания может получиться до 6-ти ошибок на страницу. Это превысит допустимые 4 для данной микросхемы, но это вовсе не означает, что микросхема неисправна!
Случай 3:Копирование микросхемы NAND
Мы считали прошивку из исправной микросхемы, стоящей в приборе (получая по 3 ошибки на страницу). Далее записали полученную прошивку в чистую микросхему.
Рисунок 3.
При верификации получим по 3 ошибки на страницу. Это вроде бы меньше 4-х. Но заработает ли прибор? Не факт. Всего ошибок может быть до 6-ти на страницу (3 при считывании образца плюс 3 при работе микросхемы в приборе), но ЕСС прибора исправит только 4.
На самом деле, в реальной жизни, количество ошибок по страницам в микросхемах сильно колеблется. В новых микросхемах количество ошибок не превышает одной-двух, да и то не на каждой странице. Заявленное число ошибок (в нашем примере 4) это уже в сильно изношенной микросхеме. Беда только в том, что в ремонт с формулировкой "слетела прошивка" именно такие приборы и попадают.
7. Практический совет по выбору порога ошибок.
Можно порекомендовать простой алгоритм выбора количества допустимых ошибок при верификации (настройка порога толерантности):
Случай 1. Очень оптимистичный. У вас есть эталонная прошивка и она точно без ошибок.
Такую прошивку можно писать и верифицировать с порогом ошибок, заданным в документации на микросхему (во всех наших примерах – это 4).
Случай 2. Реальный. У вас нет эталонной прошивки.
Вы считываете прошивку из микросхемы. Чтобы ее можно было уверенно использовать, количество ошибок на страницу не должно превышать половины лимита (т.е. для нашего примера — это 2 ошибки). Далее вы пишете эту прошивку в микросхему. При верификации записанной микросхемы ошибок тоже не должно быть более 2-х.
Рисунок 4.
Чем больше вы ошибок получаете при считывании эталона и верификации записи, тем меньше вероятность того, что алгоритм ЕСС справится с исправлением ошибок и прибор заработает. Здесь уже как повезет. :)
8. "Ваш программатор полный отстой, вот другие программаторы решают эту проблему".
Нет. У других производителей программаторов (во всяком случае у всех, которые нам известны на данный момент) всё точно так же. Те же предложения: "Cкажите какой ЕСС и мы все реализуем".
Те же методы верификации с "терпимостью" ошибок ЕСС. У некоторых производителей есть настройка с выбором алгоритмов из встроенного стандартного набора, с необходимостью указания полинома, разметки страницы и кучи других параметров. В практической жизни это вам не сильно поможет.
9. "Я все прочитал и ничего не понял.
Вы сможете наконец что-то сделать, чтобы NAND читались "нормально"?"
Мы над этим работаем. До сих пор мы не оставляем надежды на создание способа автоматического восстановления алгоритма ЕСС (хакинга) только на основании анализа прошивки.
Понятно, что для всех случаев его создать никогда не удастся, но если нам удастся восстановить алгоритм ЕСС хотя бы в четверти случаев, мы будем просто счастливы.
Что для этого нужно? Присылайте нам свои считанные прошивки. Присылайте нам как можно больше считанных прошивок. Я знаю, что они для вас представляют ценность, но мы не собираемся их распространять или использовать как-то кроме их анализа на предмет ЕСС и таблиц плохих блоков. Если вы опасаетесь, можно скрывать название системы, в которой прошивка используется.
Всё что нас интересует — это название микросхемы, из которой прошивка считана. Для лучшей защиты своих интересов вы можете прислать прошивку не полностью. Если вы опасаетесь — не присылайте. Это только просьба.
Еще очень желательно знать марку контроллера NAND, используемого в системе или марку центрального процессора, то есть название микросхемы, к которой NAND подключена.
Собрав достаточную базу прошивок, я надеюсь, нам удастся "хакнуть" ЕСС и сильно облегчить вам работу с NAND.
Только совместными усилиями мы сможем добиться значительных результатов в работе!
Универсальный программатор RT809H для прошивки EMMC Nand FLASH и т.п.
Комплектации: Базовая 12, 21,24 адаптера :
1. Программатор RT809H EMMC-Nand FLASH - 1шт.
2. Адаптер под пайку TSOP-VSOP-SSOP - 1шт.
3. Адаптер под пайку SOP PAST Socket - 1шт.
4. Кабель VGA - 1шт.
5. Кабель USB (высококачественный) - 1шт.
6. IC экстрактор
7. Прищепка.
8.адаптер SOIC8 - DIP8 adapter ZIF (205mil).
9.адаптер PLCC20
10.адаптер PLCC28
11.адаптер PLCC32
12.ISCP плата с проводами
13.адаптер TSSOP8 in DIP8
14.KB9012 плата.
15.2 шт IT8587 IT8585E шлейфа.
16.ISP кабель.
17.ICSP кабель.
18.RT-SOP-A ISP кабель.
19.FFC Line 200MM 0.5mm-32P
20.FFC Line 200MM 1.0mm-32P
21.FPC Base Under 0.5mm-32P
22.FPC Base Under 1.0mm-32P
150 млн.).
1 * SOP16 150 мельница
1 * SOP28 300 мельница (также поддерживает SOP20 SOP18 SOP16 300MIL).
1 * PLCC44.
1 * PLCC32.
1 * PLCC28.
1 * PLCC20.
1 * SOP44 в DIP44
1 * ISCP доска с проводом
1 * SOP20 200MIL
1 * SSOP28 к DIP28
1 * TSSOP8 в DIP8
1 * KB9012 доска.
1 * SOP8 зажим испытания.
1 * TSOP-VSOP-SSOP адаптер.
2 * IT8587 IT8585E плоский кабель.
2 * кабель isp.
1 * iscp кабель
1 * FFC Line 200 ММ 0.5 мм-32 P
1 * FFC Line 200 ММ 1.0 мм-32 P
1 * FPC Базы Под 0.5 мм-32 P
1 * FPC Базы Под 1.0 мм-32 P
Для внутрисхемного программирования ISP программатор имеет VGA и HDMI порты и JTAG. Также программатор может питаться как от USB-порта, так и от адаптера DC от 9В до 12В.
Выбрать программируемый элемент можно как в ручную, так и в автоматическом режиме. Для автоматического программирования EMMC необходимо выбрать EMMC_AUTO_ISP, а для NAND FLASH выбрать NAND_FLASH_AUTO.
для eMMC
На сегодняшний день существует много проблем с флеш-накопителем. Одна из причин, по которой устройство может неправильно работать, является повреждение контроллера на программном уровне.
Для устранения таких повреждений есть ряд программ, которые помогут восстановить флешку в исходное состояние, но данные будут потеряны безвозвратно.
Прежде чем приступать к восстановлению флешек, необходимо скопировать информацию в другое место, если есть такая возможность.
SMI Mass Production Tool
Первым делом нужно скачать программу (утилиту) с сайта и распаковать, причем, название папки должно быть на английском – без символов и цифр, например: «C:\USBTool\». В корне распакованной папки должен быть файл «sm32text-V… .exe».
После подключаем флеш-накопитель. В случае, если программа не видит флешку, следует нажать на клавишу «F5» для анализа совместимых устройств.
В окне программы, если флешка определилась, должны быть следующие надписи:
- «Status» – «Ready»;
- В первой ячейке снизу должен показаться значок и цифры.
Следующим шагом нужно проверить настройки утилиты, чтобы понять, правильно ли заданы они:
- В правом стороне области окна требуется нажать на «Setting», пароль прописывается «320».
- Если программа не найдет файл настроек «Default.ini», его нужно выбрать вручную (документ находится в корневой папке).
Далее нужно указать настройки для прошивки во вкладке «Main Flow Setting». Для этого потребуется обратить внимание на такие параметры, как:
- «Pretest» (поставить галочку) – «Erase All Block»;
- «Write CID» (поставить галочку) – «TSOP Standard Type»;
- «USB Power» – «300 mA», рекомендуемое число выставления для флешек среднего типа, то есть не старой и не новой;
- «Disk Type» – «USB-ZIP», будет определяться как USB-ZIP;
- «Format» (поставить галочку);
- FAT32 (поставить галочку), стандартная файловая система.
Чтобы установить допустимое количество BAD секторов и завершить прошивку успешно, необходимо перейти в пункт «Capacity Setting».и выставить два параметра:
- «Bad Block» = 44;
- «Fix» – «MIN» = 6000 MB; «MAX» = 6500 MB.
После чего сохраняем настройки нажатием на кнопку «OK», для запуска прошивки жмем «Start».
Если процесс перепрошивки занимает более 10 минут, можно не ждать результатов, так как в конце выскочит ошибка.
AlcorMP
Для работы с данной программой нужно проделать след. действия:
Ждем полной загрузки утилиты и только потом вставляем флешку, если устройство не определилось, то следует нажать на «R» (обновление). В окне утилиты должно высветиться синяя надпись, означающая успешную загрузку флешки.
Далее необходимо перейти в настройки. Для этого потребуется нажать на клавишу «S» (Setup). Программа выдаст окно, где нужно вести пароль – оставляем поля пустыми, так как стандартно в настройках нет пароля.
Во вкладке «Flash Type» задаются параметры:
- «Optimize» – «Speed Optimize»;
- «Scan Mode» – «Low Level Format»;
- «LLF Check» – «Half capacity Check»;
- «Scan Level» – «Fast Scan4»;
- «ECC» – «12».
В другой вкладке «Other» в пункте «AdjustPower» рекомендуется поставить «300 mA».
После чего нажимаем «OK» и ждем окончания загрузки.
Вывод
Прежде чем заниматься прошивкой флешки, необходимо найти всю информацию про это устройство: какая утилита нужна и какие настройки требуется выставить для прошивки. Иначе устройство может сгореть или выйти из строя.
Читайте также: