west329 0 19 января, 2009 Опубликовано 19 января, 2009 · Жалоба Возник такой вопрос. Еепром память планирую использоать для хранения корректирующих данных. Подскажите как иар проводит инициализацию этой памяти, а точнее не будит ли он затирать её при перезагрузке контроллера вначале пробовал писать так, получается как я понял иар перед выполнением функции майн инициализируется, из флеш памяти дублирует в еепром память unsigned char __eeprom ipaddr_gate_eeprom[4] = {192,168, 0, 2}; потом убрал данные, в итоге инициализация осталась но в еепром памяти логично стали "0" unsigned char __eeprom ipaddr_gate_eeprom[4]; мне нужно что данные после перезагрузки не инициализироваль в еепром а оставались от предыдущего сеанса работы контроллера, для этихже целей нужна еепром подскажите как правильней это сделать, не прибегая к собственным функциям Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 19 января, 2009 Опубликовано 19 января, 2009 · Жалоба __no_init unsigned char __eeprom ipaddr_gate_eeprom[4]; И запрограммировать фуз EESAVE Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergik_vrn 0 19 января, 2009 Опубликовано 19 января, 2009 · Жалоба Возник такой вопрос. Еепром память планирую использоать для хранения корректирующих данных. Подскажите как иар проводит инициализацию этой памяти, а точнее не будит ли он затирать её при перезагрузке контроллера вначале пробовал писать так, получается как я понял иар перед выполнением функции майн инициализируется, из флеш памяти дублирует в еепром память unsigned char __eeprom ipaddr_gate_eeprom[4] = {192,168, 0, 2}; потом убрал данные, в итоге инициализация осталась но в еепром памяти логично стали "0" unsigned char __eeprom ipaddr_gate_eeprom[4]; мне нужно что данные после перезагрузки не инициализироваль в еепром а оставались от предыдущего сеанса работы контроллера, для этихже целей нужна еепром подскажите как правильней это сделать, не прибегая к собственным функциям вопрос поставлен расплывчато. вообще, память EEPROM является энергонезависимой и предназначена как раз для хранения значений при потере питания, перезагрузках и прочих сбоях. Для того, чтобы воспользоваться этой ее функцией, достаточно просто записать значение в ячейку памяти. Другой вопрос, что будет происходить с этой памятью при стирании чипа (перепрошивке FLASH) - этим управляет фьюз EESAVE. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 19 января, 2009 Опубликовано 19 января, 2009 · Жалоба IAR не инициализирует ЕЕПРОМ run time! Перезагрузка никак на инициализируемые переменные не влияет. Просто при сборке будет создан дополнительный выходной файл (hex и т. д.) с данными для прошивки в ЕЕПРОМ при указании соответствующих опций линкеру. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 19 января, 2009 Опубликовано 19 января, 2009 · Жалоба Эээ, я так понял, что автору надо именно место зарезервировать в EEPROM, чтобы в хекс-файле не было данных инициализации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
west329 0 19 января, 2009 Опубликовано 19 января, 2009 (изменено) · Жалоба to Rst7, именно это и требуется Нужен тогда __no_init или без него. В начале при включении питания просто получаю данные из еепром переменных, прогоняю их через сrс и сравниваю с сrс которое хранится в том же еепром, со стороны С компилятора разницы никакой что срам что епром сравниваеш. Хочется простоты и нехочется помнить по камим адресам в еепром всё это хранится пусть этим компилятор занимается. В противном случае если ошибка данных сигнализация. Изменено 19 января, 2009 пользователем west329_ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergik_vrn 0 20 января, 2009 Опубликовано 20 января, 2009 · Жалоба to Rst7, именно это и требуется Нужен тогда __no_init или без него. В начале при включении питания просто получаю данные из еепром переменных, прогоняю их через сrс и сравниваю с сrс которое хранится в том же еепром, со стороны С компилятора разницы никакой что срам что епром сравниваеш. Хочется простоты и нехочется помнить по камим адресам в еепром всё это хранится пусть этим компилятор занимается. В противном случае если ошибка данных сигнализация. ну тогда пишите __no_init __eeprom и все. суть вопроса до сих пор непонятна Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 20 января, 2009 Опубликовано 20 января, 2009 · Жалоба Эээ, я так понял, что автору надо именно место зарезервировать в EEPROM, чтобы в хекс-файле не было данных инициализации. Тогда о каких данных инициализации идёт речь? Инициализаторов во flash памяти в любом случае не будет. Инициализаторы (и соответствующие процедуры копирования\обнуления) имеют место только при инициализации ОЗУ. Инициализация же ЕЕПРОМ осуществляется только на этапе прошивки отдельным файлом. Если же речь идёт о резервировании места под переменные в ЕЕПРОМ, то место будет зарезервировано независимо от того, инициализируются переменные или нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 20 января, 2009 Опубликовано 20 января, 2009 · Жалоба Ну я так понимаю, что некоторые данные в епром при прошивке новой ревизии надо оставить старыми, некоторые - обновить. Хотя, конечно, это мы тут телепатию проявляем. Постановка вопроса не очень корректна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
west329 0 20 января, 2009 Опубликовано 20 января, 2009 · Жалоба Благодарю за помощь, теперь всё понятно. Подскажите а как правильней использовать еепром память, я вижу 2 варианта первый во время работы непосредственно брать данные с еепром и второй в начале программы поместить данные с еепром в озу, а дальше работать с озу ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergik_vrn 0 20 января, 2009 Опубликовано 20 января, 2009 · Жалоба Благодарю за помощь, теперь всё понятно. Подскажите а как правильней использовать еепром память, я вижу 2 варианта первый во время работы непосредственно брать данные с еепром и второй в начале программы поместить данные с еепром в озу, а дальше работать с озу ? это зависит от того, что Вам надо делать с этими данными. EEPROM энергонезависим, но работает заметно медленнее и имеет ограниченное число циклов стирания-записи Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirYU 0 20 января, 2009 Опубликовано 20 января, 2009 · Жалоба это зависит от того, что Вам надо делать с этими данными. EEPROM энергонезависим, но работает заметно медленнее и имеет ограниченное число циклов стирания-записи В дополнение. Рекомендуется, для сохранения ресурса, перед операцией записи выполнять сравнение уже хранящегося значения с записываемым и производить запись только если они отличаются. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться