|
stm32 EEPROM алгоритмы экономии ресурса ячеек, В Интернете ничего не нашел путного |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 24)
|
Aug 4 2018, 08:16
|
Участник

Группа: Свой
Сообщений: 50
Регистрация: 10-05-12
Пользователь №: 71 756

|
Один из вариантов - писать каждый раз в новую группу ячеек EEPROM по кругу, это позволяет размазать износ на несколько ячеек и, соответсвенно, увеличить суммарный ресурс. Чтобы при чтении была возможность определить где последнее записанное значение частью записанного значения должен быть счетчик. Где между соседними записями значение счетчика меняется скачком, а не на 1 там и была сделана запись в прошлый раз.
|
|
|
|
|
Aug 6 2018, 09:30
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Димон Безпарольный @ Aug 6 2018, 11:07)  Я так понимаю в счетчике упаковано 2 значения - начальный адрес текущих ячеек данных и счетчик циклов текущих ячеек? Ни к чему там 2 значения и четыре байта: просто счетчик, разрядность которого покрывает максимальное количество записей в выделенном пространстве. Получится массив записей счетчик-данные вида: 0365 <DATA> 0366 <DATA> 00BC <DATA> 00BD <DATA> ... Понятно, что запись под номером 0366 является последней. И с какой целью считать циклы?
|
|
|
|
|
Aug 6 2018, 18:48
|
Местный
  
Группа: Участник
Сообщений: 356
Регистрация: 24-02-09
Пользователь №: 45 309

|
В даташите на STM32L151 сказано, что количество стираний EEPROM - 300.000 (рисунок внизу). Размер стираемого/записываемого блока: Double word, Word, Half word, Byte. Если предположить, что ресурс 300К относится к каждому Double word (64 бит или 8 байт), а остальных ячеек не касается, то ресурс записи всей памяти будет: 1) 4096 байт / 8 байт = 512 Double word-ячеек. 2) 512 * 300.000 = 153.600.000 перезаписей. 153 миллиона!!! 3) если писать каждые 5 минут один Double word (8 байт), то: 153600000 * 5 / 1440 = 533333 суток, или 1461 год. Выглядит заманчиво, но что-то мне не верится. Такой ресурс может быть только у FRAM. Скорее всего 300.000 перезаписей относится ко всему блоку EEPROM 4K. В этом случае ресурс записи в EEPROM такой (при одной записи каждые 5 минут): 1) 300.000 * 5 / 1440 = 1041 сутки, или 2 года и 311 суток
Эскизы прикрепленных изображений
|
|
|
|
|
Aug 6 2018, 19:31
|
Местный
  
Группа: Участник
Сообщений: 356
Регистрация: 24-02-09
Пользователь №: 45 309

|
Цитата(ViKo @ Aug 6 2018, 21:56)  Нормальный ресурс для EEPROM. Относится к тому, что написано - каждый байт можно перезаписать 300 000 раз. Тогда и проблемы нет - просто писать по кругу эту память, блоками по 8 байт (4 байта счётчик, 4 байта данных - как предлагали выше). И хватит на 1461 год Но мне кажется, что не всё так радужно. 1) Даже в SSD-накопителях ресурс записи сектора меньше 10К. А для обеспечения миллионов перезаписей используется технология выравнивания износа (WearLeveling) за счёт резервных секторов. 2) EEPROM обсуждаемого контроллера недоступна для записи из некоторых блоков Program memory - конкретно в режиме Double word её можно писать из SRAM, и только из нескольких, прямо указанных блоков Program memory (конкретнее смотреть в даташите). Из чего можно предположить, что EEPROM-ка - это просто часть одного из блоков Program memory, за счёт срытых секторов которого обеспечивается WearLeveling до ресурса записи 300К.
Сообщение отредактировал controller_m30 - Aug 6 2018, 20:00
|
|
|
|
|
Aug 6 2018, 20:10
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(controller_m30 @ Aug 6 2018, 22:31)  1) Даже в USSD-накопителях ресурс записи сектора меньше 10К. Так у перфоленты ресурс вообще составляет одну запись. Цитата(controller_m30 @ Aug 6 2018, 22:31)  Из чего можно предположить, что EEPROM-ка - это просто часть одного из блоков Program memory, за счёт срытых секторов которого обеспечивается WearLeveling до ресурса записи 300К. Даже если так, ресурс ведь обеспечен? В чем "не радужность"?
|
|
|
|
|
Aug 6 2018, 20:16
|
Местный
  
Группа: Участник
Сообщений: 356
Регистрация: 24-02-09
Пользователь №: 45 309

|
Цитата(aaarrr @ Aug 6 2018, 23:10)  Даже если так, ресурс ведь обеспечен? В чем "не радужность"? В том, что если программную память контроллера можно гарантировано переписать 10К раз, то EEPROM только 300К раз. Поскольку это просто часть программной памяти (в моих предположениях, естественно).
Сообщение отредактировал controller_m30 - Aug 6 2018, 20:32
|
|
|
|
|
Aug 7 2018, 19:01
|
Знающий
   
Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247

|
Цитата(controller_m30 @ Aug 7 2018, 20:03)  Даже в самом пессимистичном варианте, ресурса EEPROM хватит на 2 года и 311 суток (при 64-битных записях, один раз в 5 минут). Может этого времени достаточно, чтоб устройство полностью оправдало заплаченные за него деньги, было списано, а потом была куплена новая версия с FRAM? На плате я предусмотрел установку I2C памяти 24с... Но поставить мне ее уже не дадут. Придется пробовать полагаясь на эти 300к. Спасибо всем что потратили на меня свое время.
Сообщение отредактировал Димон Безпарольный - Aug 7 2018, 19:02
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|