Корзина
(нет товаров)
 
(495) 500-7890
На главную Программаторы Панельки Загрузка ПО Магазин Поддержка Поиск панельки Карта сайта

Работа с микросхемами NAND-Flash несколько отличается от работы с обычными микросхемами памяти. Это связано с особенностями самих микросхем. Данные микросхемы имеют очень большой объем памяти при относительно небольших размерах кристалла, что приводит к невысокой надежности целостности данных и нестандартным режимам чтения и записи. На рисунке приведена типовая организация микросхемы NAND-Flash.

Память микросхемы разделена на страницы (pages). Размер страницы зависит от микросхемы. Страница - это минимальный размер данных, который может быть считан или записан в микросхему. В каждой странице, кроме основной области находится небольшая дополнительная (spare) область, в которой может храниться служебная информация: коды коррекции ошибок, маркеры дефектных блоков, номера страниц и т.д. 64 или 128 страниц объединяются в блок (bolck). Это минимальная единица при стирании. Чтобы изменить в памяти микросхемы один байт, надо считать и записать страницу, но чтобы перезаписать страницу, надо стереть целый блок. Таким образом, чтобы изменить в микросхеме один байт, надо считать, стереть и записать целый блок. Даже, если содержимое страницы можно переписать без стирания, делать это настоятельно не рекомендуется. Повторная запись одной и той же страницы или запись в микросхему пустой страницы, может привести к появлению ошибок в этой странице.

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

На форумах есть немало примеров, когда один и тот же дамп, тупо записанный в разные микросхемы, приводит к противоположным результатам: в одном случае устройство работает, в другом нет. Здесь все зависит от того, попадают ли нужные данные в дефектный блок и корректно ли программатор пишет микросхему. Если микросхема не содержит дефектных блоков или дефектный блок попадает в пустое место в прошивке, то, как правило, устройство работает нормально. В противном случае устройство не запустится или будет работать с ошибками. Такой же результат будет, если записать микросхему в режиме пропуска плохих блоков, а в устройстве используется алгоритм RBA. Другой пример, когда в прошивке требуется изменить один или несколько байт. Запись проходит без ошибок, но устройство работает не правильно. В этом случае виноваты алгоритмы коррекции ошибок (ECC - Error Correction Code), используемые в устройстве. Если изменить дамп или карту дефектных блоков и не перерасчитать ECC в этих страницах, то устройство воспримет внесенные изменения как ошибки и исправит их.

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

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

Работу с микросхемами NAND-Flash поддерживают программаторы Тритон V5.7TU и V5.8TU при подключении через USB. Работа с микросхемами NAND-Flash в автономном режиме или через COM порт отключена из-за низкой скорости. Рекомендуется использовать программатор V5.8TU, не только как более современный и скоростной, но и потому, что эта модель имеет гораздо больше возможностей и настроек для обеспечения стабильной работы с б/у микросхемами. В отличие от программатора V5.7TU, в котором процессор программно формирует управляющие сигналы, в программаторе V5.8TU работа с микросхемами организована на аппаратном уровне, без участия процессора.

 

Выбор микросхемы.

Для микросхем NAND-Flash в программе доступно автоматическое определение (чтение ID) и считывание блока Параметров микросхемы. Запуск скрипта чтения выполняется при нажатии кнопки "Определить" в окне выбора микросхемы. Для корректной работы скрипта должен быть выбран соответствующий адаптер.

Если считанный ID отсутствует в базе микросхем, программа производит анализ блока Параметров по стандарту ONFI, настраивает все параметры и добавляет ее в список поддерживаемых микросхем. После перезапуска программы микросхема будет находиться в разделе "Users Chips".

 

 

Чтение микросхемы.

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

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

Для исправления таких ошибок в устройстве используются специальные алгоритмы коррекции ошибок (ECC - Error Correction Code). Наибольшее распространение получили три алгоритма:

  • Код Хэмминга (Hamming Code) - позволяет исправлять одну битовую ошибку в блоке 256 или 512 байт.
  • Код Рида-Соломона (Reed-Solomon Сode) - корректирует до 4 поврежденных байт в 512-байтном блоке.
  • Коды БЧХ (BCH Code) - позволяют исправить до 64 ошибок в блоках от 256 до 4096 байт.

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

Для не особо подготовленных пользователей, в программе имеется режим автоматического определения алгоритма ECC - Auto Correction. В этом режиме, на основе имеющейся базы данных, программа проверяет считываемые или записываемые данные и подбирает алгоритм коррекции. На практике, программа определяет порядка 90% всех алгоритмов, используемых в телевизорах, ресиверах, навигаторах, магнитолах и другом оборудовании.

 

Блочные ошибки начинаются с начала страницы, идут подряд по всем адресам, во всех страницах в пределах блока. Число ошибок зависит от размеров блока и может достигать нескольких десятков и сотен тысяч. Дефектные блоки в современных микросхемах, как правило, заполнены нулями, не стираются и читаются стабильно. Но нередко попадаются микросхемы с "приобретенными" дефектными блоками с "плавающим" содержимым, которое каждый раз считывается по-разному. Считать содержимое таких микросхем без ошибок невозможно. Добиться более-менее стабильного чтения с меньшим количеством ошибок, можно подбором напряжения питания (меняются одновременно все напряжения питания и повторяется режим чтения). При стирании и последующей записи "приобретенные" дефектные блоки в большинстве случаев восстанавливаются.

