Перейти к содержанию
    

NANDFlash + микроконтроллер - как бороться с битыми секторами?

Неужто такое именно с параллельными FLASH происходит???

Именно. И чем тоньше технологические нормы и больше объем, тем большие требования предъявляются к механизму коррекции - до 100 бит/кБайт для MLC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

Это решается самой ФС.

...

 

Что-то не совсем пойму, как ФС без нижнего уровня может решать где битый блок, а где нет, когда она понятия не имеет о том, с какой памятью она работает? В yaffs этот механизм реализован и специально заточен под NANDFlash, эта ФС по-сути и не умеет другие флешки, поэтому она наперед знает про битые блоки и умеет их.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В обычных SD размер стирания тоже как правило гораздо больше размера блока записи. И ничего - работает FatFS.

Хотя не разбирался как там это реализовано.

Правильно, потому что стиранием, бэдами и wear-leveling в SD карте занимается встроенный контроллер.

А FatFS делает только Read() и Write().

 

Неужто такое именно с параллельными FLASH происходит???

А в SPI Flash разве вообще бэды бывают?

Имхо - nand flash и spi flash это разные вещи...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в SPI Flash разве вообще бэды бывают?

Имхо - nand flash и spi flash это разные вещи...

А в чём отличие (на физ. уровне ячеек хранения)?

Раз указано максимальное кол-во циклов стирания - значит могут быть и бэды.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в чём отличие (на физ. уровне ячеек хранения)?

Раз указано максимальное кол-во циклов стирания - значит могут быть и бэды.

Отличие в разных технологиях.

Битые ячейки в nand - норма и неизбежность, а в spi flash - признак износа и исчерпания ресурса?

Смотря какая флеш, наверное.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня похожая задача, только нужно реализовать на ПЛИС.

Вопросец такой: а то, что первый блок NAND флешки всегда не битый - это стандарт или фича отдельного производителя? Например, микрон это в даташите не указывает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопросец такой: а то, что первый блок NAND флешки всегда не битый - это стандарт или фича отдельного производителя? Например, микрон это в даташите не указывает.

Первый блок никак не стандартизирован. Гарантия исправности первого блока - инициатива части производителей в некоторых моделях чипов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вот по поводу ECC (Error Correction Code).

Как правило - NAND и ECC идут всегда рядом.

 

Интересуют исходники энкодера и декодера для ECC по Хафману (1 бит) и Риду-Соломону (4 бита).

Особенно совместимые с энкодером контроллера NAND процессора OMAP-L137.

Если вдруг кто занимался...

 

Для четырехбитного варианта хочу попробовать использовать библиотеку Schifra.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Удалось мне поднять yaffs на моем STM32F429. Единственное эта файловая система требует много памяти и выделяет себе эту память с помощью malloc. Поэтому пришлось выделить большую кучу и разместить ее во внешней SDRAM. Но в целом работает, бэды отлавливает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как решили хранить таблицу бэдов?

Какой используете код коррекции ошибок?

 

И сколько, к примеру, оперативной памяти требуется файловой системе для работы с разделом в 16 мегабайт (как я понял вы используете NAND128?).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как решили хранить таблицу бэдов?

 

Если поднять YAFFS, то мне нужно этим заниматься - это делает за меня файловая система. Бэды она учитывает размещая в spare area флешки данные отличные от FF. Определяет бэдовый ли блок по результатам записи.

 

Какой используете код коррекции ошибок?

 

Коррекция ошибок ECC по Хаффману. Опять же это реализовано в самой файловой системе.

 

И сколько, к примеру, оперативной памяти требуется файловой системе для работы с разделом в 16 мегабайт (как я понял вы используете NAND128?).

 

Да я работаю NAND128. Мне понадобилось порядка 30 kB в общей сложности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Коррекция ошибок ECC по Хаффману. Опять же это реализовано в самой файловой системе.

Хм.. А какой-же тогда размер секторов в этой NAND-флешь? Получается - не равный степени двойки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сектор 16 kB без учета spare.

 

Я хотел сказать размер блока 16 k без учета spare. 1024 блока по 32 страницы, в каждой странице 512 байт данных и еще 16 байт дополнительная область (spare area).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сектор 16 kB без учета spare.

Я хотел сказать размер блока 16 k без учета spare. 1024 блока по 32 страницы, в каждой странице 512 байт данных и еще 16 байт дополнительная область (spare area).

Ясно. Значит в этой spare-area и хранится избыточная контрольная информация.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хм.. А какой-же тогда размер секторов в этой NAND-флешь? Получается - не равный степени двойки?

Полистайте на досуге любой (!) даташит на параллельную NAND.

Там размер страницы 528, 2112 и прочие "некратные".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...