Свежие обсуждения
Микроконтроллеры

А кто как организует в своих программах контроль завершённости

1 2 7

О чем и хотелось сказать

 

Vlad_Petr: Новые данные (не важно какие) пишутся в отдельный буфер, затем проверяется достоверность данных в этом буфере и если все ОК, то быстро перезаписывается на штатное место
Поясните, что за отдельный буфер? И как проверяется достоверность данных?

 

GM: Поясните, что за отдельный буфер? И как проверяется достоверность данных?
Да в каждом отдельном случае разный. Например Виндовоз качает файл для обновления (сохраняет как временный файл с номером), затем проверит его контрольную сумму (и еще , наверное,чего-нибудь, тут дядя Билл знает) и если все ОК запишет его уже с именем... и т.д. Для контроллера критерии достоверности каждый сам ваяет.. Например, если это дистанционная коррекция софта (я так делал), то нужен буфер ОЗУ для этого сегмента программы, после принятия решения о достоверности, запрет любой деятельности и перезапись принятого во флешку. Причем, на время перезаписи питание должно быть, иначе кирдык! Затем перезапуск и жизнь сначала. Для записи не во флешку а в озу проще, потому как много быстрее..с питанием страховаться проще. По любому, для таких фокусов надо заводить на пин контроллера сигнал о начале падения питания, загодя до срабатывания reseta.

 

Во попёрло!
Будь(те) добр(ы), не приумножай(те) сущностей! Или по-русски - НЕ нужно делать новый пост, когда есть возможность дописать предыдущий.

 

Дон Амброзио: А если в блок данных случайно (из-за сбоя) писанУли уже после того, как установлен тэг "Транзакция завершена"?
Найдите сбой и устраните. А если флэшка сбоит при чтении из-за пониженного напряжения, так что все экземпляры окажутся разными - тогда что будете делать?

Дон Амброзио: если этот вопрос задаю Я, значит он не так прост как кажется
А если на вопрос отвечаю Я, даже не новички в разработке получают исчерпывающий ответ. Вопрос решен десятилетия назад. Точка.

 

Еще могут покоцаться программный счечтчик, дешифратор команд, АЛУ...
Еще может рядом упасть атомная бомба...
Да много еще чего может покоцаться...
Для избежания всех этих неприятностей есть "параноидальный стиль программирования".
Только и он не помогает.
В случаях, где действительно всего этого необходимо избежать, применяются паралельно-мажоритарные структуры.
Да и это помогает далеко не всегда...
Молодой дон еще многого не знает.
Но понимание, что ЕЕPRОМ это не жесткий диск обнадеживает

 

.

 

"Внутри микроконтроллера есть EEPROM. Это ясно? Т.е. не жёсткий диск компьютера, а встроенная EEPROM микрокотроллера.. Разницу уловили?"

А в чём разница?

 

Дон, а как вы думаете? В прямом смысле. А вдруг в процессе мышления у Вас в голове нейрон умрет? И Вы подумаете не ту мысль? Против этого есть какие-нить приемы "правильного" мышления? Не поделитесь соображениями по этому поводу?

 

Не стал развивать эту тему дальше - поставил точку вместо предыдущего своего сообщения.