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

 
 
 
Reply to this topicStart new topic
> IAR AVR eeprom
AlexMad
сообщение Jul 22 2007, 11:23
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743



Не пинайте, если уже было... Очень давно ИАР АВР не мог генерить код для еепрома, на работе из-за этого предыдущий разработчик написал проект на КодеВижене.Там много переменных, которые лежат в еепроме, причем их нужно инициализировать.Сейчас возникла необходимость переписывать проект. Есть желание воспользоваться ИАРом, так как он более привычен.
Как можно простым путем в ИАРе инициализировать переменные в еепроме?
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jul 22 2007, 11:45
Сообщение #2


Гуру
******

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



char __eeprom array[10];

unsigned long __eeprom a, b, c;

int __eeprom *ptr ;


--------------------
Go to the top of the page
 
+Quote Post
arttab
сообщение Jul 22 2007, 11:51
Сообщение #3


Профессионал
*****

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



так не пробовали?
__eeprom unsigned char x = 0x12;


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 22 2007, 12:24
Сообщение #4


Шаман
******

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



Ко всему выше сказанному добавлю, что инициализация переменных, лежащих в еепром, осуществляется не самой программой пользователя, а компилятором/линкером на этапе сборки программы.
Чтобы проинициализировать еепром МК, нужно создать файл прошивки (см. опции линкера) области еепром.
Как сделать раздельные файлы прошивок для флеш и еепром на форуме неоднократно писалось (hex файлы).
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jul 22 2007, 12:53
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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++; /* см. коммент выше, но надо подумать и об оптимизации:))) т.к. здеся читает из еепром в статическую память, инкрементирует и пишет опять в еепром, возможно последние две операции лучше делать после того, как поработали с копией в статической памяти данных */
}


--------------------
Go to the top of the page
 
+Quote Post
AlexMad
сообщение Jul 22 2007, 14:41
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743



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

Вот именно этот ответ я и хотел услышать. Про раздельные файлы. Главное, что это возможно, а дальше - разберусь, тем более, что Вы говорите, что это обсуждалось. Спасибо
Go to the top of the page
 
+Quote Post
arttab
сообщение Jul 22 2007, 15:39
Сообщение #7


Профессионал
*****

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



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


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 22 2007, 16:19
Сообщение #8


Шаман
******

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



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

Существует довольно мало причин иметь инициализированные переменные в еепром (но существуют).
Я, например, обычно обьявляю переменные в еепром с аттрибутом __no_init.
А насчёт проблем - всё зависит от конкретной задачи и умения программиста (в большей мере).
Go to the top of the page
 
+Quote Post
arttab
сообщение Jul 23 2007, 02:34
Сообщение #9


Профессионал
*****

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



Цитата
Существует довольно мало причин иметь инициализированные переменные в еепром (но существуют).

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

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

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


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post

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

 


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


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