Перейти к содержимому

Nor flash что это

  • автор:

Взгляд изнутри: Flash-память и RAM

Новый Год – приятный, светлый праздник, в который мы все подводим итоги год ушедшего, смотрим с надеждой в будущее и дарим подарки. В этой связи мне хотелось бы поблагодарить всех хабра-жителей за поддержку, помощь и интерес, проявленный к моим статьям (1, 2, 3, 4). Если бы Вы когда-то не поддержали первую, не было и последующих (уже 5 статей)! Спасибо! И, конечно же, я хочу сделать подарок в виде научно-популярно-познавательной статьи о том, как можно весело, интересно и с пользой (как личной, так и общественной) применять довольно суровое на первый взгляд аналитическое оборудование. Сегодня под Новый Год на праздничном операционном столе лежат: USB-Flash накопитель от A-Data и модуль SO-DIMM SDRAM от Samsung.

Теоретическая часть

Постараюсь быть предельно краток, чтобы все мы успели приготовить салат оливье с запасом к праздничному столу, поэтому часть материала будет в виде ссылок: захотите – почитаете на досуге…

Какая память бывает?

На настоящий момент есть множество вариантов хранения информации, какие-то из них требуют постоянной подпитки электричеством (RAM), какие-то навсегда «вшиты» в управляющие микросхемы окружающей нас техники (ROM), а какие-то сочетают в себе качества и тех, и других (Hybrid). К последним, в частности, и принадлежит flash. Вроде бы и энергонезависимая память, но законы физики отменить сложно, и периодически на флешках перезаписывать информацию всё-таки приходится.

Тут можно подробнее ознакомиться с ниже приведённой схемой и сравнением характеристик различных типов «твердотельной памяти». Или тут – жаль, что я был ещё ребёнком в 2003 году, в таком проекте не дали поучаствовать…


Современные типы «твердотельной памяти». Источник

Единственное, что, пожалуй, может объединять все эти типы памяти – более-менее одинаковый принцип работы. Есть некоторая двумерная или трёхмерная матрица, которая заполняется 0 и 1 примерно таким образом и из которой мы впоследствии можем эти значения либо считать, либо заменить, т.е. всё это прямой аналог предшественника – памяти на ферритовых кольцах.

Что такое flash-память и какой она бывает (NOR и NAND)?

Начнём с flash-памяти. Когда-то давно на небезызвестном ixbt была опубликована довольно подробная статья о том, что представляет собой Flash, и какие 2 основных сорта данного вида памяти бывают. В частности, есть NOR (логическое не-или) и NAND (логическое не-и) Flash-память (тут тоже всё очень подробно описано), которые несколько отличаются по своей организации (например, NOR – двумерная, NAND может быть и трехмерной), но имеют один общий элемент – транзистор с плавающим затвором.


Схематическое представление транзистора с плавающим затвором. Источник

Итак, как же это чудо инженерной мысли работает? Вместе с некоторыми физическими формулами это описано тут. Если вкратце, то между управляющим затвором и каналом, по которому ток течёт от истока к стоку, мы помещаем тот самый плавающий затвор, окружённый тонким слоем диэлектрика. В результате, при протекании тока через такой «модифицированный» полевой транзистор часть электронов с высокой энергией туннелируют сквозь диэлектрик и оказываются внутри плавающего затвора. Понятно, что пока электроны туннелировали, бродили внутри этого затвора, они потеряли часть энергии и назад практически вернуться не могут.

NB: «практически» — ключевое слово, ведь без перезаписи, без обновления ячеек хотя бы раз в несколько лет Flash «обнуляется» так же, как оперативная память, после выключения компьютера.

Там же, на ixbt, есть ещё одна статья, которая посвящена возможности записи на один транзистор с плавающим затвором нескольких бит информации, что существенно увеличивает плотность записи.

В случае рассматриваемой нами флешки память будет, естественно, NAND и, скорее всего, multi-level cell (MLC).

Если интересно продолжить знакомиться с технологиями Flash-памяти, то тут представлен взгляд из 2004 года на данную проблематику. А здесь (1, 2, 3) некоторые лабораторные решения для памяти нового поколения. Не думаю, что эти идеи и технологии удалось реализовать на практике, но, может быть, кто-то знает лучше меня?!

Что такое DRAM?

Если кто-то забыл, что такое DRAM, то милости просим сюда.

Опять мы имеем двумерный массив, который необходимо заполнить 0 и 1. Так как на накопление заряда на плавающем затворе уходит довольно продолжительное время, то в случае RAM применяется иное решение. Ячейка памяти состоит из конденсатора и обычного полевого транзистора. При этом сам конденсатор имеет, с одной стороны, примитивное физическое устройство, но, с другой стороны, нетривиально реализован в железе:

Устройство ячейки RAM. Источник

Опять-таки на ixbt есть неплохая статья, посвящённая DRAM и SDRAM памяти. Она, конечно, не так свежа, но принципиальные моменты описаны очень хорошо.

Единственный вопрос, который меня мучает: а может ли DRAM иметь, как flash, multi-level cell? Вроде да, но всё-таки…

Часть практическая
Flash

Те, кто пользуется флешками довольно давно, наверное, уже видели «голый» накопитель, без корпуса. Но я всё-таки кратко упомяну основные части USB-Flash-накопителя:


Основные элементы USB-Flash накопителя: 1. USB-коннектор, 2. контроллер, 3. PCB-многослойная печатная плата, 4. модуль NAND памяти, 5. кварцевый генератор опорной частоты, 6. LED-индикатор (сейчас, правда, на многих флешках его нет), 7. переключатель защиты от записи (аналогично, на многих флешках отсутствует), 8. место для дополнительной микросхемы памяти. Источник

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


Корпус кварцевого генератора

Случайно, между делом, нашёл-таки, как выглядит армирующее волокно внутри текстолита и шарики, из которых в массе своей и состоит текстолит. Кстати, а волокна всё-таки уложены со скруткой, это хорошо видно на верхнем изображении:


Армирующее волокно внутри текстолита (красными стрелками указаны волокна, перпендикулярные срезу), из которого и состоит основная масса текстолита

А вот и первая важная деталь флешки – контроллер:


Контроллер. Верхнее изображение получено объединением нескольких СЭМ-микрофотографий

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

После обработки этой картинки я кричал: «Яяяяязь!» и бегал по комнате. Итак, Вашему вниманию представляет техпроцесс 500 нм во всей свой красе с отлично прорисованными границами стока, истока, управляющего затвора и даже контакты сохранились в относительной целостности:


«Язь!» микроэлектроники – техпроцесс 500 нм контроллера с прекрасно прорисованными отдельными стоками (Drain), истоками (Source) и управляющими затворами (Gate)

Теперь приступим к десерту – чипам памяти. Начнём с контактов, которые эту память в прямом смысле этого слова питают. Помимо основного (на рисунке самого «толстого» контакта) есть ещё и множество мелких. Кстати, «толстый» < 2 диаметров человеческого волоса, так что всё в мире относительно:


СЭМ-изображения контактов, питающих чип памяти

Если говорить о самой памяти, то тут нас тоже ждёт успех. Удалось отснять отдельные блоки, границы которых выделены стрелочками. Глядя на изображение с максимальным увеличением, постарайтесь напрячь взгляд, этот контраст реально трудно различим, но он есть на изображении (для наглядности я отметил отдельную ячейку линиями):


Ячейки памяти 1. Границы блоков выделены стрелочками. Линиями обозначены отдельные ячейки

Мне самому сначала это показалось как артефакт изображения, но обработав все фото дома, я понял, что это либо вытянутые по вертикальной оси управляющие затворы при SLC-ячейке, либо это несколько ячеек, собранных в MLC. Хоть я и упомянул MLC выше, но всё-таки это вопрос. Для справки, «толщина» ячейки (т.е. расстояние между двумя светлыми точками на нижнем изображении) около 60 нм.

Чтобы не лукавить – вот аналогичные фото с другой половинки флешки. Полностью аналогичная картина:


Ячейки памяти 2. Границы блоков выделены стрелочками. Линиями обозначены отдельные ячейки

Конечно, сам чип – это не просто набор таких ячеек памяти, внутри него есть ещё какие-то структуры, принадлежность которых мне определить не удалось:


Другие структуры внутри чипов NAND памяти

Всю плату SO-DIMM от Samsung я, конечно же, не стал распиливать, лишь с помощью строительного фена «отсоединил» один из модулей памяти. Стоит отметить, что тут пригодился один из советов, предложенных ещё после первой публикации – распилить под углом. Поэтому, для детального погружения в увиденное необходимо учитывать этот факт, тем более что распил под 45 градусов позволил ещё получить как бы «томографические» срезы конденсатора.

Однако по традиции начнём с контактов. Приятно было увидеть, как выглядит «скол» BGA и что собой представляет сама пайка:


«Скол» BGA-пайки

А вот и второй раз пора кричать: «Язь!», так как удалось увидеть отдельные твердотельные конденсаторы – концентрические круги на изображении, отмеченные стрелочками. Именно они хранят наши данные во время работы компьютера в виде заряда на своих обкладках. Судя по фотографиям размеры такого конденсатора составляют около 300 нм в ширину и около 100 нм в толщину.

