Краткое содержание: Если вы периодически обновляете какое-либо значение в EEPROM каждые несколько минут (или несколько секунд), вы можете столкнуться с проблемой износа ячеек EEPROM. Чтобы этого избежать, необходимо уменьшить частоту заходов в ячейку.
Для некоторых типов EEPROM запись даже чаще одного раза в час может стать проблемой.
Время летит, когда вы записываете данные
EEPROM обычно используется для хранения параметров конфигурации и журналов работы во встроенных системах.Например, вам может потребоваться функция «черного ящика» для записи последних данных во время аварии или отключения электроэнергии.
Я видел спецификации, требующие, чтобы такие данные записывались каждые несколько секунд. Но проблема в том, что EEPROM имеет ограниченное количество записей.
После 100 000 или миллиона операций записи (в зависимости от конкретного чипа) в некоторых ваших системах начнут возникать проблемы с выходом из строя EEPROM. (Посмотрите в даташите конкретную цифру.
Если вы хотите выпустить большое количество устройств, «худший случай», вероятно, важнее «типичного»).
Миллион записей кажется много, но на самом деле это очень быстро закончится.
Давайте рассмотрим пример, предполагая, что нам нужно сохранять измеренное напряжение одной ячейки каждые 15 секунд. 1 000 000 записей по одной записи каждые 15 секунд дают количество записей в минуту: 1 000 000 / (4 * 60 минут в час * 24 часа в день) = 173,6 дня.
Другими словами, ваша EEPROM исчерпает свой резерв в миллион записей менее чем за 6 месяцев.
Ниже приведен график, показывающий время износа (в годах) в зависимости от периода обновления конкретной ячейки EEPROM. Граничная граница для продукта со сроком службы 10 лет — одно обновление каждые 5 минут 15 секунд для чипа со сроком службы 1 миллион операций записи.
Для EEPROM с ресурсом 100К обновлять конкретную ячейку можно не чаще, чем раз в 52 минуты.
Это означает, что вам не следует ожидать обновления ячейки каждые несколько секунд, если вы хотите, чтобы ваш продукт прослужил годами, а не месяцами.
Вышеупомянутое масштабируется линейно, однако в этом устройстве есть и второстепенные факторы, такие как температура и режим доступа.
Уменьшите частоту
Самый безболезненный способ решения проблемы — просто реже записывать данные.В некоторых случаях системные требования позволяют это сделать.
Или вы можете записывать только тогда, когда происходят большие изменения.
Однако при записи на основе событий имейте в виду возможный сценарий, при котором значение будет постоянно колебаться, вызывая поток событий, которые приводят к износу EEPROM. (Было бы неплохо, если бы вы могли определить, сколько раз была записана информация в EEPROM. Но для этого потребуется сохранить счетчик в EEPROM. что делает проблему проблемой износа.
)
Прерывание низкой мощности
Некоторые процессоры имеют прерывание низкого энергопотребления, которое можно использовать для записи последнего значения в EEPROM, пока система выключается из-за потери питания.В общем, вы храните интересующее значение в оперативной памяти, а в EEPROM сохраняете его только при выключении питания.
Или, возможно, вы время от времени записываете EEPROM и записываете в EEPROM еще одну копию в рамках процедуры выключения, чтобы гарантировать запись самых последних данных.
Важно убедиться, что на блоке питания стоит большой конденсатор, который будет поддерживать напряжение, достаточное для программирования EEPROM в течение достаточно длительного времени.
Это может сработать, если вам нужно записать одно или два значения, а не большой блок данных.
Будьте осторожны, здесь есть много места для ошибки!
Кольцевой буфер
Классическим решением проблемы износа является использование кольцевого буфера FIFO, содержащего N самых последних записей значений.Вам также потребуется сохранить указатель на конец буфера в EEPROM. Это уменьшает износ EEPROM на величину, пропорциональную количеству копий в этом буфере.
Например, если для хранения одного значения буфер проходит по 10 разным адресам, каждая конкретная ячейка модифицируется в 10 раз реже, а ресурс записи увеличивается в 10 раз.
Вам также понадобится отдельный счетчик или временная метка для каждой из 10 копий, чтобы вы могли определить, какая из них была последней на момент выключения.
Другими словами, вам понадобятся два буфера: один для значения, другой для счетчика.
(Хранение счетчика по тому же адресу приведет к его износу, поскольку его необходимо увеличивать с каждым циклом записи.
) Недостаток этого метода в том, что для получения в 10 раз большего срока службы требуется в 10 раз больше места.
Вы можете проявить смекалку и упаковать счетчик вместе с данными.
Если вы записываете большой объем данных, добавить несколько байтов для счетчика не составит большого труда.
Но в любом случае вам понадобится много EEPROM.
Atmel подготовила инструкцию по применению, содержащую все кровавые подробности:
AVR-101: Высоконадежная память EEPROM: www.atmel.com/images/doc2526.pdf
Специальный корпус для счетчика записей
Иногда нужно сохранить счетчик, а не сами значения.Например, вы можете узнать, сколько раз устройство включалось или время работы вашего устройства.
Хуже всего в счетчиках то, что они постоянно меняют младший бит, быстрее изнашивая младшие ячейки EEPROM. Но и здесь можно применить некоторые хитрости.
В примечаниях по применению Microchip есть несколько умных идей, таких как использование кода Грея, чтобы гарантировать, что при изменении значения счетчика изменяется только один бит многобайтового счетчика.
Они также рекомендуют использовать корректирующие коды для компенсации износа.
(Насколько эффективным будет использование таких кодов, я не знаю, так как это будет зависеть от того, насколько независимыми будут битовые ошибки в байтах счетчика, используйте на свой страх и риск, прим.
автора).
См.
примечание к приложению: www1.microchip.com/downloads/en/AppNotes/01449A.pdf Примечание: Для желающих узнать больше компания Microchip подготовила документ, содержащий подробную информацию о конструкции ячеек EEPROM и их износе со схемами: ftp.microchip.com/tools/memory/total50/tutorial.html Дайте знать, если у вас есть интересные идеи по борьбе с износом EEPROM. Источник: Фил Купман, «Лучшее ПО для встраиваемых систем».
Betterembsw.blogspot.ru/2015/07/avoiding-eeprom-wearout.html Примечание переводчика: в последние годы появились микросхемы EEPROM с организацией стирания страниц (аналогично чипам FLASH), где логически возможно побайтно обращаться к ячейкам (чтение, запись и стирание), но при этом микросхема, невидимый для пользователя, стирает всю страницу и перезаписывает ее новыми данными.
Те.
Стирая ячейки по адресу 0, мы фактически стёрли и перезаписали ячейки с адресами 0.255 (при размере страницы 256 байт), поэтому трюк с буфером в данном случае не поможет. При исчерпании ресурса записи такой микросхемы выходит из строя не одна ячейка, а вся страница.
В даташитах на такие чипы ресурс записи указывается для страницы, а не для конкретной ячейки.
См.
, например, техническая спецификация на 25LC1024 от Microchip. Теги: #Электроника для начинающих #встраиваемые системы #перевод #eeprom
-
Безопасный Android Для Детей
19 Oct, 24 -
Создается Более Дешевый «Клон» Raspberry Pi
19 Oct, 24 -
Программа Geek Picnic В Санкт-Петербурге
19 Oct, 24 -
7 Новостей От Apple. Короткий.
19 Oct, 24