![]() |
Ок! | Закрыть |
![]() Универсальный программатор, программирование и отладка микроконтроллеров |
Тел:(495)780-92-51 |
![]() ![]() ![]() |
Корзина пуста!
Для успешной работы с микросхемами NAND FLASH (нанд флэш) необходимо, как минимум:
Иметь представление о структуре NAND FLASH (нанд флэш), существующих способах и алгоритмах использования информации хранимой в такой памяти.
Иметь программатор, который корректно поддерживает работу с памятью NAND Flash т.е. позволяет выбрать и реализовать необходимые параметры и алгоритмы обработки.
Программатор для NAND FLASH должен быть очень быстрым. Программирование или чтение микросхемы обьемом в несколько Гбит на обычном программаторе по времени занимает несколько часов. Очевидно, что для более или менее регулярного программирования NAND Flash нужен специализированный быстрый программатор, адаптированный для работы с мс. высокой плотности. На сегодняшний день, самый быстрый программатор Flash NAND - ChipProg-481.
При работе с NAND Flash программатор предоставляет широкий спектр возможностей по выбору/настройке способов и параметров программирования. Все параметры влияющие на алгоритм работы программатора с микросхемой, выводятся в окно "Редактор параметров микросхемы и алгоритма программирования". При необходимости, любой из этих параметров может быть изменен, с тем что бы выбранное действие (программирование, сравнение, чтение, стирание) - производилось по алгоритму необходимому пользователю программатора.
Окно "Редактор параметров микросхемы и алгоритма программирования" в интерфейсе программатора при программировании NAND Flash.
Большое количество настраиваемых параметров, формирующих алгоритм работы программатора NAND Flash продиктовано желанием предоставить универсальный инструмент, позволяющий пользователю максимально полно реализовать все особенности присущие структуре NAND Flash. Для облегчения жизни, программаторы 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 в программаторе, рассмотрим ситуацию, при которой у некоторых программистов возникают проблемы. Чаще всего, это замена NAND Flash в "устройстве", которое перестало работать. Стандартный подход - по аналогии с заменой обычной микросхемы памяти:
В случае, когда требуется программировать NAND Flash, не все так просто и однозначно.
Для получения микросхемы-копии, у которой прошивка NAND Flash идентична образцу, необходимо поступать следующим образом.
Подготовка к копированию.
Для копирования необходимы микросхема-оригинал и микросхема-копия (мс. в которую предполагается записать образ оригинала). Обязательные требования:
Чтобы определить, имеет ли микросхема-копия плохие блоки, необходимо установить микросхему в программатор, и в окне “Редактор параметров микросхемы” задать параметры микросхемы по умолчанию - кнопка "All Default".
Запускается процедура контроля на стертость (для экономии времени можно сразу же отменить эту процедуру, считывание карты плохих блоков осуществляется в самом начале). В окне "Программирование" интерфейса программатора, в поле “Информация об операциях” появляется информация о плохих блоках.
Копирование.
Перед копированием микросхемы NAND Flash в программаторе обязательно должны быть сделаны следующие настройки параметров в окне “Редактор параметров микросхемы”:
Invalid Block(IB) Management |
Do NOT USE |
Spare Area Usage |
User Data |
User Area – Number of Blocks |
Максимальное значение блоков в микросхеме |
В программатор устанавливается NAND Flash образец и считывается. Затем в программатор устанавливается микросхема-копия, стирается, записывается и сравнивается. В случае успешного прохождения всех трех процедур запрограммированная NAND Flash оказывается полной копией оригинала.
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 - в булевой математике обозначает отрицание «И»