|
Сохранение переменных после сброса |
|
|
|
Nov 29 2006, 10:58
|
Группа: Новичок
Сообщений: 6
Регистрация: 9-06-05
Пользователь №: 5 869

|
Доброе время суток! Как компилятору CodeVision запретить начальную инициализацию некоторых переменных? Я так понимаю, что это аналог опции __no_init для IAR'а, но в кодевижине такого не нашёл Сохранение в EEPROM, контроль питания и пр. не предлагать - мне нужно просто сохранённое значение некоторых переменных в ОЗУ именно после сброса.
|
|
|
|
|
 |
Ответов
|
Nov 30 2006, 09:17
|
Группа: Новичок
Сообщений: 6
Регистрация: 9-06-05
Пользователь №: 5 869

|
Цитата не знаю как там в С это делаеться но вообще есть флаги которые указывают на то что был именно сброс и какой сброс после чего и т.д.,думаю нужно посмотреть на них и принять решение инициализировать переменные или нет. Немного не по теме Ваш ответ - с источником сброса и необходимостью инициализации я разбираюсь отдельно. Мне нужно именно ЗАПРЕТИТЬ компилятору обнулять некоторые, указанные мною, переменные. Цитата А я непонял а зачем это нада вам? Ну НАДА мне. НАДА!!!  Цитата Confugure Project->C Compiler-поставьте галочку Us an external startup initialization file.В качестве инициализационного файла возмите его-же старт-ап файл и грохните там обнуление интересующих вас переменных. В файле startup.asm обнуляются не конкретные переменные, а область ОЗУ (в цикле) - т.е. конкретные переменные не выловишь. Можно вообще запретить полностью обнуление, а в Си-шном исходнике напрямую присваивать первоначальные значения переменным. А те, которые нужно сохранять после сброса, не инициализировать... Но, согласитесь, это вульгарно - возвращаемся к методам работы на ассме
|
|
|
|
|
Nov 30 2006, 10:59
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(kollega @ Nov 30 2006, 09:17)  В файле startup.asm обнуляются не конкретные переменные, а область ОЗУ (в цикле) - т.е. конкретные переменные не выловишь. Можно вообще запретить полностью обнуление, а в Си-шном исходнике напрямую присваивать первоначальные значения переменным. А те, которые нужно сохранять после сброса, не инициализировать... Но, согласитесь, это вульгарно - возвращаемся к методам работы на ассме  Отредактируйте startup.asm соответствующим образом. Какие проблемы? Второй вариант - сохранять нужные переменные в EEPROM.
|
|
|
|
|
Nov 30 2006, 11:15
|
Частый гость
 
Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922

|
ИМХО: Если фирма изготовитель не регламентирует сохранность памяти после сброса, то в разработку нельзя вкладывать возможность сохранения в ОЗУ промежуточных данных, требующихся для работы системы, в противном случаи надежность работы Вашей системы напрямую будет зависеть от внешних факторов. Сам сталкивался с такой проблемой. Лучше переработайте алгоритм и храните эти данные в EEPROM. Если есть внешняя память, то лучше в ней.
--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
|
|
|
|
|
Nov 30 2006, 12:09
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Семён @ Nov 30 2006, 11:15)  ИМХО: Если фирма изготовитель не регламентирует сохранность памяти после сброса, то в разработку нельзя вкладывать возможность сохранения в ОЗУ промежуточных данных, требующихся для работы системы, в противном случаи надежность работы Вашей системы напрямую будет зависеть от внешних факторов. Сам сталкивался с такой проблемой. Лучше переработайте алгоритм и храните эти данные в EEPROM. Если есть внешняя память, то лучше в ней. А на каком контроллере сталкивались? Я оказался в безвыходной ситуации из-за ESD и за ночь переписал структуру софта. На испытаниях сбои происходили приблизительно раз в пять секунд, тест длился около получаса - на MSP430 работает. Что гарантируется - даже не искал. Валидность критических значений проверяю, но специальных мер типа контрольной суммы нет. С АВР не пробовал, хотелось бы знать Сохранение данный в EEPROM существует, но это не может помочь в случае помехи - она слишком коротка, срабатывает внешний супервизор питания и ффсе.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Nov 30 2006, 16:36
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(muravei @ Nov 30 2006, 15:54)  А то так можно начать подстраивать программы под сглаз  Хорошее сравнение А убрать супервизор в MSP430F1XX (если помните, я о MSP говорил), нельзя, так как доказано неоднократно, что будет слетать флэш. Фильтр по питанию не помогал, система получилась с висящими антеннами, которые ловили включение света, например. Была поначалу версия без супервизора и WDT - залил больницу мыльным раствором Поэтому меня AVR и интересует в этом плане. Но то, что говорит Семен, не радует Остается только самому Мегу потерзать.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Nov 30 2006, 16:50
|
Частый гость
 
Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922

|
Если позволяет бюджет ставите Mega8515 c внешним ОЗУ и аварийным питанием, например ионистором.
--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
|
|
|
|
Сообщений в этой теме
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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|