Из-за того, что чип разрезан под углом, одни конденсаторы рассечены аккуратно по середине, у других же срезаны только «бока»:


DRAM память во всей красе

Если кто-то сомневается в том, что эти структуры и есть конденсаторы, то тут можно посмотреть более «профессиональное» фото (правда без масштабной метки).

Единственный момент, который меня смутил, что конденсаторы расположены в 2 ряда (левое нижнее фото), т.е. получается, что на 1 ячейку приходится 2 бита информации. Как уже было сказано выше, информация по мультибитовой записи имеется, но насколько эта технология применима и используется в современной промышленности – остаётся для меня под вопросом.

Конечно, кроме самих ячеек памяти внутри модуля есть ещё и какие-то вспомогательные структуры, о предназначении которых я могу только догадываться:


Другие структуры внутри чипа DRAM-памяти

Послесловие

Помимо тех ссылок, что раскиданы по тексту, на мой взгляд, довольно интересен данный обзор (пусть и от 1997 года), сам сайт (и фотогалерея, и chip-art, и патенты, и много-много всего) и данная контора, которая фактически занимается реверс-инжинирингом.

К сожалению, большого количества видео на тему производства Flash и RAM найти не удалось, поэтому довольствоваться придётся лишь сборкой USB-Flash-накопителей:

P.S.: Ещё раз всех с наступающим Новым Годом чёрного водяного дракона.
Странно получается: статью про Flash хотел написать одной из первых, но судьба распорядилась иначе. Скрестив пальцы, будем надеяться, что последующие, как минимум 2, статьи (про биообъекты и дисплеи) увидят свет в начале 2012 года. А пока затравка — углеродный скотч:


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

Во-первых, полный список опубликованных статей на Хабре:

Во-вторых, помимо блога на HabraHabr, статьи и видеоматериалы можно читать и смотреть на Nanometer.ru, YouTube, а также Dirty.

В-третьих, если тебе, дорогой читатель, понравилась статья или ты хочешь простимулировать написание новых, то действуй согласно следующей максиме: «pay what you want»

NOR и NAND память в SSD

Память NOR, названная так в честь особой разметки данных (Not OR – логическое Не-ИЛИ), является высокоскоростной памятью Flash. Память NOR предоставляет возможность высокоскоростного, случайного доступа к информации, и обладает способностью записывать и считывать данные в определенном месте без необходимости обращаться к памяти последовательно. В отличие от NAND памяти, память NOR позволяет обращаться к данным размером до одного байта. Технология NOR выигрывает в ситуациях, когда данные случайным образом записываются или читаются. Поэтому NOR чаще всего встраивают в сотовые телефоны (для хранения операционной системы) и планшеты, а также используется в компьютерах для хранения BIOS.

NAND Flash Memory

NAND память была изобретена после NOR, и также названа в честь особой разметки данных (Not AND – логическое Не-И). NAND память записывает и считывает данные с высокой скоростью, в режиме последовательного чтения, упорядочивая данные в небольшие блоки (страницы). Память NAND может считывать и записывать информацию постранично, однако не может обращаться к конкретному байту, как NOR. Поэтому NAND обычно используют в твердотельных накопителях (SSD), аудио и видео проигрывателях, телевизионных приставках, цифровых камеры, мобильных телефонах (для хранения пользовательской информации) и других устройствах, в которых данные, как правило, записываются последовательно.

Например, большинство цифровых камер используют память на основе технологии NAND, так как изображения снимаются и записываются последовательно. Технология NAND является более эффективной еще и при чтении, так как она способна передавать целые страницы данных очень быстро. Как последовательная память, NAND идеальна для хранения данных. Цена на SSD с использованием NAND меньше, чем с NOR, а микросхемы NAND обладают большей плотностью информации на матрицу. Память, которая хранит один бит на ячейку, называется Single-Level Cell (SLC) Flash.

Русские Блоги

Урок 015 Принцип работы NOR Flash и анализ программ на голом железе

Раздел 001_Nor Принцип Flash и работа оборудования

Линии подключения Nor Flash включают в себя адресные линии, линии данных, сигналы выбора микросхемы, сигналы чтения и записи и т. Д. Интерфейс Nor Flash относится к интерфейсу типа памяти. Nor Flash не может читать из памяти, но не может писать, как память. Требуются некоторые специальные операции. Для выполнения операций записи чтение должно быть таким же простым, как память.

Принципиальная схема Nor Flash выглядит следующим образом:

Введение в Flash

Обычно используемые типы Flash — это Nor Flash и NAND Flash.

Ни Flash был изобретен корпорацией Intel в 1988 году для замены EPROM и E2PROM, которые в то время доминировали на рынке. NAND Flash была изобретена корпорацией Toshiba в 1989 году. Основные различия между ними заключаются в следующем:

Nor Flash поддерживает XIP, то есть код может выполняться непосредственно на Nor Flash без копирования в память. Это связано с тем, что интерфейс NorF lash точно такой же, как у RAM, и он может произвольно обращаться к данным по любому адресу. Nor Flash имеет очень высокую эффективность для операций чтения, но эффективность операций стирания и записи очень низка.Кроме того, емкость Nor Flash обычно относительно мала. NAND Flash более эффективен при операциях стирания и записи и имеет большую емкость. Вообще говоря, Nor Flash используется для хранения программ, а NAND Flash используется для хранения данных. Устройства на базе NAND Flash обычно также должны быть оснащены Nor Flash для хранения программных слов.

Флеш-накопители состоят из стирающих блоков (также называемых блоками). При записи блока необходимо убедиться, что блок был
был удален. Диапазон размера блока Nor Flash составляет от 64 кБ до 128 кБ: диапазон размера блока NAND Flash составляет 8 кБ, 64 кБ. Для стирания / записи блока Nor Flash требуется 4 секунды, а для стирания / записи блока NAND Flash требуется всего 2 мс. Блок Nor Flash слишком велик, что не только увеличивает время стирания для данной операции записи. Nor Flash также требует дополнительных операций стирания, особенно небольших файлов, таких как файл размером только IkB, но и для его сохранения. Сотрите блок Nor Flash размером 64–128 КБ.

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

В случае такой же емкости NAND Flash меньше. В системах с жесткими требованиями к пространству NAND Flash может сэкономить больше места. Емкость Nor Flash на рынке обычно составляет IMB

4MB (есть также 32MB Nor Flash), а емкость NAND Flash составляет 8MB

512MB. Разница в емкости также делает Nor Flash более используемым для хранения программ, а NAND Flash — для хранения данных.

Для надежности устройств флэш-памяти необходимо учитывать три момента: инверсия битов, плохие блоки и время стирания. Все флэш-устройства страдают от проблемы инверсии битов: из-за внутренних электрических характеристик флэш-памяти время от времени будут возникать одна или несколько ошибок битовых данных (эта вероятность очень мала) в процессе чтения и записи данных, в то время как вероятность появления флэш-памяти NAND намного выше. В Nor Flash, когда происходит инверсия битов в кодах клавиш и данных, это может привести к сбою системы. Когда вы сообщаете только об инверсии битов, прочтите это еще раз: если инверсия битов действительно происходит, должны быть соответствующие меры по обнаружению / восстановлению ошибок. Вероятность инверсии битов в NAND Flash исторически высока. Рекомендуется использовать EDC / ECC для обнаружения и восстановления ошибок. Плохие блоки будут случайно распределены во флэш-памяти NAND. Плохие блоки необходимо просканировать перед использованием, чтобы убедиться, что они больше не используются, иначе продукт будет содержать серьезные сбои. Время стирания каждого блока NAND Flash обычно составляет около 100 000 раз, что в 10 раз больше, чем у Nor Flash. Кроме того, поскольку размер блока NAND Flash обычно составляет 1/8 от Nor Flash, срок службы NAND Flash намного превышает Nor Flash.

Встроенный Linux имеет развитую программную поддержку Nor и NAND Flash. Часто используемые файлы jffs2 на Nor Flash
файловая система, а файловая система yaffs обычно используется в NAND Flash. На нижнем уровне находятся драйверы MTD, которые реализуют для них операции чтения, записи и стирания, а также реализуют проверку EDC / ECC.

Ни операции Flash

Затем мы используем u-boot, чтобы испытать работу Nor Flash (плата разработки устанавливает Nor для запуска, введите u-boot).

1). Используйте OpenJTAG для записи UBOOT в Nor Flash.

Итак, как нам использовать u-boot для его работы?

В руководстве Nor Flash будет командная форма, как показано на рисунке:

Вот несколько простых примеров:

Сброс: напишите F0 на любой адрес.

Идентификатор чтения (ReadSiliconID): Many Nor Flash можно настроить с разрядностью 16 бит (Word) и шириной 8 бит (Byte). Для платы разработки jz2440, которую мы используем, разрядность составляет 16 бит.Как читать идентификатор?

Согласно предыдущему рисунку, запишите AA по адресу Nor Flash 555, затем запишите 55 по адресу 2AA и запишите 90 по адресу 555, после чего вы можете прочитать адрес ADI и вы можете прочитать данные DDI.

Пример 1

Выполнить при u-boot: md.b0

Результат (точно такой же, как и данные, которые мы записали):

Можно сделать вывод, что u-boot не может читать и мигать, как память

Пример 2