Для работы с дефектными блоками в реальных устройствах используются два алгоритма:

  • Пропуск плохих блоков (Skip Bad Blocks).
  • Использование резервной области (RBA - Reserved Block Area).

Программное обеспечение поддерживает три схемы RBA, используемые в телевизорах LG (2 схемы) и SAMSUNG (1 схема). А также алгоритм пропуска дефектных блоков с различными таблицами рабочих и дефектных блоков. Выбор этих схем и таблиц производится автоматически на основе анализа считываемых данных или записываемого файла. В большинстве случаев, достаточно в меню Управление блоками включить режим Auto Detection.

 

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

  • Для V5.8TU. На закладке "Параметрах" установите флаг "Отключить Hard Mode" и повторите чтение.
  • Для V5.7TU - подбор напряжений. Пропустите все ошибки, чтобы увидеть общее количество ошибок. После этого уменьшите напряжения питания (Vccnom, Vccmin и Vccmax) и повторите чтение. Если количество ошибок уменьшилось, снова уменьшите все напряжения и повторите чтение. Если чисто ошибок увеличивается, то увеличьте напряжения. К сожалению, иногда попадаются микросхемы, которые считать на программаторах V5.7TU не получается. В этом случае могут помочь следующие рекомендации:
    • Попробуйте увеличить блокировочную емкость по питанию микросхемы. Припаять дополнительный конденсатор (0,1..4mkF) можно на переходную панельку, там снизу есть место.
    • Попробуйте подтянуть сигнал RE (5 вывод панельки) к VCC (40 вывод панельки) через резистор 1kOm.

Особенности работы.

При работе с микросхемами NAND-Flash, для обеспечения максимальной скорости работы,, компьютер должен имел достаточный объем свободной оперативной памяти. При недостатке памяти программа предложит сохранить считываемые данные напрямую в файл. Дополнительно, программа может сохранять данные в сжатый файл (в ZIP формате) или читать из него при записи микросхемы. Поскольку микросхемы NAND-Flash имеют большие объемы, то процессы чтения и записи могут продолжаться достаточно долго. Так, чтение 128-МБайтной микросхемы K9F1G08 на программаторе V5.7TU при работе через USB составляет порядка 6 минут. Более новый программатор V5.8TU прочитает эту микросхему менее чем за 20 секунд.

Для микросхем NAND-Flash в окнах адресов (начальный, конечный, смещение) на закладке "Параметры" выводится не физический адрес, а НОМЕР страницы. Порядковый номер байта внутри страницы недоступен. Размер страницы зависит от типа микросхемы и может быть равен 264, 528 или 2112 байт. Этот размер устанавливается по умолчанию при выборе микросхемы. Программатор позволяет считать полностью все данные страницы или только основные (256, 512 или 2048 байт), пропустив служебную область. Для этого в параметрах микросхемы в ячейке $16 (число дополнительных байт), нужно установить значение $00. Программировать микросхемы с такими установками не рекомендуется, так как содержимое дополнительной области будет не определено.

Для удобства работы, при просмотре дампа памяти в программе, служебная (spare) область выделяется синим цветом. Клавиши курсора вверх или вниз, при нажатой клавиши CTRL перемещают курсор на следующую страницу, а клавиши Page Up и Page Dn, при нажатом CTRL перемещают курсор на следующий блок.

Так как, согласно документации, микросхемы NAND-Flash могут иметь дефектные сектора, то в процессе записи или стирания контролируется только флаг окончания внутреннего цикла, что позволяет запрограммировать или стереть всю микросхему или заданную область. Состояние флага ошибки запоминается в программаторе и обрабатывается в конце каждого цикла. Так, если процесс стирания прошел без ошибок, то программатор пропускает проверку на чистоту и сразу переходит к записи. Если в процессе стирания возникла ошибка или в микросхеме имеются дефектные блоки, то после стирания выполняется проверка на чистоту. При установленном флаге "Пропустить Test Blank" проверка на чистоту не выполняется.

Рекомендуется следующий порядок работы с микросхемами NAND-Flash.

  • После выбора микросхемы, не меняя настроек, запускаем режим чтения.
  • Если при верификации появились ошибки, определяем характер этих ошибок.
  • Если это сдвиговые ошибки, то меняем параметры и повторяем чтение, добиваясь стабильной работы..
  • Если это битовые ошибки или микросхема считалась без ошибок, то включаем Коррекцию ошибок и Управление блоками в режим AUTO и повторяем чтение.
  • Если программа определила алгоритм ECC, то читаем и пишем NAND, как обычную микросхему.
  • Если скорость чтения резко упала, что может говорить о незнакомом алгоритме ECC, то отключаем Коррекцию ошибок.

Чтобы добавить новый алгоритм ECC, выложите архив со считанным дампом в облако (например, на Яндекс-диск) и пришлите ссылку в техподдержку. Не забудьте указать название микросхемы, с которой был считан этот дамп.

 

ООО «ТЦ ТРИТОН»   (495) 500-7890