Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Файл для eeprom
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
SZ0
Генерирует два одинаковых файла, и оба являются файлами прошивки. Файла для eeprom не
получается. Что делаю не так? Вот часть файлов.

Основная прога:

__eeprom char d0=0x20;
__eeprom char d1=0x21;

int main( void )
{
..............
}

xcl:
-Z(XDATA)EEPROM_N,EEPROM_I,EEPROM_AN=0-1FF

-Z(CODE)INTVEC=0-32
-Z(CODE)RCODE,CDATA0,CDATA1,CCSTR,SWITCH,FLASH,CODE=34-3FFF
-Z(DATA)IDATA0,UDATA0,RSTACK+16,IDATA1,UDATA1,ECSTR,CSTACK+60=100-4FF


-Ointel-extended,(CODE)=.hex
-Ointel-extended,(XDATA)=.eep
haker_fox
Ну для начала бы неплохо было сообщить какой компилятор Вы используете!
Вроде IAR... воспользуйтесь поиском по форуму, где-то было хорошо описано. как решить данную проблему.
SZ0
IAR 4.11A

Всё перерыл. Не помогло. Везде говорится что применяют

-Ointel-extended,(CODE)=.hex
-Ointel-extended,(XDATA)=.eep

и всё замечательно! Может я что не так инициализирую?
prottoss
Цитата(SZ0 @ Feb 19 2006, 21:21) *
IAR 4.11A

Всё перерыл. Не помогло. Везде говорится что применяют

-Ointel-extended,(CODE)=.hex
-Ointel-extended,(XDATA)=.eep

и всё замечательно! Может я что не так инициализирую?


На сколько я знаю, intel-extended формат содержит несколько сегментов (код, данные и т.п.). По этому Вы получаете файл, в котором есть и сегмент кода и сегмент Хданных (ЕЕП) в одном флаконе. Попробуйте вместо intel-extended записать Ointel-standard, например вот так:

-Ointel-standard,(CODE)=code.hex
-Ointel-standard,(XDATA)=data.eep

И будет вам счастье
SZ0
Счастья не наступилоsad.gif
Поделитесь пожалуйста куском файла проекта с настроечным .xcl , в котором файл для eeprom генерируется.
prottoss
Цитата(SZ0 @ Feb 19 2006, 23:01) *
Счастья не наступило sad.gif
Поделитесь пожалуйста куском файла проекта с настроечным .xcl , в котором файл для eeprom генерируется.
SZ0
Всё покатило. Надо было настройки в .xcl немного изменить. И начать работать с данными в eeprom, а то IAR их считал не нужными.
Георгий
Цитата
И начать работать с данными в eeprom, а то IAR их считал не нужными.

Я думаю это и было самым главным! Если что то не используется в программе, ИАР это вообще выбрасывает обычно.
prottoss
Цитата(Георгий @ Feb 20 2006, 12:23) *
Цитата
И начать работать с данными в eeprom, а то IAR их считал не нужными.

Я думаю это и было самым главным! Если что то не используется в программе, ИАР это вообще выбрасывает обычно.


Не правда Ваша! Надо просто правильно указывать тип данных. Вот в проекте, от которого был приведенный выше xcl ЕЕПРОМ используется только косвенно, без применения стандартных ИАРовских функции обращения к ячейкам ЕЕПРОМа, однако файл ееп создавался. Просто массив объявлялся вот так:

#pragma location = 0x00
__root char __eeprom volatile g_Symbol_Gen[] =
{ _0_, _1_, _2_, _3_, _4_, _5_, _6_, _7_, _8_, _9_
};

кстати, работает на hight optimization
Георгий
Цитата
Код
#pragma location = 0x00

Интересно, почему без этого линкер размещает не с 0, а с 1 адреса в ЕЕПРОМ.
prottoss
Цитата(Георгий @ Feb 20 2006, 18:54) *
Цитата
Код
#pragma location = 0x00

Интересно, почему без этого линкер размещает не с 0, а с 1 адреса в ЕЕПРОМ.


Есть проблемы с нулевым адресом EEPROM у старых МК AVR, говорят. Честно говоря, я ни разу с ними не сталкивался, хотя пользовал EEPROM и в 90S серии. А вышеприведенная строка из проекта с ATtiny2313V-10PI - таблица знакогенератора для семисегментного индикатора. Удобно было разместить с нулевого адреса потому-что адрес кода символа числа непосредственно равен самому числу. :-)

А линкер, наверное, написан с учетом глюков EEPROM, но без учета типа МК в котором этот глюк проявляется :-)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.