Чтение идентификатора (см. Руководство Nor)

  • Напишите AAH на адрес 555H (разблокировать)
  • Напишите 55H по адресу 2AAH (разблокирован)
  • Напишите 90H по адресу 555H (команда)
  • Прочтите адрес 0, чтобы получить идентификатор производителя (C2H)
  • Считайте 1 адрес, чтобы получить идентификатор устройства (22DAH или 225BH)
  • Выйти из статуса чтения ID: просто напишите F0H на любой адрес.

На следующем рисунке представлена ​​простая схема подключения 2440 и Nor Flash:

2440 A1 получает Nor A0, поэтому адрес, отправленный 2440, равен адресу, полученному Nor Flash, сдвигается на один бит влево. Например, если 2440 отправляет адрес (555H << 1), Nor Flash не может получить адрес 555H.

Ниже приводится сравнение операций на Nor Flash, 2440 и U-BOOT, как показано в следующей таблице:

Ни операции Flash 2440 операций Операции с U-BOOT
Напишите AAH на адрес 555H (разблокировать) Напишите AAH на адрес AAAH (разблокировать) mw.waaaaa
Напишите 55H по адресу 2AAH (разблокирован) Напишите 55H на адрес 554H (разблокировать) mw.w 554 55
Напишите 90H по адресу 555H (команда) Напишите 90H в адрес AAAH (команда) mw.w aaa 90
Прочтите адрес 0, чтобы получить идентификатор производителя (C2H) Прочтите адрес 0, чтобы получить идентификатор производителя (C2H) md.w 0 1 (1: означает все один раз)
Считайте 1 адрес, чтобы получить идентификатор устройства (22DAH или 225BH) Считайте адрес 2, чтобы получить идентификатор устройства (22DAH или 225BH) md.w 2 1 (1: означает все один раз)
Выйти из статуса чтения ID: просто напишите F0H на любой адрес Выйти из статуса чтения ID: просто напишите F0H на любой адрес mw.w 0 f0

1). При исполнении
md.w 0 1
Результат (идентификатор производителя вывода):
00000000: 00c2 .. (00c2 — идентификатор производителя)

2). При исполнении
md.w 2 1

Результат (идентификатор устройства вывода):
00000002: 2249I "(2249 — это идентификатор устройства)

3). При исполнении
mw.w 0 f0
выйдет из статуса чтения идентификатора,

выполненный:
md.b0
Результаты:
00000000: 17. (Вы читаете данные адреса Nor Flash · 0)

Две характеристики Nor Flash

Обычно есть два способа определить Nor Flash в ядре:

Одним из них является обнаружение jedec, которое заключается в том, чтобы заранее определить массив в ядре. Массив содержит некоторые параметры каждого чипа разных производителей. Во время обнаружения идентификатор флэш-памяти сравнивается с идентификатором в массиве. Если такое же обнаружено, просто Используйте параметры массива.
Преимущество обнаружения jedec простое, но недостаток состоит в том, что если ядро ​​поддерживает много типов флэш-памяти, этот массив будет огромным. При использовании jedec в ядре для обнаружения микросхемы он сначала получает идентификатор флэш-памяти, отправив команду, а затем сравнивает его с массивом, но даже идентификатор в flash.c настраивается сам по себе с помощью макроса.

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

Следующее сравнение операций по обнаружению Nor Flash, 2440 и cfi (считывание информации о микросхеме) в U-BOOT относится к руководству по микросхеме.

Управляйте cfi на Nor Flash Управляйте cfi на 2440 Управляйте cfi на U-BOOT
Напишите 98H на 55H адрес Напишите 98H на адрес AAH mw.w aa 98
Прочтите адрес 10H, чтобы получить 0051 Прочтите адрес 20H, чтобы получить 0051 md.w 20 1
Прочтите адрес 11H, чтобы получить 0052 Прочтите адрес 22H, чтобы получить 0052 md.w 22 1
Прочтите адрес 12H, чтобы получить 0059 Прочтите адрес 24H, чтобы получить 0059 md.w 24 1
Прочтите адрес 27H, чтобы узнать емкость Прочтите адрес 4EH, чтобы узнать емкость md.w 4e 1

Ни данные записи Flash

Читаем данные по адресу 10000 в Nor Flash,
md.w 100000 1
Результаты:
00100000:ffff..
Запишите 0x1234 по адресу 10000 в Nor flash,
mw.w 100000 1234
Затем прочтите данные по этому адресу,
md.w 100000 1
Результаты:
00100000: ffff (данные по этому адресу не были изменены, и операция записи недопустима).

Как записать данные в Nor Flash?

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

Ниже приводится операция записи Nor Flash, показанная в следующей таблице:

