Мне надо писать в AVR пакеты фиксированной длины (длина пакета равна размеру сектора EEPROM).
Внезапные сбои питания меня не пугают. У меня автоматическая верификация (после каждой записи) и CRC-16.
jcxz писал(а):Ну и что? Она будет изнашиваться с той же скоростью, что и область данных.
Нет не будет.
Данные равномерно записываются по всем секторам в разные ячейки... а пашка переписывается каждый раз в одни и те же ячейки. Поэтому первая сдохнит шапка.
jcxz писал(а):Всегда должен быть как минимум один стёртый сектор перед головой записи. По нему и узнаем. Я уже выше описывал свой алгоритм. См:
https://radiokot.ru/forum/viewtopic.php ... 5#p3887015
Ничего не понял... Чем Ваш "червяк" отличается от моего "червяка" ?
Вот мой "червяк" (писал выше):
1. Разбиваем EEPROM на сектора:
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
2. Записываем данные
1111111 в нулевой сектор:
1111111 FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
3. Записываем новые данные
1111111 в новый сектор, а старый сектор стираем
FFFFFFFF:
FFFFFFFF 1111111 FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
4. Записываем новые данные
1111111 в новый сектор, а старый сектор стираем
FFFFFFFF:
FFFFFFFF
FFFFFFFF 1111111 FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
5. Записываем новые данные
1111111 в новый сектор, а старый сектор стираем
FFFFFFFF:
FFFFFFFF FFFFFFFF
FFFFFFFF 1111111
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
6. И т.д. ))
Один недостаток - за оцин цикл каждый сектор по два раза записываем (точнее сначала записываем данные
111111 потом стираем данные
FFFFFFF). В данном случае Чтение и Стирание - это одно и то же.
При этом износ EEPROM в два раза больше...
Или в AVR есть "секретная кнопка", о которой я не знаю, которая позволяет стирать EEPROM (
FFFFFF....) так чтобы ячейки не изнашивались ?