Example NANDTurboSpeed for ARMGS10

Материал из eeWiki - открытая энциклопедия по электронике
Перейти к: навигация, поиск

Пример драйверов SLC NAND с ускоренным быстродействием и коррекцией ECC
для платы ARMGeoSpyder 1.0

Стандартная библиотеки NXP (NXP Common Driver Library (CDL)) имеет несколько существенных недостатков в числе которых:

  • ошибки в примерах использования драйверов,
  • слишком запутанная и недокументированная структура драйверов,
  • неоптимальные по быстродействию процедуры работы с периферией.


В частности библиотека CDL не предоставляет механизма коррекции ошибок памяти SLC NAND по EEC.

Для того чтобы исследовать максимальную производительности обмена с NAND на платформе ARMGeoSpyder 1.0 пришлось написать отдельную программу без использования CDL.

Установки микроконтроллера и компилятора:

  • Частота процессора - 260 МГц
  • Частота шины HCLK - 130 Мгц
  • Частота периферии - 20 Мгц
  • Максимальная оптимизация по скорости

Файл проекта:Файл:ARMGS10 NANDTURBOSPEED.zip

Результаты


Чтение и запись проводились на всем объеме доступной памяти NAND - 256 МБайт
Чтение по DMA производилось в кэшированную область памяти, поэтому после каждого чтения буфера выполнялась процедура синхронизации кэша.
Это не является характерным приемом при работе по DMA, но здесь применен как достаточное приближение к реальному сценарию применения.

Скорость чтения NAND flash памяти используя DMA и с контролем ECC 16.1 МБайт/сек
Скорость записи NAND flash памяти используя DMA и с контролем ECC 6.67 МБайт/сек
Скорость стирания NAND flash памяти 294.3 МБайт/сек


Для сравнения: Быстродействие при использовании библиотеки CDL