|
|
  |
IAR AVR eeprom |
|
|
|
Jul 22 2007, 12:53
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(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++; /* см. коммент выше, но надо подумать и об оптимизации:))) т.к. здеся читает из еепром в статическую память, инкрементирует и пишет опять в еепром, возможно последние две операции лучше делать после того, как поработали с копией в статической памяти данных */ }
--------------------
|
|
|
|
|
Jul 22 2007, 14:41
|
Местный
  
Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743

|
Цитата(IgorKossak @ Jul 22 2007, 16:24)  Ко всему выше сказанному добавлю, что инициализация переменных, лежащих в еепром, осуществляется не самой программой пользователя, а компилятором/линкером на этапе сборки программы. Чтобы проинициализировать еепром МК, нужно создать файл прошивки (см. опции линкера) области еепром. Как сделать раздельные файлы прошивок для флеш и еепром на форуме неоднократно писалось (hex файлы). Вот именно этот ответ я и хотел услышать. Про раздельные файлы. Главное, что это возможно, а дальше - разберусь, тем более, что Вы говорите, что это обсуждалось. Спасибо
|
|
|
|
|
Jul 23 2007, 02:34
|

Профессионал
    
Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371

|
Цитата Существует довольно мало причин иметь инициализированные переменные в еепром (но существуют). Не спорю. Жизнь вещь многообразная. Цитата Я, например, обычно обьявляю переменные в еепром с аттрибутом __no_init. анкологично. Цитата А насчёт проблем - всё зависит от конкретной задачи и умения программиста (в большей мере). надежность еепром у АВР тема наболевшая. Да, считаю срс, но отвественные данные лучше во флешь держать. У нас практикуется следующий прием: программа калибровки передает на комп нужные параметры, на компе модифицируется базовая прошивка, после чего модиф. прошивка заливается в мк. А в еепроме не критичные данные. Жизнь заставила. Надеюсь что за офтоп не сочтут. всетаки около вопроса. особено о последствиях применения ответов.
--------------------
OrCAD, Altium,IAR, AVR....
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|