Операция записи на Nor Flash 2440 операция записи Операция записи на U-BOOT
Напишите AAH на адрес 555H (разблокировать) Напишите AAH на адрес AAAH (разблокировать) mw.w aaa aa
Напишите 55H по адресу 2AAH (разблокирован) Напишите 55H на адрес 554H (разблокирован) mw.w 554 55
Напишите A0H по адресу 555H Напишите A0H по адресу AAAH mw.w aaa a0
Записать PD на адрес PA Напишите 1234h по адресу 0x100000 mw.w 100000 1234

1) .После того, как U-BOOT выполнит вышеуказанные инструкции, 0x1234 записывается по адресу 0x100000,

выполненный:
md.w1000001
Результат (записано 1234):
00100000:1234 4
Отсюда видно, что работа U-BOOT не очень сложна.

2). Снова записываем 0x5678 по адресу 0x100000 и выполняем следующую команду:
mw.w aaa aa
mw.w 554 55
mw.w aaa a0
mw.w 100000 5678
Просмотрите данные по адресу 0x100000
md.w 100000 1
Результаты:
00100000:12300.
Данные по адресу 0x100000 не равны 0x5678, и операция записи завершается неудачно. Причина сбоя в том, что исходные данные уже имеют размер 0x1234, но не все 0xffff, и операция записи снова завершается неудачно. (Flash не может быть удален только первым. Сжечь).

Сначала удалите (см. Руководство к микросхеме Nor Flash)
Ни операции Flash Операция u-загрузки
555H AAH mw.w aaa aa
2AAH 55H mw.w 554 55
555H 80H mw.w aaa 80
555H AAH mw.w aaa aa
2AAH 55H mw.w 554 55
SA 30H // Записываем 30 mw.w 100000 30 в адрес сектора

Протестируйте после выполнения вышеуказанных инструкций

выполненный:
md.w 100000 1
Результаты:
00100000:ffff..
был удален, поэтому при повторном программировании проблем не возникнет.

Сжечь снова
mw.w aaa aa
mw.w 554 55
mw.w aaa a0
mw.w 100000 5678

Результат программирования теста
выполнить:
md.w 100000 1
Результаты:
00100000:5678 xV
Данные запрограммированы в него, и программирование выполнено успешно.

Резюме: Когда мы программируем, если вышеуказанные данные не равны 0ffff и не были стерты, мы должны сначала стереть их. После стирания мы можем программировать. Команду стирания и программирования можно получить из руководства по микросхеме. .

= Раздел 002Ни Flash программированияПризнание =
Цель примера в этом разделе: идентифицировать и не мигать
Функция отправки команды
Код функции nor_cmd выглядит следующим образом: отправьте команду по адресу в NOR Flash,

Функция чтения

Функция nor_read_word считывает два байта из NOR Flash (ширина этой платы разработки составляет 16 бит), а адрес данных основан на 2440, поэтому при чтении данных по адресу в NOR Flash вам необходимо соответствовать NOR Flash Адрес сдвигается влево (адрес умножается на 2).

Прочтите данные в адресе

Запишите адрес NOR Flash в функцию nor_dat и верните данные по адресу NOR Flash.

Войдите в режим CFI NOR FLASH, прочтите всю информацию

Код функции do_scan_nor_flash следующий: Функция этой функции: войдите в режим CFI для чтения идентификатора производителя, идентификатора устройства, емкости и другой информации в NOR Flash.

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

Строка 68 предназначена для копирования считанного значения идентификатора производителя в переменную поставщика.

Строка 69 предназначена для копирования считанного значения идентификатора устройства в переменную устройства.

Строка 70 Выйти из состояния чтения идентификатора: записать F0H на любой адрес.

В строке 72 запишите данные 0x98 по адресу 0x55, чтобы войти в режим cfi.

74-я, 75-я и 76-я строки считывают символы из адресов флэш-памяти NOR 0x10, 0x11 и x012 и назначают их строке str.

Строка 81, согласно руководству по микросхеме, вы можете прочитать данные по адресу 0x27 NOR Flash и получить мощность NOR Flash, равную 2, поэтому сдвиньте считанные данные на 1 влево, чтобы получить емкость NOR Flash. .

95-я строка считывает данные с адреса 0x2c флэш-памяти NOR, и вы можете узнать, сколько регионов находится во флэш-памяти NOR.

Согласно информации об области блока стирания: в строке 102 вы можете узнать адрес двух байтов [2E, 2D] + 1, чтобы получить количество блоков в области (см. Руководство по микросхеме). Значение переменной region_info_base в коде — 0x2d, 0x2d — младший байт первых двух байтов, 0x2e — старший байт первых двух байтов, поэтому вам нужно сдвинуть 8 бит влево, а затем добавить 1, чтобы получить Сколько блоков в регионе.

