![]() | Ок! | Закрыть |
![]() Универсальный программатор, программирование и отладка микроконтроллеров | Тел:(495)780-92-51 | ![]() ![]() ![]() |
Корзина пуста!
Для успешной работы с микросхемами NAND Flash (нанд флэш) необходимо, как минимум:
Программатор для работы с нанд флэш памятью должен быть очень быстрым. Программирование или чтение микросхемы объемом в несколько Гбит на обычном программаторе по времени занимает несколько часов. Очевидно, что для более или менее регулярного программирования микросхем большого объема нужен специализированный быстрый программатор, адаптированный для работы с микросхемами высокой плотности. На сегодняшний день, ChipProg-481 самый быстрый программатор.
Программатор ChipProg-481 предоставляет широкий спектр возможностей по выбору/настройке способов и параметров программирования. Все параметры влияющие на алгоритм работы программатора с микросхемой, выводятся в окно "Редактор параметров микросхемы и алгоритма программирования". При необходимости, любой из этих параметров может быть изменен, с тем что бы выбранное действие (программирование, сравнение, чтение, стирание) - производилось по алгоритму необходимому пользователю программатора.
Окно "Редактор параметров микросхемы и алгоритма программирования" в интерфейсе программатора.
Большое количество настраиваемых параметров, формирующих алгоритм работы программатора продиктовано желанием предоставить универсальный инструмент, позволяющий пользователю максимально полно реализовать все особенности присущие нанд структуре. Для облегчения жизни, программатор ChipProg-481 предоставляет следующие возможности при выборе/задании режимов и параметров при программировании NAND Flash микросхем:
Рассмотрим режимы и параметры программирования реализованные в программаторе.
1. Работа с плохими блoками.
Перед программированием NAND Flash можно/нужно выбрать один из способов работы с плохими блоками.
Do Not Use | Не обрабатывать информацию о плoxих блoках. |
Skip IB | Пропускать плoxие блoки. |
Skip IB with Map in 0-th Block | Пропускать плoxие блоки, в нулевой блoк помещать карту плoxих блoкoв. |
RBA (Reserved Block Area) | Использовать алгоритм RBA. |
2. Использование области Spare Area.
Do Not Use | Spare Area в микросхеме не используется. В микросхеме программируются страницы памяти без учета Spare Area. |
User Data | Spare Area используется как пользовательская память. В этом случае при программировании микросхемы информация из буфера помещается сначала в основную страницу микросхемы, а затем в дополнительную область Spare Area. В этом случае буфер программатора выглядит как непрерывный поток основных страниц микросхемы и пристыкованных к ним областей Spare Area. |
User Data with IB Info Forced | Spare Area интерпретируется аналогично предыдущему случаю за исключением того, что маркеры плохих блoкoв прописываются вместо информации пользователя. |
3. Guard Solid Area
Режим использования специальной области без плохих блoкoв. Обычно такие области используются в качестве загрузчиков микропроцессоров. В этой области недопустимо использование плoxих блoкoв.
Опция используется совместно с параметрами:
В случае, если внутри заданного диапазона Solid Area попадется плохой блoк, программатор выдаст ошибку.
4. Не чувствительность к ошибкам сравнения.
Эта опция позволяет включить режим не чувствительности к ошибкам сравнения.
Обычно, эту опцию имеет смысл использовать, если в устройстве пользователя применяются алгоритмы контроля и коррекции ошибок (ECC). В этих случаях допускается наличия определенного количества ошибок на определенный размер массива данных. Эти параметры и указываются в параметрах алгоритма программирования NAND Flash:
5. Invalid Block Indication Option.
В этой опции выбирается информация, которая используется в качестве маркера плохих блоков. Допускается выбрать либо значение 00h, либо 0F0h.
a. Пользовательская область.
Пользовательская область - это область микросхемы, с которой работают процедуры Программирования, Чтения и Сравнения.
Процедуры Стирания и Контроля на чистоту работают со всем массивом микросхемы.
Пользователю необходимо установить параметры:
b. Область без ошибок.
Параметры режима Guard Solid Area.
c. Область размещения RBA.
d. Размер фрейма ECC.
e. Допустимое количество ошибок.
Карта плохих блоков создается в подслое Invalid Block Map. Карта блоков представляется как непрерывный массив бит. Хорошие блоки представляются значением 0, плохие блоки - 1.
Например, значение 02h по нулевому адресу говорит о том, что 0,2,3,4,5,6,7 блоки являются хорошими, 1-ый блок является плохим. Значение 01h по первому адресу говорит о том, что только 8-ой блок является плохим из группы блоков 8..15.
В качестве иллюстрации важности "зрячего" выбора режимов и параметров при программировании нанд флэш в программаторе, рассмотрим ситуацию, при которой у некоторых программистов возникают проблемы. Чаще всего, это замена микросхемы в "устройстве", которое перестало работать. Стандартный подход - по аналогии с заменой обычной микросхемы памяти:
В случае, когда требуется программировать NAND Flash, не все так просто и однозначно.
Для получения микросхемы-копии, у которой прошивка идентична образцу, необходимо поступать следующим образом.
Подготовка к копированию.
Для копирования необходимы микросхема-оригинал и микросхема-копия (мс. в которую предполагается записать образ оригинала). Обязательные требования:
Чтобы определить, имеет ли микросхема-копия плохие блоки, необходимо установить микросхему в программатор, и в окне “Редактор параметров микросхемы” задать параметры микросхемы по умолчанию - кнопка "All Default".
Запускается процедура контроля на стертость (для экономии времени можно сразу же отменить эту процедуру, считывание карты плохих блоков осуществляется в самом начале). В окне "Программирование" интерфейса программатора, в поле “Информация об операциях” появляется информация о плохих блоках.
Перед копированием микросхемы в программаторе обязательно должны быть сделаны следующие настройки параметров в окне “Редактор параметров микросхемы”:
Invalid Block(IB) Management - Do NOT USE
Spare Area Usage - User Data
User Area – Number of Blocks - Максимальное значение блоков в микросхеме
В программатор устанавливается образец и считывается. Затем в программатор устанавливается микросхема-копия, стирается, записывается и сравнивается. В случае успешного прохождения всех трех процедур запрограммированная NAND Flash оказывается полной копией оригинала.
Нанд флэш память* подразделяется на блоки (Block) памяти, которые в свою очередь делятся на страницы (Page). Страницы бывают большие (large page) и маленькие (small page). Размер страницы зависит от общего размера микросхемы. Для маленькой страницы обычно характерны микросхемы объемом от 128Kбит до 512Кбит. Микросхемы с большим размером страницы имеют объем от 256Кбит до 32Гбит и выше. Маленький размер страницы равен 512 байтам для микросхем с байтной организацией и 256 словам для микросхем со словной организаций шины данных. Большая страница имеет размер 2048 байт для байтных микросхем и 1024 для словных. В последнее время появляются микросхемы с еще большим размером страницы. Она уже составляет 4096 байт для байтных микросхем.
Структура памяти микросхем NAND Flash с малым размером страницы фирмы STMicroelectronics.
Структура памяти микросхем с большим размером страницы фирмы STMicroelectronics.
Характерной особенностью микросхем NAND Flash является наличие плохих (дефектных) блоков (Bad blocks) как в новых микросхемах, так и появление таких блоков в процессе эксплуатации. Для маркирования плохих блоков, а также для сохранения дополнительной служебной информации или кодов коррекции, в архитектуре NAND Flash в дополнении к каждой странице памяти данных предусмотрена добавочная область Spare area. Для микросхем с малой страницей эта область имеет размер 16 байт / 8 слов. Для микросхем с большой страницей - 64 байта / 32 слова.
Обычно производитель микросхем гарантирует количество плохих блоков, не превышающее определенного размера. Информация о плохих блоках поставляется производителем микросхем в определенном месте дополнительной области Spare Area.
Маркирование плохих блоков в микросхемах NAND Flash осуществляется записью обычно значения 0 по определенному адресу в области Spare Area нулевой страницы плохого блока. Маркеры плохих блоков лежат в определенных адресах области Spare Area.
Организация памяти | Адрес маркеров плохих блоков в Spare Area |
Байтная организация, размер страницы - 512 байт. | 5 |
Словная организация, размер страницы - 256 слов. | 0 |
Байтная организация, размер страницы - 2048 байт и больше. | 0 или 5 |
Словная организация, размер страницы - 1024 слов и больше. | 0 |
Нужно иметь ввиду, что маркеры плохих блоков помещаются в обычные ячейки Flash памяти Spare Area, которые стираются при стирании всего блока памяти. Поэтому для сохранения информации о плохих блоках перед стиранием обязательно нужно сохранить эту информацию, а после стирания ее - восстановить.
В программаторах ChipProg при установке опции InvalidBlockManagement в любое значение кроме Do Not Useсохранение и восстановление информации о плохих блоках происходит автоматически.
Существует три наиболее распространенных способа обработки плохих блоков:
1. Пропуск плохих блоков.
Алгоритм пропуска плохих блоков заключается в том, что при записи в микросхему анализируется в какой блок осуществляется запись. В случае наличия плохого блока, запись в этот блок не осуществляется, плохой блок пропускается, запись осуществляется в блок следующий после плохого.
2. Резервирование блоков.
В этом методе память всей микрохемы делится на три области: User Block Area (UBA) - пользовательская область, Block Reservoir - резервная область, следуемая сразу за пользовательской областью, и таблицу соответствия плохих блоков хорошим (Reserved Block Area - RBA).
Алгоритм замены плохих блоков в этом методе таков: при выявлении плохого блока из области UBA блок переносится в область Block Reservoir, при этом в таблице RBA делается соответствующая запись замены блока.
Формат таблицы RBA:
2 байта | 2 байта | 2 байта | 2 байта | .... | 2 байта | 2 байта |
Маркер | Count Field | Invalid Block | Replaced Block | .... | Invalid Block | Replaced Block |
Маркер имеет значение 0FDFEh.
Count Field начинается с 1 и значение этого поля увеличивается на 1 на каждой следующей странице данного блока.
Invalid Block - номер замененного плохого блока.
Replaced Block - номер блока, на который был заменен плохой блок.
Пары Invalid Block и Replaced Block следуют одна за другой до конца страницы.
В области RBA находятся две таблицы в двух блоках. Таблица во втором блоке используется как резервная на случай, если информация в первой окажется недостоверной.
3. Контроль и коррекция ошибок.
Для увеличения достоверности данных могут использоваться алгоритмы контроля и коррекции ошибок (Error Checking and Correction - ECC). Эта дополнительная информация может помещаться в свободное пространство Spare Area.
*) Примечание: NAND ~ Not AND - в булевой математике обозначает отрицание «И»