Программирование SPI NAND

Дата последнего изменения: 2020-03-24


Автор:

В статье рассматриваются особенности применения микросхем SPI NAND FLASH (часто их еще называют Serial NAND), методы разметки страниц и управления плохими блоками, даны рекомендации по программированию на программаторах ChipStar.

CОДЕРЖАНИЕ:

1. ТЕОРИЯ

1.1. Коротко об SPI NAND FLASH

Микросхемы SPI NAND или Serial NAND являются разновидностью микросхем FLASH памяти типа NAND. Как и у всех подобных микросхем, их отличительными чертами являются:

  • Очень большой объем памяти.
  • Не гарантированное качество записи (возможно наличие ошибок).
  • Микросхемы могут иметь плохие (сбойные) блоки.
  • Размер страницы записи не является степенью 2.
  • Запись в микросхему осуществляется только страницами, стирание - минимум блоками.

Подробно о классификации микросхем NAND, их видах, внутренней логической структуре подробно написано в нашей первой статье о NAND микросхемах. В этой статье мы больше коснемся особенностей SPI NAND (Serial NAND) и практической работы с ними.

1.2. Отличие микросхем SPI NAND от обычных (параллельных) микросхем NAND FLASH

Основное отличие заключается в том, что SPI NAND используют последовательный (serial) аппаратный интерфейс стандарта SPI (Serial Peripheral Interface).

Использование SPI дает ряд преимуществ:

  • Позволяет сделать корпус микросхем более компактным;
  • Позволяет использовать меньшее количество сигналов для управления микросхемой (4 против минимум 13 у параллельных NAND).

Однако SPI интерфейс при прочих равных условиях более медленный, поэтому микросхемы будут читаться и писаться несколько медленнее, чем традиционные NAND.

Все остальные особенности SPI NAND (логическая организация, управление плохими блоками и исправление ошибок) идентичны используемым у параллельных NAND и подробно рассмотрены в основной статье. Единственное отличие лишь в том, что в SPI NAND более широко используется механизм встроенного вычисления ECC кодов и исправления ошибок сразу внутри микросхемы. По этому признаку SPI NAND относятся к категории Managed NAND (управляемые NAND).

Главной особенностью логической организации SPI NAND является то, что большинство из них поддерживают встроенную генерацию кодов исправления ошибок (ECC) при записи и автоматическое исправление ошибок при чтении:

  • Коды ECC вычисляются непосредственно перед записью страницы;
  • Корректировка происходит сразу после считывания страницы;
  • Коды ЕСС записываются в определенное место SPARE области страницы;
  • Коды ECC вычисляются для всей области данных страницы, но только для некоторой части SPARE области;
  • Разметка SPARE области для разных микросхем разная;
  • Вычисление ECC у большинства микросхем можно временно отключить;
  • У некоторых микросхем часть области SPARE, в которой сохраняются коды ECC, недоступна для пользователя;
  • У некоторых микросхем при включении или выключении внутреннего вычисления ЕСС изменяется размер SPARE области;

Все вышеописанное скорее усложняет, чем упрощает, работу тем, кто занимается ремонтом аппаратуры и заранее не знает, каким образом и в каком режиме ECC используется микросхема в аппаратуре.

2. ПРАКТИКА

2.1. Настройка интерфейса SPI

В большинстве случаев для чтения и записи SPI NAND не требуется каких-либо дополнительных настроек, однако, в некоторых случаях, возможно, потребуется кое-что переключить:

Например, можно уменьшить скорость работы SPI интерфейса или переключить формат адреса в режим совместимости с обычными SPI FLASH.

2.2. Считывание образа SPI NAND

Считывание SPI NAND происходит абсолютно идентично чтению любых других микросхем. После начала чтения сразу открывается окно редактора:

Рисунок: Формат spare области в редакторе программатора

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

Как уже мы писали выше, у разных микросхем spare области имеют разный формат.

Рисунок: Формат spare области в редакторе программатора

