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

 
 
 
Reply to this topicStart new topic
Alex_TAV
сообщение Nov 5 2008, 05:29
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 145
Регистрация: 12-01-07
Из: Россия, г. Омск
Пользователь №: 24 357



Так как хранить данные в EEPROM у AVR становится все ненадежней, есть идея располагать константы во flash - благо необходимость в их изменении будет ну максимум раз в год, а то и реже. Так вот с чтением из flash проблем нет, а есть ли функции в CodeVision для записи во flash? А то стандартно по страницам не очень удобно.
Go to the top of the page
 
+Quote Post
Vladimir_J
сообщение Nov 5 2008, 05:35
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 9-01-07
Из: Украина
Пользователь №: 24 228



Приветствую smile.gif
К сожалению, нет.Только если перекрывать своими макросами.

С Уважением, Владимир
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Nov 5 2008, 05:47
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(Alex_TAV @ Nov 5 2008, 09:29) *
Так как хранить данные в EEPROM у AVR становится все ненадежней

А откуда такая информация?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Nov 5 2008, 07:19
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Непомнящий Евгений @ Nov 5 2008, 08:47) *
А откуда такая информация?


Я тоже хочу спросить: откуда ?
Сегодня ночью ездил на объект - слетел 16-битный параметр в еепроме в моем приборе. СтоИт мега 48.
БОД итд. В общем - полгода работал, а тут - нате... Других подобных историй не было.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Nov 5 2008, 08:49
Сообщение #5


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(_Pasha @ Nov 5 2008, 15:19) *
Я тоже хочу спросить: откуда ?
Сегодня ночью ездил на объект - слетел 16-битный параметр в еепроме в моем приборе. СтоИт мега 48.
БОД итд. В общем - полгода работал, а тут - нате... Других подобных историй не было.

Так может быть причина "слета" не в железе, а в программе? Я тоже уверен, что с EEPROM у AVR дела давно уже наладились. Хотя никто для подстраховки не помешает применять внешнюю с I2C, но это уже не то. Да и та сбойнуть может, кого винить тогда? smile.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Nov 5 2008, 09:40
Сообщение #6


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(_Pasha @ Nov 5 2008, 10:19) *
Сегодня ночью ездил на объект - слетел 16-битный параметр в еепроме в моем приборе. СтоИт мега 48.
БОД итд. В общем - полгода работал, а тут - нате... Других подобных историй не было.
В особо критичных случаях стоит применять резервирование данных. Сохраняйте переменную в 3-5 копиях и применяйте медианную фильтрацию при чтении данных. Я так делаю в паре приборов - работает железно.
Ночные выезды до добра не доведут:
бессоница, утка под кроватью, некрасивая медсестраsmile.gif


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 5 2008, 12:57
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Alex_TAV @ Nov 5 2008, 08:29) *
Так как хранить данные в EEPROM у AVR становится все ненадежней, есть идея располагать константы во flash
Хотите, чтобы появилась возможность порчи не только констант, но и программы? biggrin.gif


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
gormih
сообщение Nov 5 2008, 13:18
Сообщение #8


nofb
***

Группа: Свой
Сообщений: 430
Регистрация: 18-05-06
Из: Москва, Зеленоград
Пользователь №: 17 218



Цитата(_Pasha @ Nov 5 2008, 10:19) *
Сегодня ночью ездил на объект - слетел 16-битный параметр в еепроме в моем приборе. СтоИт мега 48.
БОД итд. В общем - полгода работал, а тут - нате... Других подобных историй не было.

Товарищ по несчастью smile.gif
К резервному дублированию данных и к хранению во флэш приходишь уже после таких инцидентов sad.gif

Цитата(haker_fox @ Nov 5 2008, 11:49) *
Так может быть причина "слета" не в железе, а в программе? Я тоже уверен, что с EEPROM у AVR дела давно уже наладились. Хотя никто для подстраховки не помешает применять внешнюю с I2C, но это уже не то. Да и та сбойнуть может, кого винить тогда? smile.gif

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


--------------------
Это не то что вы подумали ...

Go to the top of the page
 
+Quote Post
Alex_TAV
сообщение Nov 6 2008, 03:48
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 145
Регистрация: 12-01-07
Из: Россия, г. Омск
Пользователь №: 24 357



Цитата(Сергей Борщ @ Nov 5 2008, 18:57) *
Хотите, чтобы появилась возможность порчи не только констант, но и программы? biggrin.gif

есть ощущение что слет eeprom происходит не по вине программы, а из-за железа. По крайней мере для AVR уже давно существует ряд советов по работе с eeprom, таких как - не хранить ничего важного в нулевой ячейке, после чтения eeprom пермещать указатель на "0" и т.д..

Ситуация такая что устройства работали год и все было нормально, а потом резко у 3 из 100 запортился eeprom, как-то вряд ли программа виновата.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Nov 6 2008, 06:39
Сообщение #10


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(gormih @ Nov 5 2008, 21:18) *
Не бывает такого, что программа работает полгода без сбоев, потом резко у нее портится настроение и дает сбой. Если конечно сам такого исхода не заложишь... Это чисто железная проблема. И случаи не еденичные.

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


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 6 2008, 07:17
Сообщение #11


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(gormih @ Nov 5 2008, 15:18) *
Не бывает такого, что программа работает полгода без сбоев, потом резко у нее портится настроение и дает сбой. Если конечно сам такого исхода не заложишь... Это чисто железная проблема. И случаи не еденичные.

Бывает еще как.
Ошибка в логике обработки переходного процесса... И допустить такую ошибку ой как легко, т.к. условия ее возникновения порой нельзя даже представить.
Суть даже не в eeprom'е, у меня портился NVRAM контекст (2 копии защищенных CRC16), причем как выяснилось портил я его сам при определенных условиях. А условия вот такие:

1. МК всегда безусловно пишет две копии контекста, в одном и том же порядке (вначале первую копию, потом вторую), по одним и тем же адресам NVRAM'а.
2. Питание проседает до 4.1, затем нарастает до 4.3 и так несколько раз подряд, а потом падает ниже 4.0. (BOD на 4.0).
3. Когда питание падает ниже 4.125V NVRAM уходит в себя (чтобы спасти RTC), тупо отрубается от I2C шины и ему пофиг идет транзакция или не идет в данный момент.

К чему это приводило:
Пусть МК успешно записал первую копию контекста, после чего в процессе записи второй копии напряжение проседает до 4.1V - МК естессно отваливает с ошибкой I2C timeout, пытается достучаться еще несколько раз, а девайса то просто нет на шине. Так портится вторая копия контекста в NVRAM'е.
Через некоторое время (через 1 сек) МК пробует сохранить обновленный контекст - питание к тому времени восстанавливается и NVRAM разлочен. МК начинает писать первую копию, в процессе записи питание падает ниже 4.0V - срабатывает BOD - и писец - обе копии контекста потеряны. Кто виноватъ? HW?
И сколько бы копий ни было вероятность потерять все копии остается, т.е. это БАГ ЛОГИКИ.

Спрашивается кто мешал прочитать контексты перед записью, кто мешал проверить какой из них жив, а какой - нет, и обновить только битую копию. Кто мешал промониторить питание, и даже не соваться к NVRAM'у когда ясно что он вот-вот отключится?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Nov 6 2008, 15:17
Сообщение #12


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(haker_fox @ Nov 5 2008, 11:49) *
Я тоже уверен, что с EEPROM у AVR дела давно уже наладились.

Я вот уверен, что дела могут так же и испортиться...

Цитата(demiurg_spb @ Nov 5 2008, 12:40) *
В особо критичных случаях стоит применять резервирование данных.

В таких случаях, все же, лучше на АВР подзабить болта smile.gif

Цитата
... некрасивая медсестраsmile.gif

bb-offtopic.gif Бороццо нада за себя. Скажем, если терять все равно неча - затерроризировать всех ответственных - от самодельных мин и рогаток до прелюдного самосожжения, но с некрасивой наедине не останусь smile.gif

Цитата(defunct @ Nov 6 2008, 10:17) *
Спрашивается кто мешал прочитать контексты перед записью, кто мешал проверить какой из них жив, а какой - нет, и обновить только битую копию. Кто мешал промониторить питание, и даже не соваться к NVRAM'у когда ясно что он вот-вот отключится?

Кто мешал... Их двое:
1. ROM
2. ЛЕНЬ
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 24th June 2025 - 20:41
Рейтинг@Mail.ru


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