Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Свой xcl для AVR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Beginning
Осваиваю IAR для AVR. Сейчас пишу проект для ATmega32. Хочу написать свой xcl. Вот что у меня получилось:
Код
-D_..X_CSTACK_SIZE=50      
-D_..X_RSTACK_SIZE=10    
                        
-D_..X_HEAP_SIZE=0        
-D_..X_NEAR_HEAP_SIZE=0    //?
-D_..X_FAR_HEAP_SIZE=0     //?
-D_..X_HUGE_HEAP_SIZE=0    //?



/*************************************************************/
/* Segments in program address space (internal Flash memory) */
/*************************************************************/


-Z(CODE)INTVEC=0-28  

-Z(CODE)SWITCH,DIFUNCT=0-7fff

-Z(CODE)NEAR_F=0-7fff

-Z(CODE)CODE=0-7fff

-Z(CODE)FARCODE=0-7fff

-Z(FARCODE)FAR_F=0-7fff

-Z(CODE)HUGE_F,INITTAB=0-7fff

-Z(CODE)TINY_ID,NEAR_ID,HUGE_ID=0-7fff
-Z(CODE)CHECKSUM#7fff

/***************************************************************************/
/* Segments in data address space (internal or external SRAM/EPROM/EEPROM) */
/***************************************************************************/

-Z(DATA)TINY_I,TINY_Z,TINY_N=60-FF

-Z(DATA)CSTACK+_..X_CSTACK_SIZE=60-7ff

-Z(DATA)HEAP+_..X_HEAP_SIZE=60-7ff
-Z(DATA)NEAR_HEAP+_..X_NEAR_HEAP_SIZE=60-7ff
-Z(DATA)FAR_HEAP+_..X_FAR_HEAP_SIZE=60-7ff
-Z(DATA)HUGE_HEAP+_..X_HUGE_HEAP_SIZE=60-7ff

-Z(DATA)RSTACK+_..X_RSTACK_SIZE=60-7ff

-Z(DATA)NEAR_I,NEAR_Z,NEAR_N=60-7ff
-Z(DATA)IOSTREAM_N#60-7ff

-Z(CONST)NEAR_C=60-7ff

// Internal EEPROM

-Z(XDATA)EEPROM_I,EEPROM_N=0-3ff

Iar выдал:
Код
Linking
Error[e16]: Segment INTVEC (size: 0x38 align: 0x1) is too long for segment definition. At least 0x10 more bytes needed. The problem occurred while  
processing the segment placement command "-Z(CODE)INTVEC=0-28", where at the moment of placement the available memory ranges were  
"CODE:0-27"
   Reserved ranges relevant to this placement:
   0-27                 INTVEC
   28-28                ABSOLUTE

Что за ошибка?
P.S. Если кто поделиться настроенным xcl для mega32 буду очень благодарен.
bill_vs
Линкер жалуется на размер стека. У Вас он задан -Z(CODE)INTVEC=0-28, но IAR-у в xcl надо в байтах, и указывать последний занятый. Посмотрите в библиотеке iom32.h определение Interrupt Vector Definitions, последний вектор располагается с 0x50 и занимает 4 байта, значит последний занятый байт 0x53.
Нашел дома только вот такой xcl для mega32 от очень специфического проекта (IAR 4.12):

Код
-DCSTACK_SIZE=20
-DRSTACK_SIZE=20
/* Define CPU */
-ca90
/* Code memory */
-Z(CODE)INTVEC=0-53 /* 21 Interrupt vectors * 4 bytes each */
/* Fill unused interrupt vector's with RETI */
-H1895 -h(CODE)0-53
-Z(CODE)SWITCH,INITTAB,DIFUNCT=58-6FFF
-Z(CODE)CODE=58-6FFF
-Z(CODE)NEAR_ID,NEAR_F,CHECKSUM=58-6FFF
/* Internal data memory */
-Z(DATA)RSTACK+RSTACK_SIZE=60-1FF
-Z(DATA)CSTACK+CSTACK_SIZE=60-1FF
-Z(DATA)NEAR_I,NEAR_Z,NEAR_N=200-85F
/* Internal eeprom memory */
-Z(XDATA)EEPROM_I,EEPROM_N=0-3FF
/* Suppress one warning which is not relevant for this processor */
-w29
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.