Обратитесь к руководству по микросхеме в строке 103, прочтите два байтовых адреса [30, 2F], а затем умножьте на 256, чтобы получить размер блока.

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

В строках 112 и 115, поскольку базовый адрес NOR Flash равен 0, первый адрес первого блока равен 0, а первый адрес следующего блока — это первый адрес предыдущего блока плюс размер блока.

В строке 112 запишите 0xf0 в адрес 0, чтобы выйти из режима CFI.

Ни Flash test

Функция nor_flash_test использует операторы switch для обработки и идентификации NOR Flash, стирания определенного сектора NOR Flash, записи определенного адреса и чтения определенного адреса. код показан ниже:

Основная функция

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

Раздел 003Ни Flash программированияСтереть и прочитать

Цель этого примера — стереть сектор не мигающего, запрограммировать адрес и прочитать адрес.

Жду программирования

Ожидание завершения программирования: чтение данных, когда Q6 не меняется, это означает конец (см. Руководство по чипу),

Стереть сектор NOR Flash

Код функции do_erase_nor_flash следующий. Обратитесь к руководству по микросхеме, чтобы узнать, что стереть определенный сектор относительно просто.

В строке 131 функция get_uint используется для получения входного адреса.

Строки 134 и 135 разблокированы.

Строка 136 — это очищаемый сектор.

Строки 138 и 139 снова разблокированы.

140-я строка — это отправленный адрес сектора.

Строка 141 ожидает завершения стирания.

Запишите ИЛИ Flash

Код do_write_nor_flash показан ниже.Разрядность NOR Flash на плате разработки составляет 16 бит, поэтому данные для записи могут быть сконструированы в 16 бит, а затем записаны в NOR Flash.

Строка 153 присваивает адрес, полученный get_uint, переменной addr,

Строка 156 получает входную строку через функцию gets.

Два 8-битных данных в строке 168 объединяются в 16-битные данные и присваиваются переменной val.

Читать NOR Flash

Код функции do_read_nor_flash следующий: поскольку NOR Flash является интерфейсом памяти, его можно читать как память.

Функция get_uint в строке 201 получает входной адрес из последовательного порта.
Строка 203, принудительное преобразование типа.
Строки с 207 по 216 — это чтение содержимого NOR Flash. Выходное содержимое — шестнадцатеричные данные. Поскольку NOR Flash — это интерфейс памяти, его можно читать как память.
Строки 220–227 выводят содержимое NOR Flash в виде символьных данных. Строка 223 используется для определения, является ли выводимый символ невидимым символом. Если это невидимая точка вывода символа ‘.’, выводить символы, если символы видимы.

NAND и NOR: что они такое, и с чем их едят

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

Итак, сокращения NOR и NAND обозначают тип логических элементов, используемых в данной единице флэш-памяти. NOR обозначает логический элемент ИЛИ-НЕ (NOT OR), а NAND — И-НЕ (NOT AND). Но, поскольку мне сейчас не хочется читать вам курс булевой алгебры и основ цифровой логики, которая вам, к тому же, и не нужна, остановимся лишь на результатах использования этих технологий.
Основная функция накопителей на флэш — хранить информацию. И отсюда вытекает первое различие: достигнутые сегодня плотности записи для технологии NAND превосходят достигнутые в NOR, причем разница измеряется в порядках. И требования хранения больших объемов и компактности однозначно определяют технологию используемой флэш-памяти. Впрочем, это не единственный критерий. Не менее важной является возможность выполнять в памяти записанный программный код, т.е. так называемая XIP Capability (XIP — eXecute In Place). Такая возможность существует у NOR-технологии и отсутствует у NAND. Так получается, что основным назначением памяти, произведенной по технологии NAND, является хранение данных, а по технологии NOR — хранение исполнимого программного кода и, в меньшей степени, данных (что обусловлено не только доступным малым объемом — чуть позже мы вернемся к этому).

