|
|
  |
Файл для eeprom, не генерируется |
|
|
|
Feb 19 2006, 12:09
|
Местный
  
Группа: Участник
Сообщений: 326
Регистрация: 14-02-06
Пользователь №: 14 331

|
Генерирует два одинаковых файла, и оба являются файлами прошивки. Файла для 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
|
|
|
|
|
Feb 19 2006, 15:31
|

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

|
Цитата(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 И будет вам счастье
--------------------
|
|
|
|
|
Feb 20 2006, 05:23
|
Местный
  
Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957

|
Цитата И начать работать с данными в eeprom, а то IAR их считал не нужными. Я думаю это и было самым главным! Если что то не используется в программе, ИАР это вообще выбрасывает обычно.
--------------------
Обычно последним смеется тот, кто хуже соображает!
|
|
|
|
|
Feb 20 2006, 11:19
|

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

|
Цитата(Георгий @ 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
Сообщение отредактировал prottoss - Feb 20 2006, 14:44
--------------------
|
|
|
|
|
Feb 20 2006, 11:54
|
Местный
  
Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957

|
Цитата Код #pragma location = 0x00 Интересно, почему без этого линкер размещает не с 0, а с 1 адреса в ЕЕПРОМ.
Сообщение отредактировал Георгий - Feb 20 2006, 11:54
--------------------
Обычно последним смеется тот, кто хуже соображает!
|
|
|
|
|
Feb 20 2006, 14:40
|

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

|
Цитата(Георгий @ Feb 20 2006, 18:54)  Цитата Код #pragma location = 0x00 Интересно, почему без этого линкер размещает не с 0, а с 1 адреса в ЕЕПРОМ. Есть проблемы с нулевым адресом EEPROM у старых МК AVR, говорят. Честно говоря, я ни разу с ними не сталкивался, хотя пользовал EEPROM и в 90S серии. А вышеприведенная строка из проекта с ATtiny2313V-10PI - таблица знакогенератора для семисегментного индикатора. Удобно было разместить с нулевого адреса потому-что адрес кода символа числа непосредственно равен самому числу. :-) А линкер, наверное, написан с учетом глюков EEPROM, но без учета типа МК в котором этот глюк проявляется :-)
--------------------
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|