Выделение другим цветом части резервной области, предназначенной для записи ECC, существенно облегчает просмотр дампа.

2.3. Поддержка разных форматов резервной области

Если переключить редактор на закладку NAND, то, кроме информации, характерной для обычных NAND (о размере страницы резервной области и списка плохих блоков), можно еще увидеть информацию о разметке резервной области и отчет об ошибках ECC, если они были обнаружены при чтении:

Рисунок: Отчет о конфигурации NAND в редакторе программатора

В этом примере:

  • ECC коды хранятся в резервной (spare) области начиная с адреса 0x840 по адрес 0x87F (конец области) одним непрерывным блоком.
  • В отчете о внутренних ошибках ЕСС видно, что страницы 1 и 2 содержат исправляемые ошибки (менее 8 на сектор для данной микросхемы), а вот ошибок на странице 3 оказалось слишком много, и они не исправлены.

2.4. Запись образа SPI NAND

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

Рисунок

На следующем рисунке когда форматы резервной области и исходного файла также совпадают, но формат другой:

Рисунок

Ниже показан случай несовпадения разметки резервных областей:

Рисунок

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

Попробуем записать файл в микросхему SPI NAND с включенным режимом внутренней генерации ECC. На рисунке ниже показан пример такой записи:

Рисунок

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

  1. Основная область страницы в редакторе показана обычным шрифтом;
  2. Резервная (spare) область микросхемы показана тусклым шрифтом, место маркера плохого блока показано на оранжевом фоне;
  3. Резервная (spare) область микросхемы предназначенная для размещения ECC выделена светло-голубым фоном;
  4. Резервная (spare) область микросхемы заполненная кодами ECC (результат внутренней генерации ECC).

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

Программное обеспечение программатора ChipStar знает о такой особенности этих микросхем и не выдает ошибок при верификации таких микросхем: все различия в области ECC будут учтены в отчете о верификации, но ошибка верификации выдана не будет. А вот при сравнении двух файлов эти области будут отмечены как ошибочные. Таким образом, можно гибко анализировать и сравнивать содержимое микросхем.

2.5. Чтение информации ONFI

SPI NAND, как и параллельные (обычные) микросхемы NAND, поддерживают считывание таблиц конфигурации устройства в соответствии со спецификацией ONFI (Open Nand Flash Interface):

Рисунок: Информация ONFI считанная из микросхемы

В отличие от паралельных NAND у SPI NAND с поддержкой ONFI дела обстоят значительно лучше. Все известные нам микросхемы поддерживают ONFI.

На рисунке выше значение "ширина шины данных" (data bus) в отчете ONFI указывается как 8 бит, хотя, как известно, SPI интерфейс однобитный. В этом нет ничего странного: здесь имеется в виду организация памяти по восемь бит. Также в отчете ONFI указано требование к внешнему алгоритму ECC исправлять 0 ошибок (исправлять не требуется). Однако внутренний алгоритм исправляет до 8 ошибок, поэтому при выключенном внутреннем ECC внешний алгоритм просто обязан исправлять те же восемь ошибок. Поэтому в базе данных программатора прописано именно "8" и это не является ошибкой.

2.6. Как узнать, использует ли целевое устройство встроенную в микросхему коррекцию ошибок (ECC)

Этот практический совет может пригодиться тем, кто занимается ремонтом РЭА . Часто в этом случае на руках имеется только устройство с микросхемой и не ясно, по каким алгоритмам работает программное обеспечение устройства. Поэтому важно правильно считать дамп микросхемы. Но какой дамп будет правильный: считанный с включенной коррекцией ECC или с выключенной?

Поступить можно следующим образом:

  1. Считать микросхему с включенной внутренней коррекцией ошибок (режим по умолчанию);
  2. Считать микросхему с выключенной коррекцией ошибок;
  3. Сравнить полученные файлы. Если различий нет или их немного — используется внутренняя коррекция.
Посмотреть другие статьи
вверх вверх