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

Как надежно работать с SPI-Flash - дефект-листы / зеркало / ECC / .. ?

Привет,

 

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

 

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

 

Такой вот простой, но внезапно не имеющий решений в лоб вопрос у меня.

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


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

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

 

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

 

Какое отношение имеет SPI к FLASH вообще?

Гуглить-то наверное надо по "flash wear levelling" или "eeprom wear levelling" в зависимости от того, что такое "обычная spi флешка".

Данные как пишутся ? Линейно, по случайному алдресу или в одно и тоже место ?

 

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


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

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

Надо не бороться с последствиями, а лечить саму проблему.

Пути решения:

1. Переделать алгоритм записи так, чтобы писалось не в одно место, а каждая запись - в новое. Чтобы флешь равномерно изнашивалась. И, при необходимости, увеличить её объём с запасом, произведя элементарный расчёт с учётом: срока службы изделия, частоты стираний, максимального допустимого кол-ва циклов стирания ИС.

2. Заменить флешь на другой тип памяти (например FRAM или батарейное ОЗУ или просто ОЗУ с монитором питания). Даже если необходим большой объём записи, то с помощью FRAM может быть возможно уменьшить кол-во циклов стирания флешь.

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


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

Какое отношение имеет SPI к FLASH вообще?

Гуглить-то наверное надо по "flash wear levelling" или "eeprom wear levelling" в зависимости от того, что такое "обычная spi флешка".

Данные как пишутся ? Линейно, по случайному алдресу или в одно и тоже место ?

 

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

 

Надо не бороться с последствиями, а лечить саму проблему.

Пути решения:

1. Переделать алгоритм записи так, чтобы писалось не в одно место, а каждая запись - в новое. Чтобы флешь равномерно изнашивалась. И, при необходимости, увеличить её объём с запасом, произведя элементарный расчёт с учётом: срока службы изделия, частоты стираний, максимального допустимого кол-ва циклов стирания ИС.

2. Заменить флешь на другой тип памяти (например FRAM или батарейное ОЗУ или просто ОЗУ с монитором питания). Даже если необходим большой объём записи, то с помощью FRAM может быть возможно уменьшить кол-во циклов стирания флешь.

 

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

 

Я просто думал, что есть уже какие-то open-source решения, что бы можно было бы хотя-бы от чего то оттолкнуться. Но видимо ничего нет, и впереди меня ждет увлекательный путь велосипедостроения...

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


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

Я просто думал, что есть уже какие-то open-source решения, что бы можно было бы хотя-бы от чего то оттолкнуться. Но видимо ничего нет, и впереди меня ждет увлекательный путь велосипедостроения...

Отчего же, есть такие. JFFS

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


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

Довольно странно, но гугль на тему "SPI flash defect list", "spi flash ecc" и подобных запросов толком ничего не знает.
Ищите на тему "NAND flash ecc". Для простых SPI коррекцию применяют редко, а для NAND это must-have вещь. А уж применить то, что найдется, можно и к SPI FLASH

 

 

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


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

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

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

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

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

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

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

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

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

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