Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как надежно работать с SPI-Flash - дефект-листы / зеркало / ECC / .. ?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Tronix286
Привет,

Есть обычная SPI флешка 64 мбита (8 Mb), на которую постоянно, фактически ежеминутно, пишутся данные. Соответственно часто происходят операции очистки (erase) и программирования секторов. Я склонен к тому, что при такой интенсивной работе не исключено появление через год-два "битых" страниц. Поэтому хотел узнать, кто как решает эту проблему?

Довольно странно, но гугль на тему "SPI flash defect list", "spi flash ecc" и подобных запросов толком ничего не знает. Сделать дефект-лист, куда заносить номера дефектных страниц? А если запорится страница, в котором лежит этот самый дефект-лист? Сделать в начале каждой страницы флажек - исправна страница или нет? А если я не смогу записать флажек, что вот эта страница не исправна, потому что она не исправна и не пишется в нее ничего?

Такой вот простой, но внезапно не имеющий решений в лоб вопрос у меня.
CrimsonPig
Цитата(Tronix286 @ Mar 19 2015, 21:27) *
Есть обычная SPI флешка 64 мбита (8 Mb), на которую постоянно, фактически ежеминутно, пишутся данные. Соответственно часто происходят операции очистки (erase) и программирования секторов. Я склонен к тому, что при такой интенсивной работе не исключено появление через год-два "битых" страниц. Поэтому хотел узнать, кто как решает эту проблему?

Довольно странно, но гугль на тему "SPI flash defect list", "spi flash ecc" и подобных запросов толком ничего не знает. Сделать дефект-лист, куда заносить номера дефектных страниц? А если запорится страница, в котором лежит этот самый дефект-лист? Сделать в начале каждой страницы флажек - исправна страница или нет? А если я не смогу записать флажек, что вот эта страница не исправна, потому что она не исправна и не пишется в нее ничего?


Какое отношение имеет SPI к FLASH вообще?
Гуглить-то наверное надо по "flash wear levelling" или "eeprom wear levelling" в зависимости от того, что такое "обычная spi флешка".
Данные как пишутся ? Линейно, по случайному алдресу или в одно и тоже место ?
jcxz
Цитата(Tronix286 @ Mar 20 2015, 03:27) *
Есть обычная SPI флешка 64 мбита (8 Mb), на которую постоянно, фактически ежеминутно, пишутся данные. Соответственно часто происходят операции очистки (erase) и программирования секторов. Я склонен к тому, что при такой интенсивной работе не исключено появление через год-два "битых" страниц. Поэтому хотел узнать, кто как решает эту проблему?

Надо не бороться с последствиями, а лечить саму проблему.
Пути решения:
1. Переделать алгоритм записи так, чтобы писалось не в одно место, а каждая запись - в новое. Чтобы флешь равномерно изнашивалась. И, при необходимости, увеличить её объём с запасом, произведя элементарный расчёт с учётом: срока службы изделия, частоты стираний, максимального допустимого кол-ва циклов стирания ИС.
2. Заменить флешь на другой тип памяти (например FRAM или батарейное ОЗУ или просто ОЗУ с монитором питания). Даже если необходим большой объём записи, то с помощью FRAM может быть возможно уменьшить кол-во циклов стирания флешь.
Tronix286
Цитата(CrimsonPig @ Mar 20 2015, 01:20) *
Какое отношение имеет SPI к FLASH вообще?
Гуглить-то наверное надо по "flash wear levelling" или "eeprom wear levelling" в зависимости от того, что такое "обычная spi флешка".
Данные как пишутся ? Линейно, по случайному алдресу или в одно и тоже место ?


Ну, просто выразился я не правильно. Под SPI-Flash подразумевал serial flash, навроде 25df161, w25q64... За "правильные" запросы в гугл спасибо, изучаемс.. Данные разные. Какие-то было бы проще всего писать в одно и то же место. Это некоторые флаги, в том числе об предыдущем состоянии устройства и счетчики. Некоторые можно писать линейно, "по кругу", так как если не успели обработать последние, то первые уже теряют актуальность.

Цитата(jcxz @ Mar 20 2015, 08:40) *
Надо не бороться с последствиями, а лечить саму проблему.
Пути решения:
1. Переделать алгоритм записи так, чтобы писалось не в одно место, а каждая запись - в новое. Чтобы флешь равномерно изнашивалась. И, при необходимости, увеличить её объём с запасом, произведя элементарный расчёт с учётом: срока службы изделия, частоты стираний, максимального допустимого кол-ва циклов стирания ИС.
2. Заменить флешь на другой тип памяти (например FRAM или батарейное ОЗУ или просто ОЗУ с монитором питания). Даже если необходим большой объём записи, то с помощью FRAM может быть возможно уменьшить кол-во циклов стирания флешь.


Я понимаю, что писать нужно не в одно место, я про это говорил в первом посте. Менять железо - не вариант. Нужно просто продумать алгоритм, при котором устройство бы продолжало нормально функционировать даже при ~80% битой памяти у флеши (но сигнализировало бы о том, что не плохо было бы при случае пройти ремонт).

Я просто думал, что есть уже какие-то open-source решения, что бы можно было бы хотя-бы от чего то оттолкнуться. Но видимо ничего нет, и впереди меня ждет увлекательный путь велосипедостроения...
gerber
Цитата(Tronix286 @ Mar 25 2015, 00:16) *
Я просто думал, что есть уже какие-то open-source решения, что бы можно было бы хотя-бы от чего то оттолкнуться. Но видимо ничего нет, и впереди меня ждет увлекательный путь велосипедостроения...

Отчего же, есть такие. JFFS
XVR
Цитата(Tronix286 @ Mar 20 2015, 00:27) *
Довольно странно, но гугль на тему "SPI flash defect list", "spi flash ecc" и подобных запросов толком ничего не знает.
Ищите на тему "NAND flash ecc". Для простых SPI коррекцию применяют редко, а для NAND это must-have вещь. А уж применить то, что найдется, можно и к SPI FLASH

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.