Вот как я представляю себе это

Прошу критиковать. (применение FRAM, батареек - простите, это другая песня, речь идёт именно об использовании родного ППЗУ в кристалле).
В EEPROM выделяем буфер N слов. Слово 4 байта ( 3 байта число минут, хватит на 32 года, 1 байт CRC). При прошивке расписываем буфер нулями с правильным CRC.
При включении прибора ищем ближайшее слово с правильным CRC. (адрес P) Его значение переписывааем в RAM, там наращиваем каждую минуту. Дальше ищем от P+1 до P-2 по кольцу слово с правильным нулём (в смысле CRC), адрес Q. Если нет - пишем нуль+CRC в P+1 .. P-2 пока получится.
Во время работы каждую минуту записываем значение времени в Q с проверкой. Не получилось - ищем/организуем следующее слово для записи, как описано выше.
Что получается. Буфер содержит "хвост" из счётчиков последних включений с правильным CRC. По жизни EEPROM исчерпывает ресурс, и тогда получается неверный CRC. Вся эта байда работает, пока не испортятся все слова буфера, кроме одного. Тогда в нём содержится счётчик наработки на момент исчерпания ресурса. Точность 1 минута, потери возникают при включении меньше, чем на минуту и при каждом выключении. То есть прибор при нормальной работе включается на десятки минут.
Чтобы не писать каждую минуту и избежать потерь при выключении, можно организовать контроль питания и буферный кондёр такой, чтобы хватило на запись. Но это уже третья песня

Что хочется узнать. Как портятся ячейки EEPROM - становятся FF, 00 или ещё как-то? Для проверки правильности записи - CRC или ещё что-то?
Сообщение отредактировал Maik-vs - Jul 16 2008, 07:44