Программатор для nand flash своими руками

Содержание
  1. Программаторы Nand-flash кто нибудь собирал на AVR?
  2. Sergey_Ilyshkin
  3. Информация Неисправность Прошивки Схемы Справочники Маркировка Корпуса Сокращения и аббревиатуры Частые вопросы Полезные ссылки
  4. Справочная информация
  5. Неисправности
  6. О прошивках
  7. Схемы аппаратуры
  8. Справочники
  9. Marking (маркировка) — обозначение на электронных компонентах
  10. Package (корпус) — вид корпуса электронного компонента
  11. Краткие сокращения
  12. Частые вопросы
  13. Полезные ссылки
  14. Программатор для nand flash своими руками
  15. Программирование NAND для чайников. Часть 1. Ошибки.
  16. CОДЕРЖАНИЕ:
  17. 1. Коварство NAND. Структура.
  18. 2. Коварство NAND. Ошибки.
  19. 3. Магия ЕСС.
  20. 4. Коварство NAND. Магия ЕСС есть, но она не работает.
  21. 5. Почему алгоритмов расчета ECC так много.
  22. 6. Коварство NAND. Магия ЕСС есть, но она не работает. Что делать?
  23. 7. Практический совет по выбору порога ошибок.
  24. 8. «Ваш программатор полный отстой, вот другие программаторы решают эту проблему».
  25. 9. «Я все прочитал и ничего не понял. Вы сможете наконец что-то сделать, чтобы NAND читались «нормально»?»

Программаторы Nand-flash кто нибудь собирал на AVR?

Sergey_Ilyshkin

Информация Неисправность Прошивки Схемы Справочники Маркировка Корпуса Сокращения и аббревиатуры Частые вопросы Полезные ссылки

Справочная информация

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

  • Диагностика
  • Определение неисправности
  • Выбор метода ремонта
  • Поиск запчастей
  • Устранение дефекта
  • Настройка

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

Неисправности

Все неисправности по их проявлению можно разделить на два вида — стабильные и периодические. Наиболее часто рассматриваются следующие:

  • не включается
  • не корректно работает какой-то узел (блок)
  • периодически (иногда) что-то происходит
