Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблемы с hex файлом
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
SergeyBorshch
Добрый день, возникла проблемка.
При написании программы в среде IAR 4.30A для проца Mega8, компилятор выводит ошибку:

Error[e133]: The output format intel-standard cannot handle multiple address spaces. Use format variants (-y -O) to specify
which address space is wanted

Выдает, когда я пытаюсь генерить intel-standard hex файл и использую переменные указывающие на EEPROM. Когда эти переменные удаляю - все компилится.

Переменные использую следующие:

#define CHAR_OFFSET 10

#define SENS_EEPROM pParamChar
#define TYPE_EEPROM pParamChar+1

__eeprom unsigned char ee_char_buf [CHAR_OFFSET];

unsigned char __eeprom *pParamChar;

void main( void ) {

pParamChar =ee_char_buf;
*(SENS_EEPROM) = 10;
*(TYPE_EEPROM) = 34;
Init_CPU();
while(1) {
}

}

Что делать? Может кто нибудь сталкивался с такой проблемой?
GDI
Цитата
The output format intel-standard cannot handle multiple address spaces.
Потому что так и есть, надо использовать intel-extended
SergeyBorshch
Цитата(GDI @ Aug 19 2008, 15:41) *
Потому что так и есть, надо использовать intel-extended


Изменил, все равно, та-же ошибка:

Error[e133]: The output format intel-extended cannot handle multiple address spaces. Use format variants (-y -O) to specify
which address space is wanted
INT1
А про Init_CPU(); компилятор не спрашивает?- где она описана?
и поставьте intel-extended
SergeyBorshch
Цитата(INT1 @ Aug 19 2008, 16:02) *
А про Init_CPU(); компилятор не спрашивает?- где она описана?
и поставьте intel-extended


Нет, Init_CPU() - инициализация портов и таймеров, и все. Ставлю intel-extended, та же ошибка, когда я убираю указатели на EEPROM, т.е.
//pParamChar =ee_char_buf; коментирую
прошиваю контроллер - программа не запускается.

При intel-standard - программа запускается.

Шью программатором STK200/300 программой AvReal.

Может при intel-extended, нужно еще какие-то настройки делать?
Stanislav_S
Если вам надо ЕЕПРОМ, то делаете так:
Формат выходного файла simple
Затем запускаете postlink, он разбирает simple на два файла - eeprom и flash, затем все это дело прошиваете и все.
INT1
Покажите вашу Init_CPU()
GDI
А, да да да, там с еепромом проблемы были... в ИАРе, его как то хитро надо было делать... а какая это версия?
SergeyBorshch
Цитата(Stanislav_S @ Aug 19 2008, 16:30) *
Если вам надо ЕЕПРОМ, то делаете так:
Формат выходного файла simple
Затем запускаете postlink, он разбирает simple на два файла - eeprom и flash, затем все это дело прошиваете и все.


Здесь поподробнее, пожайлуста, как запустить postlink, че то не нашел.
GDI
Здесь вообще есть отдельный раздел по IAR-у http://electronix.ru/forum/index.php?act=SF&s=&f=137 наверняка там это рассматривалось ищите под свою версию решение.
SergeyBorshch
Цитата(GDI @ Aug 19 2008, 16:57) *
Здесь вообще есть отдельный раздел по IAR-у http://electronix.ru/forum/index.php?act=SF&s=&f=137 наверняка там это рассматривалось ищите под свою версию решение.


Ок, счас буду смотреть, у меня версия IAR 4.30A.
Stanislav_S
Цитата(SergeyBorshch @ Aug 19 2008, 17:52) *
Здесь поподробнее, пожайлуста, как запустить postlink, че то не нашел.

Сам постлинк находится в avr\bin компилятора - postlink.exe, в папке avr\doc находится в html, описание самой утилиты и как с ней работать, если надо могу кинуть пример скрипта для работы с постлинком и avreal.
SergeyBorshch
Цитата(Stanislav_S @ Aug 19 2008, 17:05) *
Сам постлинк находится в avr\bin компилятора - postlink.exe, в папке avr\doc находится в html, описание самой утилиты и как с ней работать, если надо могу кинуть пример скрипта для работы с постлинком и avreal.


Если можна, то жду пример.
Stanislav_S
Цитата(SergeyBorshch @ Aug 19 2008, 18:13) *
Если можна, то жду пример.

Код
postlink -intel-extended -xdata Accelerometer.simple AC.ee
if errorlevel 1 goto err
postlink  -intel-extended -code  Accelerometer.simple AC.f
if errorlevel 1 goto err

avreal32 +mega8 -o16.0MHZ -ab -p1  -e -w -v -cAC.f -dAC.ee  -fcksel=f,ckopt=0,boden=0,WDTON=0
goto ex
:err
pause
:ex

Постлинк располагаете в каталоге с исходным файлом (и avreal32), либо кидаете в Windows\System.
SergeyBorshch
Всем спасибо за советы и помощь, разобрался.

Настроил линкер так:
Linker->Extra Options птичка в окошке Use command line options, и там:

-y(CODE)
-Ointel-extended,(XDATA)=$EXE_DIR$\$PROJ_FNAME$_data.eep

Получилось два раздельных файла: *.hex и *.eep.

Ссылка здесь: http://electronix.ru/forum/index.php?showtopic=48626
SasaVitebsk
При создании проекта, указываете что формат выдачи для AVR Studio. smile.gif

Необходимые опции для линкера устанавливаются автоматом.

-y(CODE)
-Ointel-extended,(DATA)=$EXE_DIR$\$PROJ_FNAME$_data.hex
-Ointel-extended,(XDATA)=$EXE_DIR$\$PROJ_FNAME$_eeprom.hex
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.