Как продлить и оценить срок службы EEPROM
Несколько идей, как продлить жизнь EEPROM (предполагается, что вы знакомы с объектом stor.):
- Ограничьте число обновлений данных в EEPROM. Например, если вы считаете события, не записывайте значение в EEPROM при каждом приращении счётчика. Вместо этого храните счётчик в переменной в RAM и введите правило обновления EEPROM: скажем, записывайте значение раз в 100 приращений счётчика в RAM или после x часов простоя.
- Прежде чем записывать данные в ячейку EEPROM, прочитайте её и проверьте, нет ли там уже этих данных. В EEPROM запись тех же данных в ту же ячейку тоже считается циклом записи!
- Используйте равномерное распределение износа: перемещайте область хранения по диапазону адресов EEPROM. Например, если у вас 32-битный счётчик, создайте массив 32-битных ячеек и при каждом приращении счётчика переходите к следующей ячейке. Этот пункт нужно рассматривать вместе со следующим...
- Размещая в EEPROM часто обновляемые данные, старайтесь удерживать их в границах секторов. Как и во флеш-памяти, в EEPROM есть сектора. У устройств Tibbo с EEPROM на 2 КБ сектора по 16 байт, у устройств с EEPROM на 256 байт - по 8 байт. Обновляя данные в части сектора, вы изнашиваете сектор целиком! При подсчёте границ секторов учитывайте свойство stor.base - оно задаёт для всех записей фиксированное смещение! Например, в EM1000 (EEPROM на 2 КБ) для записи в третий сектор EEPROM используйте stor.setdata(s,4), поскольку stor.base = 29, а 29 + 4 = 33 (то есть первая ячейка третьего 16-байтного сектора [ячейки объекта stor. нумеруются с 1]).
- Используйте избыточность: храните две и более копий данных EEPROM и защищайте данные контрольными суммами. Если одна копия выйдет из строя, останется другая. Это также защищает от внезапного отключения питания: если питание пропадёт во время записи в EEPROM, данные могут быть потеряны, а резервная копия в такой ситуации выручит.
- Рассмотрите возможность использовать библиотеку STG - она избавит вас от множества проблем при работе с данными EEPROM.
При оценке срока службы EEPROM в вашей системе учитывайте следующее:
- Всегда помните о секторной структуре микросхем EEPROM. Запись даже одного байта в сектор сокращает срок службы всего сектора.
- Запись строки из нескольких символов даёт столько циклов записи, сколько символов в строке. Вызов stor.setdata("ABC",4) считается тремя циклами записи, а не одним.
- Высокая температура окружающей среды сокращает срок службы EEPROM.
- Все оценки ресурса EEPROM от производителей носят вероятностный характер. Вам встретятся «более стойкие» и «менее стойкие» экземпляры с сильно различающимся ресурсом. В целом можно с достаточной уверенностью считать, что EEPROM выдержит не менее 1 миллиона циклов записи на сектор ... но гарантий этого нет.