Читайте также:  Статуэтка для колец своими руками

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

  • О прошивках

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

    На сайте существуют разделы с прошивками (дампами памяти) для микросхем, либо для обновления ПО через интерфейсы типа USB.

    • Прошивки ТВ (упорядоченные)
    • Запросы прошивок для ТВ
    • Прошивки для мониторов
    • Запросы разных прошивок
    • . и другие разделы

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

  • Схемы аппаратуры

    Начинающие ремонтники часто ищут принципиальные схемы, схемы соединений, пользовательские и сервисные инструкции. Это могут быть как отдельные платы (блоки питания, основные платы, панели), так и полные Service Manual-ы. На сайте они размещены в специально отведенных разделах и доступны к скачиванию гостям, либо после создания аккаунта:

    • Схемы телевизоров (запросы)
    • Схемы телевизоров (хранилище)
    • Схемы мониторов (запросы)
    • Различные схемы (запросы)

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

  • Справочники

    На сайте Вы можете скачать справочную литературу по электронным компонентам (справочники, таблицу аналогов, SMD-кодировку элементов, и тд.).

    Marking (маркировка) — обозначение на электронных компонентах

    Современная элементная база стремится к миниатюрным размерам. Места на корпусе для нанесения маркировки не хватает. Поэтому, производители их маркируют СМД-кодами.

    Package (корпус) — вид корпуса электронного компонента

    При создании запросов в определении точного названия (партномера) компонента, необходимо указывать не только его маркировку, но и тип корпуса. Наиболее распостранены:

    • DIP (Dual In Package) – корпус с двухрядным расположением контактов для монтажа в отверстия
    • SOT-89 — пластковый корпус для поверхностного монтажа
    • SOT-23 — миниатюрный пластиковый корпус для поверхностного монтажа
    • TO-220 — тип корпуса для монтажа (пайки) в отверстия
    • SOP (SOIC, SO) — миниатюрные корпуса для поверхностного монтажа (SMD)
    • TSOP (Thin Small Outline Package) – тонкий корпус с уменьшенным расстоянием между выводами
    • BGA (Ball Grid Array) — корпус для монтажа выводов на шарики из припоя

  • Краткие сокращения

    При подаче информации, на форуме принято использование сокращений и аббревиатур, например:

    Сокращение Краткое описание
    LED Light Emitting Diode — Светодиод (Светоизлучающий диод)
    MOSFET Metal Oxide Semiconductor Field Effect Transistor — Полевой транзистор с МОП структурой затвора
    EEPROM Electrically Erasable Programmable Read-Only Memory — Электрически стираемая память
    eMMC embedded Multimedia Memory Card — Встроенная мультимедийная карта памяти
    LCD Liquid Crystal Display — Жидкокристаллический дисплей (экран)
    SCL Serial Clock — Шина интерфейса I2C для передачи тактового сигнала
    SDA Serial Data — Шина интерфейса I2C для обмена данными
    ICSP In-Circuit Serial Programming – Протокол для внутрисхемного последовательного программирования
    IIC, I2C Inter-Integrated Circuit — Двухпроводный интерфейс обмена данными между микросхемами
    PCB Printed Circuit Board — Печатная плата
    PWM Pulse Width Modulation — Широтно-импульсная модуляция
    SPI Serial Peripheral Interface Protocol — Протокол последовательного периферийного интерфейса
    USB Universal Serial Bus — Универсальная последовательная шина
    DMA Direct Memory Access — Модуль для считывания и записи RAM без задействования процессора
    AC Alternating Current — Переменный ток
    DC Direct Current — Постоянный ток
    FM Frequency Modulation — Частотная модуляция (ЧМ)
    AFC Automatic Frequency Control — Автоматическое управление частотой

    Частые вопросы

    После регистрации аккаунта на сайте Вы сможете опубликовать свой вопрос или отвечать в существующих темах. Участие абсолютно бесплатное.

    Кто отвечает в форуме на вопросы ?

    Ответ в тему Программаторы Nand-flash кто нибудь собирал на AVR? как и все другие советы публикуются всем сообществом. Большинство участников это профессиональные мастера по ремонту и специалисты в области электроники.

    Как найти нужную информацию по форуму ?

    Возможность поиска по всему сайту и файловому архиву появится после регистрации. В верхнем правом углу будет отображаться форма поиска по сайту.

    По каким еще маркам можно спросить ?

    По любым. Наиболее частые ответы по популярным брэндам — LG, Samsung, Philips, Toshiba, Sony, Panasonic, Xiaomi, Sharp, JVC, DEXP, TCL, Hisense, и многие другие в том числе китайские модели.

    Какие еще файлы я смогу здесь скачать ?

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

    Полезные ссылки

    Здесь просто полезные ссылки для мастеров. Ссылки периодически обновляемые, в зависимости от востребованности тем.

    Источник

    Программатор для nand flash своими руками

    Проект был разработан для создания программатора для популярной флэш-памяти NAND,чтобы прочитать NAND Flash например K9GAG08U0E а также различного типа оборудования — навигаторов, модемы, маршрутизаторы, телевизоры и планшеты. И не обязательно теперь покупать профессиональный инструмент по цене дороже для чтения / программирования одного чипа.

    поддержка большинства Flash NAND, доступных на рынке в корпусе TSOP48 для 3,3 В
    поддержка SLC, MLC и TLC-памяти
    поддержка до четырех линий CE #
    поддержка 8-битной шины данных
    автоматическая идентификация запрограммированной системы
    поддерживает чтение регистров ONFI в версии 1.0 — 4.0
    аппаратная защита от случайного письма
    передача данных в режиме серийной съемки: 8 Мбит / с
    аппаратное измерение времени чтения, записи и удаления
    добавление новых подписей поддерживаемых систем через отчетность
    аппаратная сигнализация о правильности вставки системы в стойку (красный / зеленый)
    аппаратная защита от обратной установки системы в стенд (ограничение до 150 мА)
    ежедневные обновления сигнатур поддерживаемых систем.

    Hynix
    128Mbits: HY27US08281A
    256Mbits: HY27US08561A
    512Mbits: H27U518S2CTR, HY27US08121A
    1Gbits: HY27UF081G2A
    2Gbits: HY27UF082G2B
    4Gbits: H27U4G8F2D*
    8Gbits: H27U8G8G5D*, HY27UG08*
    16Gbits: H27UAG8T2BTR,HY27UH08*, HY27UH08AG*,
    32Gbits: H27UBG8T2A, H27UBG8T2B

    Samsung
    128Mbits: K9F2808U0A, K9F2808U0B, K9F2808U0C-YCB0
    256Mbits: K9F5608U0A, K9F5608U0B-PCB0
    512Mbits: K9F1208U0A, K9F2808U0B, K9F2808U0C-PCB0
    1Gbits: K9F1G08U0A, K9F1G08U0B, K9F1G08U0C-PCB0
    2Gbits: K9F2G08U0A, K9F2G08U0B, K9F2G08U0C
    4Gbits: K9F4G08U0A, K9F4G08U0B-PCB0, K9F4G08U0C, K9F4G08U0D-SCB0, K9G4G08U0*
    8Gbits: K9G8G08U0A, K9G8G08U0M, K9K8G08U0A, K9F8G08U0M
    16Gbits: K9GAG08U0D, K9GAG08U0E

    Micron
    128Mbits: NAND128W3A*
    256Mbits: NAND256W3A*
    512Mbits: NAND512W3A*
    1Gbits: MT29F1G08*
    2Gbits: MT29F2G08*
    4Gbits: MT29F4G08*
    8Gbits: MT29F8G08*
    32Gbits: MT29F32G08CBACAWP

    Spansion
    1Gbits: S34ML01G1
    2Gbits: S34ML02G1
    4Gbits: S34ML04G1

    Toshiba
    1Gbits: TC58NVG0S3, TC58DVG02D5TA00
    2Gbits: TC58NVG1S3
    4Gbits: TC58NVG2S3

    NOR Flash:
    SST
    SST39VF6401B, SST39VF3201B
    Micron
    JS28F320C3B*, JS28F320C3T*, TE28F320C3B*, TE28F320C3T*
    ST
    M28W320FCB, M28W320FCT
    M29W160EB, M29W160ET

    Источник

    Программирование NAND для чайников.
    Часть 1. Ошибки.

    2021-02-11 Дата последнего изменения: 2021-02-28

    В статье в предельно доступной форме рассматриваются особенности применения микросхем NAND FLASH.

    CОДЕРЖАНИЕ:

    NAND не совсем обычные микросхемы, поэтому те инженеры, которые с ними сталкиваются впервые, часто бывают обескуражены. Более подробно, хотя и очень примитивно, особенности NAND описаны в статьях «Программирование NAND FLASH» и «Программирование SPI NAND».

    Здесь же я постараюсь изложить суть использования NAND еще проще.

    Тому, кто собирается работать с NAND профессионально, материала из этой статьи будет явно недостаточно, но для любителя, который решил отремонтировать 2–3 прибора, в которых используется микросхема типа NAND, это может очень помочь.

    1. Коварство NAND. Структура.

    NAND организованы следующим образом: страницы > блоки –> логические модули –> кристаллы.

    • Страница — это минимальная единица NAND, которую можно считать или записать. Обращение к отдельным ячейкам невозможно.
    • Блок — это несколько страниц. Это минимальная единица NAND, которую можно стереть.
    • Логический модуль — это практически независимая микросхема NAND, его можно писать, читать, стирать совершенно отдельно, а вот обращение к нему идёт через общий интерфейс.
    • Кристаллы — это фактически отдельные микросхемы, которые просто упакованы в один корпус с объединением всех сигналов питания и управления, кроме сигнала CS (выбор кристалла). Это выглядит так, как будто несколько микросхем NAND положили одну на другую, спаяли все их выводы и поместили в один корпус (на самом деле это именно так и делается).

    На рисунке ниже показан типичный пример организации микросхемы NAND с одним логическим модулем и одним кристаллом.

    В чем коварство NAND? В адресации.

    Даже начинающий радиолюбитель знает, что к любой ячейке микросхемы памяти можно обратиться, указав её адрес. Перебирая по порядку все адреса с первого до последнего, можно считать или записать всю микросхему (именно так поступает программатор).

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

    При считывании NAND всегда происходит чтение всей страницы целиком, страница перемещается во внутренний буфер (page register), а уже из буфера можно прочитать содержимое страницы байт за байтом или в произвольном порядке.

    То же самое при записи — сначала заполняется внутренний буфер (целиком или частично), затем страница записывается целиком. Размер буфера равен размеру страницы. Коварство адресации в том, что размер страницы не кратен степени двух. То есть просматривать содержимое микросхемы байт за байтом не получится.

    2. Коварство NAND. Ошибки.

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

    • Пользователь ставит микросхему в программатор.
    • Читает её. Читает еще раз.
    • Сравнивает. О ужас! Обнаружено более тысячи ошибок!
    • Паника! Микросхема не работает. Программатор не работает.Ничего не работает.
    • Нужно срочно звонить нам (производителю) и требовать ремонта программатора!

    Спокойно, дружище, спокойно. Это NAND, она так работает.

    Сейчас типичная страница наиболее распространенных NAND равна двум килобайтам плюс дополнительные байты. Очень многие микросхемы при чтении дают до 16-ти одиночных ошибок на одну страницу. И это нормально. Берем, например, микросхему на 2 гигабайта. Нехитрое вычисление. Получаем, что при считывании микросхемы может быть до 16 777 216 ошибок!

    Еще раз: 16 миллионов! Ошибок в микросхеме! Как с этим жить?! Как может что-то работать вообще? Об этом поговорим чуть позже.

    А сейчас поясним понятие «одиночные ошибки«.

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

    3. Магия ЕСС.

    Все наверное знают, что такое CRC. Код CRC (еще иногда (ошибочно) называют «контрольная сумма») — это такой специальный код, который позволяет найти ошибку в данных.

    ЕСС — это более продвинутый код. Он позволяет не только обнаружить но и исправить (!) ошибку в данных. Поэтому он и называется ECC (Error Correction Code) — Код Исправляющий Ошибки.

    Как работает такой код? Ох, лучше не спрашивайте. Я сам не понимаю (шутка). Просто поверьте в магию. Страница считана с ошибками, но код ЕСС может все исправить. Задействуем код ЕСС — и все читается без ошибок.

    Кратко опишем как выглядит работа кодера/декодера ЕСС:

    • Берется порция данных, например, 2048 байт, записывается в страницу NAND.
    • Рассчитывается код ЕСС и тоже записывается (назовем его ECC1) (именно для записи таких кодов страница сделана чуть больше!)
    • Затем читаем страницу 2048 байт.
    • Опять рассчитываем код ЕСС (назовем его ECC2).
    • Читаем записанный код ЕСС1 и сравниваем ECC1 и ECC2.
    • Если коды совпадают, значит ошибок нет.

    Вот до этого места коды CRC и ECC не сильно отличаются, магия ЕСС начинается дальше:

    • Если коды различаются — рассчитываем так называемый синдром ошибки. Он покажет, сколько есть ошибок и где они расположены (с точностью до бита).
    • Зная, где расположены ошибки, их можно исправить.

    Вот и вся магия. Мы просто исправляем ошибки.

    Конечно код ЕСС не может исправить все ошибки. Он может исправить их небольшое количество, скажем 16. Но нам больше и не нужно! Микросхема ведь не делает много ошибок 🙂

    4. Коварство NAND. Магия ЕСС есть, но она не работает.

    «Так просто?» — скажете вы. «Тогда почему программатор не использует ЕСС для исправления ошибок?! Я из раза в раз читаю микросхему и все время ошибки».

    Да. Действительно, почему?

    А вот почему.
    Чтобы исправить все ошибки нужно знать:

    1. Какими порциями (128, 256, 512, 1024 или 2048) в вашем приборе (не в микросхеме NAND, а именно в приборе. ) разработчик прибора решил записывать данные и вычислять ЕСС.
    2. Какой алгоритм ЕСС он решил использовать.
    3. Какой порождающий полином он решил использовать.
    4. Как разработчик разбил страницу NAND на порции и куда решил записывать сами коды ЕСС.

    Как? Вы это не знаете?! Вот и мы не знаем. И, возможно, никто, кроме разработчика прибора, не знает.

    Если из этого списка 1-й и 4-й пункты можно попытаться выяснить, анализируя прошивку микросхемы, а порождающий полином (пункт 3) — подобрать, то с пунктом 2 (алгоритм ECC) все очень плохо.

    5. Почему алгоритмов расчета ECC так много.

    На данный момент самые распространённые коды исправляющие ошибки это:

    • Код Хэминга (Hamming Code) или просто ЕСС.
      Позволяет исправлять одиночную ошибку и находить двойную. Исторически самый первый подобный код. Для современных NAND сейчас применяется редко из-за низких кодовых характеристик – исправление всего одной ошибки сейчас явно недостаточно.
      Теорию подробнее читайте здесь.
    • Код Рида-Соломона (Reed-Solomon Сode).
      Позволяет исправить N (любое количество ошибок), но для исправления N ошибок потребуется 2*N слов. Т.е. для исправления 16-ти ошибок нужен ECC код длиной 8 байт. Код Рида-Соломона является частным случаем кода БЧХ.
      Теорию о коде Рида-Соломона подробнее читайте здесь.
    • Код БЧХ (BCH Code) или код Боуза-Чоудхури-Хоквингема.
      Это широкий класс циклических кодов, применяемых для защиты информации от ошибок.
      Теорию можно почитать здесь.

    Математические теории кодов достаточно сложные, но основные приемы работы с кодами известны, порождающие полиномы легко найти. Казалось бы, мы легко сможем подобрать нужный алгоритм ECC, просто анализируя прошивку. Сначала мы тоже так решили, однако всё оказалось сложнее.

    Большинство современных встроенных систем базируются на Linux. Linux для работы накопителей на основе FLASH памяти, как правило, использует драйвер MTD. В драйвере MTD реализовано программное кодирование для NAND кодом BCH с вполне известным набором полиномов. Всё будто просто, но в реальной жизни (в реальных прошивках) такое кодирование не встречается. Почему? Всё упирается в деньги. Вернее, в желание производителей аппаратуры их сэкономить.

    Почему вместо обычной памяти FLASH, работающей безошибочно, используются NAND, производящие кучу ошибок? Потому что это в разы дешевле. За разработку алгоритма кодирования/декодирования ЕСС заплатить нужно ОДИН раз, за память без ошибок нужно платить КАЖДЫЙ раз в КАЖДОМ устройстве.

    Ровно по этой же причине в реальных устройствах (особенно массовых) никогда не используется чисто программное декодирование ЕСС – это декодирование является очень ресурсозатратным. Получается: ставим дешевую память – получаем или медленно работающее устройство, или нужно ставить мощный процессор, стоимость которого сводит на нет выгоды от использования дешевой памяти.

    Поэтому декодированием ЕСС в современных системах занимаются специальные сопроцессоры или контроллеры. Придумываются и реализуются более совершенные коды ЕСС. Часто используются комбинированные коды CRC/ECC. Код CRC рассчитывается быстрее, чем ЕСС, это позволяет использовать CRC-часть для обнаружения ошибок, а полное декодирование ЕСС — только при их наличии.

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

    Как итог — мы видим прошивку. Часто мы видим как страница разбита на подстраницы. Мы видим где находятся коды ЕСС подстраниц. Но не знаем, каким алгоритмом они рассчитаны, и поэтому не можем их использовать для исправления ошибок .

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

    6. Коварство NAND. Магия ЕСС есть, но она не работает. Что делать?

    Очень часто нам приходится слышать один и тот же вопрос: «Что делать, если NAND всегда читается с огромным количеством ошибок? Как прочитать без ошибок?»

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

    Вы не знаете алгоритм? Тогда есть только один способ: толерантность к ошибкам (и этот способ успешно работает).

    Просто читаете микросхему. Она будет считана с ошибками. При верификации требуется задать допустимое количество ошибок на страницу микросхемы. (Для всех вновь добавленных микросхем значение по умолчанию уже задано. Если не задано нужно смотреть документацию или просить нас, чтобы мы внесли данные ЕСС в базу).

    Программа будет сверять микросхему и подсчитывать количество ошибок. Если количество ошибок не превысит заданное значение — значит всё в порядке. Ошибка сравнения не будет выдана, вы просто будете проинформированы о количестве «исправимых» ошибок.

    Но не все так однозначно.

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

    Понятно, что пример несколько искусственный, но на нём проще объяснить.

    Случай 1:Запись эталона в NAND

    Мы записали в микросхему эталонную (точно не содержащую ошибок) прошивку. При верификации получаем 3 ошибки на страницу. Программа предупреждает об исправимых ошибках, но верификация проходит успешно.

    Если вы эту микросхему NAND поставите в ваш прибор, он исправно заработает, поскольку встроенный в прибор алгоритм ЕСС обязан(!) исправлять не менее 4-х ошибок на страницу (это паспортные характеристики данной NAND и прибор просто обязан справляться с таким количеством ошибок).

    Случай 2:Чтение микросхемы NAND

    Мы считали прошивку из исправной микросхемы, стоящей в приборе (напомню, мы получаем по 3 ошибки на страницу). Далее мы еще раз считывали прошивку. Мы опять получили 3 ошибки на страницу.

    Но ошибки не возникают в одних и тех же местах! При сравнении результатов 1-го и 2-го считывания может получиться до 6-ти ошибок на страницу. Это превысит допустимые 4 для данной микросхемы, но это вовсе не означает, что микросхема неисправна!

    Случай 3:Копирование микросхемы NAND

    Мы считали прошивку из исправной микросхемы, стоящей в приборе (получая по 3 ошибки на страницу). Далее записали полученную прошивку в чистую микросхему.

    При верификации получим по 3 ошибки на страницу. Это вроде бы меньше 4-х. Но заработает ли прибор? Не факт. Всего ошибок может быть до 6-ти на страницу (3 при считывании образца плюс 3 при работе микросхемы в приборе), но ЕСС прибора исправит только 4.

    На самом деле, в реальной жизни, количество ошибок по страницам в микросхемах сильно колеблется. В новых микросхемах количество ошибок не превышает одной-двух, да и то не на каждой странице. Заявленное число ошибок (в нашем примере 4) это уже в сильно изношенной микросхеме. Беда только в том, что в ремонт с формулировкой «слетела прошивка» именно такие приборы и попадают.

    7. Практический совет по выбору порога ошибок.

    Можно порекомендовать простой алгоритм выбора количества допустимых ошибок при верификации (настройка порога толерантности):

    Случай 1. Очень оптимистичный. У вас есть эталонная прошивка и она точно без ошибок.

    Такую прошивку можно писать и верифицировать с порогом ошибок, заданным в документации на микросхему (во всех наших примерах – это 4).

    Случай 2. Реальный. У вас нет эталонной прошивки.

    Вы считываете прошивку из микросхемы. Чтобы ее можно было уверенно использовать, количество ошибок на страницу не должно превышать половины лимита (т.е. для нашего примера — это 2 ошибки). Далее вы пишете эту прошивку в микросхему. При верификации записанной микросхемы ошибок тоже не должно быть более 2-х.

    При соблюдении этих условий прибор заработает с очень высокой вероятностью (ЕСС прибора должно исправить 2+2=4 ошибки).

    Чем больше вы ошибок получаете при считывании эталона и верификации записи, тем меньше вероятность того, что алгоритм ЕСС справится с исправлением ошибок и прибор заработает. Здесь уже как повезет. 🙂

    8. «Ваш программатор полный отстой, вот другие программаторы решают эту проблему».

    Нет. У других производителей программаторов (во всяком случае у всех, которые нам известны на данный момент) всё точно так же. Те же предложения: «Cкажите какой ЕСС и мы все реализуем».

    Те же методы верификации с «терпимостью» ошибок ЕСС. У некоторых производителей есть настройка с выбором алгоритмов из встроенного стандартного набора, с необходимостью указания полинома, разметки страницы и кучи других параметров. В практической жизни это вам не сильно поможет.

    9. «Я все прочитал и ничего не понял.
    Вы сможете наконец что-то сделать, чтобы NAND читались «нормально»?»

    Мы над этим работаем. До сих пор мы не оставляем надежды на создание способа автоматического восстановления алгоритма ЕСС (хакинга) только на основании анализа прошивки.

    Понятно, что для всех случаев его создать никогда не удастся, но если нам удастся восстановить алгоритм ЕСС хотя бы в четверти случаев, мы будем просто счастливы.

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

    Всё что нас интересует — это название микросхемы, из которой прошивка считана. Для лучшей защиты своих интересов вы можете прислать прошивку не полностью. Если вы опасаетесь — не присылайте. Это только просьба.

    Еще очень желательно знать марку контроллера NAND, используемого в системе или марку центрального процессора, то есть название микросхемы, к которой NAND подключена.

    Собрав достаточную базу прошивок, я надеюсь, нам удастся «хакнуть» ЕСС и сильно облегчить вам работу с NAND.

    Только совместными усилиями мы сможем добиться значительных результатов в работе!

    Источник

  • Оцените статью