4.5.2 Заполнение mtd_info для микросхемы NAND Flash

Предыдущая  Содержание  Следующая V*D*V

Как упоминалось ранее, доступ к NAND Flash выполняется путём подключения линий данных и команд к линиям ввода-вывода процессора. Для микросхемы NAND Flash важными являются следующие контакты:

 

контакт CE (Chip Enable, Выбор Микросхемы): микросхема NAND Flash выбрана, когда на этом выводе установлен низкой уровень.

контакт WE (Write Enable, Разрешение Записи): микросхема NAND Flash принимает данные от процессора, когда на этом выводе установлен низкой уровень.

контакт RE (Read Enable, Разрешение Чтения): микросхема NAND Flash посылает данные в процессор, когда на этом выводе установлен низкой уровень.

контакт CLE (Command Latch Enable, Разрешение Фиксации Команды) и контакт ALE (Address Latch Enable, Разрешение Фиксации Адреса).

 

Эти выводы определяют назначение операции для микросхемы NAND. Как используются эти контакты, объясняет Таблица 4.2.

 

Таблица 4.2 Использование контактов ALE и CLE

 

ALE

CLE

Регистр

0

0

Регистр данных

0

1

Регистр команды

1

0

Регистр адреса

 

контакт WP (Write Protect, Защита Записи): этот вывод может быть использован для защиты от записи.

контакт RB (Ready Busy, Готов/Занят): используется в фазах передачи данных, чтобы указать, что микросхема занята.

контакты IO (Ввода/Вывода): используются для передачи данных.

 

В отличие от микросхемы NOR Flash, драйвер которой для выделения памяти для структуры mtd_info вызывает do_map_probe(), драйверу для NAND Flash необходимо выделить память для структуры mtd_info. Ключом к этому является структура nand_chip, которая заполняется драйвером связи с NAND. Драйвером связи с NAND выполняются следующие шаги:

 

Выделение памяти для структуры mtd_info.

Выделение памяти для структуры nand_chip и заполнение необходимых полей.

Сделать поле priv структуры mtd_info указывающим на структуру nand_chip.

Вызов функции nand_scan(), которая будет пытаться опознать микросхему NAND, а также заполнить структуру mtd_info функциями для работы NAND.

Регистрацию структуры mtd_info в ядре MTD.

 

Параметры для NAND, которые хранятся в структуре nand_chip, можно разделить на:

 

Обязательные параметры:
- IO_ADDR_R, IO_ADDR_W: адреса для доступа к линиям ввода-вывода микросхемы NAND.
- hwcontrol(): эта функция реализует зависимый от платы механизм для установки и сброса выводов CLE, ALE и CE.
- eccmode: используется для обозначения типа ECC для NAND Flash. Это включает отсутствие ECC, программное ECC и аппаратное ECC.

Обязательные параметры, если ECC выполняется аппаратно. Некоторое оборудование обеспечивает генерацию ECC; в этом случае должны быть реализованы следующие функции. В случае программной реализации ECC, драйвер NAND предоставляет следующие функции как функции по умолчанию.
- calculate_ecc(): функция для генерации ECC
- correct_data(): функция для коррекции ECC
- enable_hwecc(): функция для разрешения аппаратной генерации ECC

Необязательные параметры. Драйвер предоставляет для следующих параметров функции/значения по умолчанию. Однако они могут быть заменены драйвером связи:
- dev_ready(): эта функция используется для определения состояния флеш-памяти.
- cmdfunc(): эта функция предназначена для отправки команд флеш-памяти.
- waitfunc(): эта функция вызывается после выполнения записи или стирания. Функцией по умолчанию, предоставляемой драйвером NAND, является функция опроса; в случае, если плата может подключить контакт RB к линии прерывания, эта функция может быть преобразована в функцию, управляемую прерываниями.
- chip_delay: это задержка для передачи данных из массива NAND в его регистры; значение по умолчанию составляет 20 мкс.

 

Предыдущая  Содержание  Следующая