Завершение переходного процесса в EEPROM

Обсуждаем контроллеры компании Atmel.
Ответить
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

musor писал(а):он будет выработан очень быстро
это глубокомысленное заключение имеет под собой какие-то расчеты?
NStorm писал(а):пришла мысль использовать 2 CRC
да хоть 22 - узнав из несовпадения CRC о том, что ЭТА ЗАПИСЬ (т.е. та самая, где должно храниться БУДУЩЕЕ СОСТОЯНИЕ) некорректна, как вы сможете восстановить это самое будущее состояние?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15600
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Как-то занимался подобным (восстановление текущего статуса после абсолютного сбоя-
имитация автомата газовой колонки после искрового разряда в шину питания)...
:facepalm:
Предпочтение полному перезапуску.
:tea:
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

NStorm, давайте для примера сыграем в игру.
я буду писать названия дней недели, а вы должны угадать, какой день недели я напишу следующим. чтобы определить, что я ввел день недели корректно, вы будете использовать CRC в виде знания, что дней недели всего 7, и вам все они известны.
итак, вы от меня получили следующее:
ПОНЕДЕЛЬНИК
СУББОТА
ВАСЯ

вы видите, что последняя запись битая. какой день недели там должен был быть?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 39197
Зарегистрирован: Сб сен 13, 2014 16:27:32
Откуда: СпиртоГонск созвездия Омега

Сообщение musor »

пока ТС не сказал ка часто будет переписываться каждая ячейка епрому
я выше привел пример неудачности рещения
зная частоту перезаписи и статистику отказа ячек легко вычислите минималный резурс до сбоя матрицы хранения не факт что оно фатаоно если применить умный алгоритм и пометить сбойные адреса ка делают в нанде вот тока сам мк это не умет делать апаратно
в отличие от винта или SSD

Добавлено after 1 minute 24 seconds:
насчет ошибок исползуйте рида соломона и ошибки похуй

Добавлено after 4 minutes 11 seconds:
очень простой и дешевы алгоритм применялся одно время в метро и турникетах и картах банкоф на магнитной строке
2 кратная избыточность если копи совпадалии крк верны-принимались даные
если одна невена востанавливались из 2 дупликатной копи(переписывая и полврежденуб)
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Сообщения: 615
Зарегистрирован: Вс дек 28, 2014 21:54:05

Сообщение dgrett »


2 кратная избыточность если копи совпадалии крк верны-принимались даные
если одна невена востанавливались из 2 дупликатной копи(переписывая и полврежденуб) “

А как знать, которая запись верная, чтобы из неё восстановить? Тогда надо 3 копии делать, чтобы из двух восстановить?
Я всё-всё узнAю и стану профессором.
Реклама
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

[uquote="ARV",url="/forum/viewtopic.php?p=3805874#p3805874"]да хоть 22 - узнав из несовпадения CRC о том, что ЭТА ЗАПИСЬ (т.е. та самая, где должно храниться БУДУЩЕЕ СОСТОЯНИЕ) некорректна, как вы сможете восстановить это самое будущее состояние?[/uquote]
Видимо недопонимание у нас с вами. Если запись CRC 1 некорректна - значит переход еще не начинался. И мне после перезапуска можно его и не начинать. И следовательно "предугадывать" ничего и не надо.

По вашему примеру запись ВАСЯ я просто выкидываю.
А вот если там будет написано СРЕДА, но при этом кривое CRC2, значит у нас был незавершенный переход с СУББОТЫ на СРЕДУ и надо его продолжить.

EDIT: А если сохранять 22 CRC с равными интервалами времени, можно даже с кратностью в 22 определить на каком месте переход прервался :)))
Реклама
Друг Кота
Аватара пользователя
Сообщения: 39197
Зарегистрирован: Сб сен 13, 2014 16:27:32
Откуда: СпиртоГонск созвездия Омега

Сообщение musor »

ну тогда вам надо создать в матрице хранения мини ос ntfs вот толка какая мега это вытянет? даже ардуинки 328 врядли
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

NStorm писал(а):Грубо говоря: начинаем переход -> записываем новое состояние в EEPROM. Переход завершили -> дописываем дальше флаг окончания перехода.
это вы писали?
NStorm писал(а):Видимо недопонимание у нас с вами. Если запись CRC 1 некорректна - значит переход еще не начинался. И мне после перезапуска можно его и не начинать. И следовательно "предугадывать" ничего и не надо.
и это вы?

а теперь, внимание: вопросы знатокам!

1. вы начали переход, затем начали запись с CRC1, чтобы пометить начало перехода (я так понимаю, именно тут будет записано КУДА переход начат?), и словили сбой питания - что будет? будет начатый переход без записи об этом. т.е. после восстанвления питания переход вам надо сделать, но куда - не известно.

2. если вы сделали наоборот, перед тем, как начать переход сначала решили сделать запись об этом, и в процессе этого словили сбой питания - что будет? снова будет отсутствие записи о начале перехода, и после восстановления питания снова не понятно, что делать.

3. предположим, первая запись "куда" у вас прошла, прошел и переход, и в процессе записи "переход закончен" вы ловите сбой питания - что будет?
после восстановления питания вы видите, что переход был начат, но не закончен, и снова делаете этот переход...

какой из вариантов является корректным по-вашему?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

ARV, 1ая фраза давно была. После неё я несколько раз вам писал, что сначала пишем:
Поэтому и мысль ДО начала переходного процесса записываем следующее состояние в EEPROM - успешно записались и только тогда начинаем сам процесс перехода.
Перед переходным процессом сначала зачищаем (т.е. перезаписываем в 0xFF) в EEPROM данные по позиции CRC8 и PADDING'а, если буду его использовать (ну просто чтобы кратное объему EEPROM было). Потом пишу всю первую часть
CRC1 пишется ДО начала любого перехода.
Перечитайте вот этот пост: https://radiokot.ru/forum/viewtopic.php ... 4#p3805844 я же там процесс расписал.

1. Неактуально. Я не начинаю переход пока не запишу успешно CRC1.
2. Я просто начну переход после восстановления питания. Мне не важно начинать его сначала или с середины.
3. Я черным по-белому написал, что это мне некритично:
Единственный возможный момент ту мне видится только если переход сам произошел успешно, но при этом питание "закончилось" в момент записи CRC2 и мы не успели записать успешность физического процесса перехода. Мне это некритично.
Я знаю как обработать эту ситуацию.

Добавлено after 4 minutes 9 seconds:
Еще несколько условий, чтобы было понятнее. Почему-то за них зацепились, хотя вопрос не в них был.

1. Переход начинается по какому либо из событий.
2. После события сначала пишется запись о следующем состоянии + CRC1.
3. Запускается физический процесс.
4. По завершению пишется CRC2.

Если между этапами 1 и 2 прозошел сбой - событие можно отбросить. Даже если оно было, пока сам физический процесс не начался - не страшно "забыть" событие и вернуться к прошлому состоянию до сбоя.
Если между этапми 3 и 4 произошел сбой - не важно, я знаю как это обработать. Обработка будет одинаковая как если физ. процесс незавершился, так и если он завершился, но мы об этом не записали CRC.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

ну, тогда запись с CRC2 вам тоже не нужна, если вы умеете игнорировать её... после успешного завершения процесса вам надо просто переписать флаг CRC1, чтобы не начинать процесс снова, если что... или вам и повторный запуск процесса не страшен?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

Если переписывать CRC1 с новым флагом - если тут глюкнет питание, то пропадет вся запись о уже завершенном процессе. Поэтому флаг отдельно в виде CRC2. Повторный запуск не страшен. А вот возврат к предыдущей записи состояния, хотя мы уже в другом состоянии - страшен. Для этого и отдельный флаг.
Друг Кота
Аватара пользователя
Сообщения: 15600
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

ГЫММ....
Похоже сама задача не слишком верно поставлена...
:dont_know:
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

Извиняюсь, если недостаточно хорошо описал задачу. Тем не менее, всем ответившим спасибо. Благодаря наводящим вопросам стало понятно что мне нужно и как это сделать. )
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Я в одном своём проекте (блок управления термоформовочного станка) сделал так. Поставил ионистор. И цепь слежения за питанием. При включении питания из еепром в срам перегоняются ВСЕ параметры. В процессе работы работаем в срам. Когда выключается питание, все параметры за счёт ионистора перегоняются в еепром. Несколько блоков управления было сделано в 2013 году. Ни разу не звонили.
Контактная информация:
Ответить

Вернуться в «AVR»