|
|
  |
Как надежно работать с SPI-Flash - дефект-листы / зеркало / ECC / .. ?, если данные постоянно пишутся - стираются? |
|
|
|
Mar 19 2015, 21:27
|

Участник

Группа: Участник
Сообщений: 72
Регистрация: 25-10-14
Пользователь №: 83 341

|
Привет,
Есть обычная SPI флешка 64 мбита (8 Mb), на которую постоянно, фактически ежеминутно, пишутся данные. Соответственно часто происходят операции очистки (erase) и программирования секторов. Я склонен к тому, что при такой интенсивной работе не исключено появление через год-два "битых" страниц. Поэтому хотел узнать, кто как решает эту проблему?
Довольно странно, но гугль на тему "SPI flash defect list", "spi flash ecc" и подобных запросов толком ничего не знает. Сделать дефект-лист, куда заносить номера дефектных страниц? А если запорится страница, в котором лежит этот самый дефект-лист? Сделать в начале каждой страницы флажек - исправна страница или нет? А если я не смогу записать флажек, что вот эта страница не исправна, потому что она не исправна и не пишется в нее ничего?
Такой вот простой, но внезапно не имеющий решений в лоб вопрос у меня.
|
|
|
|
|
Mar 19 2015, 22:20
|

Местный
  
Группа: Участник
Сообщений: 329
Регистрация: 23-04-14
Пользователь №: 81 502

|
Цитата(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 флешка". Данные как пишутся ? Линейно, по случайному алдресу или в одно и тоже место ?
|
|
|
|
|
Mar 20 2015, 05:40
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Tronix286 @ Mar 20 2015, 03:27)  Есть обычная SPI флешка 64 мбита (8 Mb), на которую постоянно, фактически ежеминутно, пишутся данные. Соответственно часто происходят операции очистки (erase) и программирования секторов. Я склонен к тому, что при такой интенсивной работе не исключено появление через год-два "битых" страниц. Поэтому хотел узнать, кто как решает эту проблему? Надо не бороться с последствиями, а лечить саму проблему. Пути решения: 1. Переделать алгоритм записи так, чтобы писалось не в одно место, а каждая запись - в новое. Чтобы флешь равномерно изнашивалась. И, при необходимости, увеличить её объём с запасом, произведя элементарный расчёт с учётом: срока службы изделия, частоты стираний, максимального допустимого кол-ва циклов стирания ИС. 2. Заменить флешь на другой тип памяти (например FRAM или батарейное ОЗУ или просто ОЗУ с монитором питания). Даже если необходим большой объём записи, то с помощью FRAM может быть возможно уменьшить кол-во циклов стирания флешь.
|
|
|
|
|
Mar 24 2015, 21:16
|

Участник

Группа: Участник
Сообщений: 72
Регистрация: 25-10-14
Пользователь №: 83 341

|
Цитата(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 решения, что бы можно было бы хотя-бы от чего то оттолкнуться. Но видимо ничего нет, и впереди меня ждет увлекательный путь велосипедостроения...
|
|
|
|
|
Mar 24 2015, 21:23
|
Знающий
   
Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088

|
Цитата(Tronix286 @ Mar 25 2015, 00:16)  Я просто думал, что есть уже какие-то open-source решения, что бы можно было бы хотя-бы от чего то оттолкнуться. Но видимо ничего нет, и впереди меня ждет увлекательный путь велосипедостроения... Отчего же, есть такие. JFFS
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|