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

 
 
> Сохранение переменных после сброса
kollega
сообщение Nov 29 2006, 10:58
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 9-06-05
Пользователь №: 5 869



Доброе время суток!
Как компилятору CodeVision запретить начальную инициализацию некоторых переменных?
Я так понимаю, что это аналог опции __no_init для IAR'а, но в кодевижине такого не нашёл sad.gif

Сохранение в EEPROM, контроль питания и пр. не предлагать - мне нужно просто сохранённое значение некоторых переменных в ОЗУ именно после сброса.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
kollega
сообщение Nov 30 2006, 09:17
Сообщение #2





Группа: Новичок
Сообщений: 6
Регистрация: 9-06-05
Пользователь №: 5 869



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

Немного не по теме Ваш ответ - с источником сброса и необходимостью инициализации я разбираюсь отдельно. Мне нужно именно ЗАПРЕТИТЬ компилятору обнулять некоторые, указанные мною, переменные.

Цитата
А я непонял а зачем это нада вам?

Ну НАДА мне. НАДА!!! wink.gif


Цитата
Confugure Project->C Compiler-поставьте галочку Us an external startup initialization file.В качестве инициализационного файла возмите его-же старт-ап файл и грохните там обнуление интересующих вас
переменных.

В файле startup.asm обнуляются не конкретные переменные, а область ОЗУ (в цикле) - т.е. конкретные переменные не выловишь. Можно вообще запретить полностью обнуление, а в Си-шном исходнике напрямую присваивать первоначальные значения переменным. А те, которые нужно сохранять после сброса, не инициализировать... Но, согласитесь, это вульгарно - возвращаемся к методам работы на ассме sad.gif
Go to the top of the page
 
+Quote Post
_Bill
сообщение Nov 30 2006, 10:59
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(kollega @ Nov 30 2006, 09:17) *
В файле startup.asm обнуляются не конкретные переменные, а область ОЗУ (в цикле) - т.е. конкретные переменные не выловишь. Можно вообще запретить полностью обнуление, а в Си-шном исходнике напрямую присваивать первоначальные значения переменным. А те, которые нужно сохранять после сброса, не инициализировать... Но, согласитесь, это вульгарно - возвращаемся к методам работы на ассме sad.gif

Отредактируйте startup.asm соответствующим образом. Какие проблемы?
Второй вариант - сохранять нужные переменные в EEPROM.
Go to the top of the page
 
+Quote Post
Семён
сообщение Nov 30 2006, 11:15
Сообщение #4


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

Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922



ИМХО: Если фирма изготовитель не регламентирует сохранность памяти после сброса, то в разработку нельзя вкладывать возможность сохранения в ОЗУ промежуточных данных, требующихся для работы системы, в противном случаи надежность работы Вашей системы напрямую будет зависеть от внешних факторов. Сам сталкивался с такой проблемой. Лучше переработайте алгоритм и храните эти данные в EEPROM. Если есть внешняя память, то лучше в ней.


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 30 2006, 12:09
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Семён @ Nov 30 2006, 11:15) *
ИМХО: Если фирма изготовитель не регламентирует сохранность памяти после сброса, то в разработку нельзя вкладывать возможность сохранения в ОЗУ промежуточных данных, требующихся для работы системы, в противном случаи надежность работы Вашей системы напрямую будет зависеть от внешних факторов. Сам сталкивался с такой проблемой. Лучше переработайте алгоритм и храните эти данные в EEPROM. Если есть внешняя память, то лучше в ней.

А на каком контроллере сталкивались?
Я оказался в безвыходной ситуации из-за ESD и за ночь переписал структуру софта. На испытаниях сбои происходили приблизительно раз в пять секунд, тест длился около получаса - на MSP430 работает. Что гарантируется - даже не искал. Валидность критических значений проверяю, но специальных мер типа контрольной суммы нет. С АВР не пробовал, хотелось бы знать help.gif
Сохранение данный в EEPROM существует, но это не может помочь в случае помехи - она слишком коротка, срабатывает внешний супервизор питания и ффсе.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
muravei
сообщение Nov 30 2006, 15:54
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(Dog Pawlowa @ Nov 30 2006, 12:09) *
она слишком коротка, срабатывает внешний супервизор питания и ффсе.

Так, может, убрать его , собаку, чтоб не срабатывал.smile.gif Настроить Brown-out Reset.
И фильтр по питанию.И ффсе.
А то так можно начать подстраивать программы под сглазsmile.gif
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 30 2006, 16:36
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(muravei @ Nov 30 2006, 15:54) *
А то так можно начать подстраивать программы под сглазsmile.gif

Хорошее сравнение smile.gif
А убрать супервизор в MSP430F1XX (если помните, я о MSP говорил), нельзя, так как доказано неоднократно, что будет слетать флэш. Фильтр по питанию не помогал, система получилась с висящими антеннами, которые ловили включение света, например. Была поначалу версия без супервизора и WDT - залил больницу мыльным раствором w00t.gif
Поэтому меня AVR и интересует в этом плане. Но то, что говорит Семен, не радует unsure.gif
Остается только самому Мегу потерзать.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Семён
сообщение Nov 30 2006, 16:50
Сообщение #8


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

Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922



Если позволяет бюджет ставите Mega8515 c внешним ОЗУ и аварийным питанием, например ионистором.


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- kollega   Сохранение переменных после сброса   Nov 29 2006, 10:58
- - aahardsoft   не знаю как там в С это делаеться но вообще есть ф...   Nov 29 2006, 17:46
- - zorromen   А я непонял а зачем это нада вам?   Nov 29 2006, 19:10
|- - Dog Pawlowa   Цитата(zorromen @ Nov 29 2006, 19:10) А я...   Nov 29 2006, 19:46
- - WHALE   Confugure Project->C Compiler-поставьте галочку...   Nov 29 2006, 22:08
||- - Семён   Цитата(Dog Pawlowa @ Nov 30 2006, 12:09) ...   Nov 30 2006, 12:30
||- - muravei   Цитата(Dog Pawlowa @ Nov 30 2006, 16:36) ...   Nov 30 2006, 17:49
|- - WHALE   В файле startup.asm обнуляются не конкретные пере...   Nov 30 2006, 21:47
- - Abell   Интересный вопрос... В курсе, что после сброса в п...   Nov 30 2006, 10:31
- - proba   я софт RTC в atmega128 использую, иногда происходи...   Nov 30 2006, 18:28
- - singlskv   Цитата(kollega @ Nov 29 2006, 10:58) Добр...   Nov 30 2006, 19:59
- - Nanobyte   Может, всё-таки сохранять данные во внешней FRAM? ...   Nov 30 2006, 20:16


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

 


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


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