Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR AVR eeprom
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
AlexMad
Не пинайте, если уже было... Очень давно ИАР АВР не мог генерить код для еепрома, на работе из-за этого предыдущий разработчик написал проект на КодеВижене.Там много переменных, которые лежат в еепроме, причем их нужно инициализировать.Сейчас возникла необходимость переписывать проект. Есть желание воспользоваться ИАРом, так как он более привычен.
Как можно простым путем в ИАРе инициализировать переменные в еепроме?
prottoss
char __eeprom array[10];

unsigned long __eeprom a, b, c;

int __eeprom *ptr ;
arttab
так не пробовали?
__eeprom unsigned char x = 0x12;
IgorKossak
Ко всему выше сказанному добавлю, что инициализация переменных, лежащих в еепром, осуществляется не самой программой пользователя, а компилятором/линкером на этапе сборки программы.
Чтобы проинициализировать еепром МК, нужно создать файл прошивки (см. опции линкера) области еепром.
Как сделать раздельные файлы прошивок для флеш и еепром на форуме неоднократно писалось (hex файлы).
prottoss
Цитата(IgorKossak @ Jul 22 2007, 20:24) *
Ко всему выше сказанному добавлю, что инициализация переменных, лежащих в еепром, осуществляется не самой программой пользователя, а компилятором/линкером на этапе сборки программы.
Чтобы проинициализировать еепром МК, нужно создать файл прошивки (см. опции линкера) области еепром.
Как сделать раздельные файлы прошивок для флеш и еепром на форуме неоднократно писалось (hex файлы).
И еще

Переменные с атрибутом __eeprom не могут быть локальными, т.е. они не могут быть объявленными внутри функции (кроме префикса static). Пример:
Код
int __eeprom aaa; /* глобальная переменная, инициализация на старте программы */


void MYFunc(...)
{    
     char __eeprom xxx; /* ошибка - локальная переменная */
     ....
     static char __eeprom ууу = 0; /* статическая переменная, инициализация на старте программы */
     ....
     int zzz = aaa + yyy; /* код для обращения к EEPROM генерится автоматически */
     ...
     yyy++; /* см. коммент выше, но надо подумать и об оптимизации:))) т.к. здеся читает из еепром в статическую память, инкрементирует и пишет опять в еепром, возможно последние две операции лучше делать после того, как поработали с копией в статической памяти данных */
}
AlexMad
Цитата(IgorKossak @ Jul 22 2007, 16:24) *
Ко всему выше сказанному добавлю, что инициализация переменных, лежащих в еепром, осуществляется не самой программой пользователя, а компилятором/линкером на этапе сборки программы.
Чтобы проинициализировать еепром МК, нужно создать файл прошивки (см. опции линкера) области еепром.
Как сделать раздельные файлы прошивок для флеш и еепром на форуме неоднократно писалось (hex файлы).

Вот именно этот ответ я и хотел услышать. Про раздельные файлы. Главное, что это возможно, а дальше - разберусь, тем более, что Вы говорите, что это обсуждалось. Спасибо
arttab
так бы и спросили...
а нужно ли зашивать начальные значения в еепром?
файл то сгенерить и прошить не проблема, а потом другие проблемы появляются.
IgorKossak
Цитата(arttab @ Jul 22 2007, 18:39) *
так бы и спросили...
а нужно ли зашивать начальные значения в еепром?
файл то сгенерить и прошить не проблема, а потом другие проблемы появляются.

Существует довольно мало причин иметь инициализированные переменные в еепром (но существуют).
Я, например, обычно обьявляю переменные в еепром с аттрибутом __no_init.
А насчёт проблем - всё зависит от конкретной задачи и умения программиста (в большей мере).
arttab
Цитата
Существует довольно мало причин иметь инициализированные переменные в еепром (но существуют).

Не спорю. Жизнь вещь многообразная.
Цитата
Я, например, обычно обьявляю переменные в еепром с аттрибутом __no_init.

анкологично.
Цитата
А насчёт проблем - всё зависит от конкретной задачи и умения программиста (в большей мере).

надежность еепром у АВР тема наболевшая. Да, считаю срс, но отвественные данные лучше во флешь держать. У нас практикуется следующий прием: программа калибровки передает на комп нужные параметры, на компе модифицируется базовая прошивка, после чего модиф. прошивка заливается в мк. А в еепроме не критичные данные. Жизнь заставила.
Надеюсь что за офтоп не сочтут. всетаки около вопроса. особено о последствиях применения ответов.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.