реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Инициализация структуры во Flash, Дублирование области flash
jcxz
сообщение May 25 2016, 09:21
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(pokk @ May 25 2016, 15:13) *
Да все три по очереди, стереть первую копию записать, стереть вторую копию записать...

Вот стёрли Вы вторую, и тут бах! - выключились. А после включения получили: 1-я - новое содержимое; 2-я - стёрта; 3-я - старое содержимое.
И с Вашим методом сравнения получите потерю содержимого этих структур.

Цитата(pokk @ May 25 2016, 15:13) *
Это может произойти только в одном из копий и она да повредится, остальные копии уже записались либо ещё не стерлись.

Вот эти остальные у Вас и будут разные. И когда начнёте сравнивать побайтно, получите что в 3-х разных копиях три разных варианта значений.
Как можно не замечать очевидного???
Go to the top of the page
 
+Quote Post
ШСА
сообщение May 25 2016, 11:13
Сообщение #17


Местный
***

Группа: Участник
Сообщений: 291
Регистрация: 11-04-14
Из: Саратов
Пользователь №: 81 335



Цитата(pokk @ May 25 2016, 12:13) *
Да все три по очереди, стереть первую копию записать, стереть вторую копию записать...

Кроме всего прочего, у Вас будет очень сильный износ флеши. Если размер структуры много меньше размера секции флеши и рабочая копия есть в ОЗУ, то выгоднее с точки зрения износа флеши (а, следовательно, достоверности данных в ней) и проще записывать каждую обновлённую структуру сразу же после предыдущей. По окончании записи, в предыдущей затирать первый байт (слово). При считывании определяем актуальную запись по первому слову.
Тогда флеш будет расходоваться максимально рационально, причём стираться будет только после использования всей свободной области, т.е. редко. А в случае сбоя просто актуальными окажутся предыдущие настройки.
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 25 2016, 11:22
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(ШСА @ May 25 2016, 17:13) *
Кроме всего прочего, у Вас будет очень сильный износ флеши. Если размер структуры много меньше размера секции флеши и рабочая копия есть в ОЗУ, то выгоднее с точки зрения износа флеши (а, следовательно, достоверности данных в ней) и проще записывать каждую обновлённую структуру сразу же после предыдущей. По окончании записи, в предыдущей затирать первый байт (слово). При считывании определяем актуальную запись по первому слову.
Тогда флеш будет расходоваться максимально рационально, причём стираться будет только после использования всей свободной области, т.е. редко. А в случае сбоя просто актуальными окажутся предыдущие настройки.

Конечно, в этом случае лучше создать кольцевой буфер из N записей. Каждая запись - полная конфигурационная структура. Весь буфер должен занимать как минимум 2 блока стирания.
И стирать байты в предыдущей записи не нужно - кольцо надо поддерживать в таком состоянии, чтобы в нём был разрыв из N стёртых записей. При старте ПО должно находить место этой стёртой дырки,
и последняя записанная запись перед этой дыркой - это последняя актуальная конфигурация. Если же её CRC не совпадает (процесс её записи был прерван), валидной считается предыдущая (если её CRC верный).
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 14:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01338 секунд с 7
ELECTRONIX ©2004-2016