Флэш-устройства делятся на части, которые называются блоками. Это необходимо делать для преодоления некоторых физических ограничений и из ценовых соображений. Запись в любом устройстве флэш определенного блока может быть произведена только если этот блок пуст или очищен. В большинстве случаев получается так, что операции записи должна предшествовать операция стирания. И если в NAND-устройствах операция стирания блока может быть произведена сразу, то в NOR-устройствах необходимо предварительно установить все байты блока в ноль. Нужно также сказать что типичное значение размера блока в NOR-устройствах составляет 64 или 128 Кб (8-32 Кб у NAND), что в сочетании с и так невысокими скоростями работы флэш приводит к тому, что операции записи со стиранием могут занимать до нескольких секунд. Это и является сдерживающим фактором применения NOR-флэша в качестве носителя данных. А применение его для хранения исполнимого кода возможно в том случае, если он устраивает в плане производительности — требования не должны быть высокими. Время стирания памяти NAND измеряется в миллисекундах и имеет первый порядок. А малый размер блока в случае неблагоприятных внешних условий гарантирует потерю минимального объема данных. Итак, подводя итог по этому абзацу: операции чтения NOR несколько быстрее NAND; операции же записи, наоборот, быстрее у NAND, причем значительно; благодаря малому размеру блока NAND в единицу времени нуждается в меньшем числе стираний (что, как мы увидим ниже, еще и способно продлить срок ее функционирования в устройстве), которые она проводит приблизительно на три порядка быстрее, чем NOR.

NOR-флэш является устройством памяти с произвольным доступом. Микросхемы NOR имеют интерфейс, позволяющий произвести адресацию и получить легкий доступ к каждому отдельному байту. Интерфейс ввода-вывода устройства памяти NAND значительно сложнее и меняется от устройства к устройству и от разработчика к разработчику. Одни и те же выводы (зачастую их 8) используются для передачи управляющих сигналов, адреса и данных. Кроме того, в NAND-флэше доступ осуществляют блоками обычно в 512 байт, т.е. за одно обращение считывается или записывается 512 байт. Доступ к каждому блоку произвольный, но, так как нет возможности обратиться к отдельному байту, память типа NAND не является в известном смысле памятью произвольного доступа. Выдача каждого байта из 512-байтного блока осуществляется на шину памяти последовательно, поэтому уместно говорить о последовательном доступе. Что и делают. Или о памяти со страничной организацией. Теперь становится понятней, почему NOR больше подходит для хранения и выполнения программ, а NAND — для хранения данных.
Схемотехнически ячейка памяти NAND организуется проще: она имеет меньший размер по сравнению с NOR, и это соответственно приводит к повышению плотности записи, уменьшению энергопотребления и стоимости производства.

Но у любой технологии не могут быть только положительные стороны. В этом смысле NAND тоже не исключение. Как и при эксплуатации любых накопителей, возможны случайные ошибки чтения и порча накопителя в целом. Для устройств памяти флэш-типа актуально говорить о безошибочном чтении, обработке плохих блоков и числе циклов чтения/записи. Явление ошибочного вычитывания битов (называется bit-flipping) больше характерно для NAND-памяти, чем для NOR. Вред от одного ошибочного бита определяется типом данных, к которым он принадлежит. Так, для мультимедийных данных это окажется несущественным, но подобная ошибка в программном коде или критически важных данных может привести к весьма трагическим результатам. Как я уже сказал, для NOR-памяти это явление менее характерно, а память на технологиях NAND нуждается в использовании какого-то дополнительного механизма обнаружения и коррекции ошибок.

Технологии производства NAND-памяти пока несовершенны, и изначально память содержит какое-то число неработающих элементов. Так как в NAND группа запоминающих ячеек объединяется в блок, то испорченная ячейка в блоке приводит к неработоспособности блока в целом, т.е. получается плохой блок. Поэтому появляется необходимость отслеживать состояние блоков и использовать только рабочие, что осуществить намного проще, чем произвести память, абсолютно не содержащую плохих страниц: такое производство оказывается очень дорогим (похожая ситуация была в свое время с LCD-панелями). По очевидным причинам этот вид дефектов не характерен для NOR.

Рабочий ресурс микросхем флэш выражается в минимально и максимально возможном числе циклов стирания каждого отдельного блока (а мы уже знаем, что каждая запись блока обязательно сопровождается его предварительным стиранием). Для памяти на технологиях NOR оно составляет 10.000 и 100.000 циклов соответственно, для NAND — 100.000 и 1.000.000 циклов. Все предельно просто, и комментировать нечего.
Использование NOR-памяти отличается сравнительной простотой. Она не нуждается в каких-либо дополнительных драйверах, а может быть просто установлена и использована. C NAND сложнее, так как разные производители используют разные интерфейсы, и для нее скорее всего понадобится драйвер. Впрочем, несмотря на то, что у NAND-памяти много преимуществ, вы не должны думать, что NOR — это вчерашний день. NOR-память сегодня находит применение в многочисленных устройствах, не нуждающихся в больших объемах и некритичных к производительности. NAND находит применение в тех областях, где бОльшая сложность по применению оправдывается большИми доступными объемами и производительностью.

По материалам компаний — производителей флэш
M-Systems, Samsung и др.

Компьютерная газета. Статья была опубликована в номере 35 за 2004 год в рубрике hard :: digital

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *