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

 
 
 
Reply to this topicStart new topic
west329_
сообщение Jan 19 2009, 11:56
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Возник такой вопрос.

Еепром память планирую использоать для хранения корректирующих данных.

Подскажите как иар проводит инициализацию этой памяти, а точнее не будит ли он затирать её при перезагрузке контроллера

вначале пробовал писать так, получается как я понял иар перед выполнением функции майн инициализируется, из флеш памяти дублирует в еепром память
Код
unsigned char __eeprom ipaddr_gate_eeprom[4]  = {192,168,  0,  2};



потом убрал данные, в итоге инициализация осталась но в еепром памяти логично стали "0"
Код
unsigned char __eeprom ipaddr_gate_eeprom[4];


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

подскажите как правильней это сделать, не прибегая к собственным функциям
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jan 19 2009, 12:01
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Код
__no_init unsigned char __eeprom ipaddr_gate_eeprom[4];


И запрограммировать фуз EESAVE


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
sergik_vrn
сообщение Jan 19 2009, 12:39
Сообщение #3


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

Группа: Свой
Сообщений: 152
Регистрация: 11-10-05
Из: Воронеж
Пользователь №: 9 491



Цитата(west329_ @ Jan 19 2009, 14:56) *
Возник такой вопрос.

Еепром память планирую использоать для хранения корректирующих данных.

Подскажите как иар проводит инициализацию этой памяти, а точнее не будит ли он затирать её при перезагрузке контроллера

вначале пробовал писать так, получается как я понял иар перед выполнением функции майн инициализируется, из флеш памяти дублирует в еепром память
Код
unsigned char __eeprom ipaddr_gate_eeprom[4]  = {192,168,  0,  2};



потом убрал данные, в итоге инициализация осталась но в еепром памяти логично стали "0"
Код
unsigned char __eeprom ipaddr_gate_eeprom[4];


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

подскажите как правильней это сделать, не прибегая к собственным функциям

вопрос поставлен расплывчато. вообще, память EEPROM является энергонезависимой и предназначена как раз для хранения значений при потере питания, перезагрузках и прочих сбоях. Для того, чтобы воспользоваться этой ее функцией, достаточно просто записать значение в ячейку памяти. Другой вопрос, что будет происходить с этой памятью при стирании чипа (перепрошивке FLASH) - этим управляет фьюз EESAVE.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jan 19 2009, 13:09
Сообщение #4


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



IAR не инициализирует ЕЕПРОМ run time! Перезагрузка никак на инициализируемые переменные не влияет. Просто при сборке будет создан дополнительный выходной файл (hex и т. д.) с данными для прошивки в ЕЕПРОМ при указании соответствующих опций линкеру.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jan 19 2009, 13:19
Сообщение #5


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Эээ, я так понял, что автору надо именно место зарезервировать в EEPROM, чтобы в хекс-файле не было данных инициализации.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
west329_
сообщение Jan 19 2009, 13:25
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



to Rst7, именно это и требуется

Нужен тогда __no_init или без него.

В начале при включении питания просто получаю данные из еепром переменных, прогоняю их через сrс и сравниваю с сrс которое хранится в том же еепром, со стороны С компилятора разницы никакой что срам что епром сравниваеш. Хочется простоты и нехочется помнить по камим адресам в еепром всё это хранится пусть этим компилятор занимается.

В противном случае если ошибка данных сигнализация.

Сообщение отредактировал west329_ - Jan 19 2009, 13:39
Go to the top of the page
 
+Quote Post
sergik_vrn
сообщение Jan 20 2009, 07:39
Сообщение #7


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

Группа: Свой
Сообщений: 152
Регистрация: 11-10-05
Из: Воронеж
Пользователь №: 9 491



Цитата(west329_ @ Jan 19 2009, 16:25) *
to Rst7, именно это и требуется

Нужен тогда __no_init или без него.

В начале при включении питания просто получаю данные из еепром переменных, прогоняю их через сrс и сравниваю с сrс которое хранится в том же еепром, со стороны С компилятора разницы никакой что срам что епром сравниваеш. Хочется простоты и нехочется помнить по камим адресам в еепром всё это хранится пусть этим компилятор занимается.

В противном случае если ошибка данных сигнализация.

ну тогда пишите __no_init __eeprom и все. суть вопроса до сих пор непонятна
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jan 20 2009, 07:44
Сообщение #8


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(Rst7 @ Jan 19 2009, 15:19) *
Эээ, я так понял, что автору надо именно место зарезервировать в EEPROM, чтобы в хекс-файле не было данных инициализации.

Тогда о каких данных инициализации идёт речь? Инициализаторов во flash памяти в любом случае не будет. Инициализаторы (и соответствующие процедуры копирования\обнуления) имеют место только при инициализации ОЗУ. Инициализация же ЕЕПРОМ осуществляется только на этапе прошивки отдельным файлом. Если же речь идёт о резервировании места под переменные в ЕЕПРОМ, то место будет зарезервировано независимо от того, инициализируются переменные или нет.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jan 20 2009, 07:52
Сообщение #9


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Ну я так понимаю, что некоторые данные в епром при прошивке новой ревизии надо оставить старыми, некоторые - обновить. Хотя, конечно, это мы тут телепатию проявляем. Постановка вопроса не очень корректна.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
west329_
сообщение Jan 20 2009, 11:08
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Благодарю за помощь, теперь всё понятно.

Подскажите а как правильней использовать еепром память, я вижу 2 варианта первый во время работы непосредственно брать данные с еепром и второй в начале программы поместить данные с еепром в озу, а дальше работать с озу ?
Go to the top of the page
 
+Quote Post
sergik_vrn
сообщение Jan 20 2009, 11:12
Сообщение #11


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

Группа: Свой
Сообщений: 152
Регистрация: 11-10-05
Из: Воронеж
Пользователь №: 9 491



Цитата(west329_ @ Jan 20 2009, 14:08) *
Благодарю за помощь, теперь всё понятно.

Подскажите а как правильней использовать еепром память, я вижу 2 варианта первый во время работы непосредственно брать данные с еепром и второй в начале программы поместить данные с еепром в озу, а дальше работать с озу ?

это зависит от того, что Вам надо делать с этими данными. EEPROM энергонезависим, но работает заметно медленнее и имеет ограниченное число циклов стирания-записи
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Jan 20 2009, 12:26
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



Цитата(sergik_vrn @ Jan 20 2009, 14:12) *
это зависит от того, что Вам надо делать с этими данными. EEPROM энергонезависим, но работает заметно медленнее и имеет ограниченное число циклов стирания-записи

В дополнение. Рекомендуется, для сохранения ресурса, перед операцией записи выполнять сравнение уже хранящегося значения с записываемым и производить запись только если они отличаются.
Go to the top of the page
 
+Quote Post

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

 


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


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