Есть файл настроек линкера (для ATMega32) C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.0\avr\src\template\cfgm32.xcl. Он указан в опциях проекта для линкера. Но подгружается еще один файл - C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.0\avr\src\template\cfg3soim.xcl.
Я не смог найти место, где он указан линкеру...
Содержимое этого файла таково:
Код
//////////////////////////////////////////////////////////////////////////////
//
// Configuration for a generic -v3 -ms target.
//
// File version: $Revision: 9254 $
//
// The '_..X_' prefix is used by C-SPY as an indication that the label should
// not be displayed in the dissassembly window.
//
// Set up XLINK
-ca90
-w29
//////////////////////////////////////////////////////////////////////////////
// Code (flash) segments
-Z(CODE)INTVEC=0-(_..X_INTVEC_SIZE-1)
-Z(CODE)TINY_F=_..X_FLASH_BASE-FF
-Z(CODE)NEAR_F=_..X_FLASH_BASE-_..X_FLASH_NEND
-Z(CODE)SWITCH=_..X_FLASH_BASE-_..X_FLASH_NEND
-Z(CODE)DIFUNCT=_..X_FLASH_BASE-_..X_FLASH_NEND
-Z(CODE)CODE=_..X_FLASH_BASE-_..X_FLASH_END
-P(CODE)FAR_F=[_..X_FLASH_BASE-_..X_FLASH_END]/10000
-Z(CODE)INITTAB=_..X_FLASH_BASE-_..X_FLASH_END
-Z(CODE)HUGE_F=_..X_FLASH_BASE-_..X_FLASH_END
-Z(CODE)TINY_ID=_..X_FLASH_BASE-_..X_FLASH_END
-Z(CODE)NEAR_ID=_..X_FLASH_BASE-_..X_FLASH_END
-Z(CODE)CHECKSUM=(_..X_FLASH_END-1)-_..X_FLASH_END
//////////////////////////////////////////////////////////////////////////////
// Data (SRAM, external ROM or external NV RAM) memory
-Z(DATA)TINY_I,TINY_Z,TINY_N=_..X_SRAM_TBASE:+_..X_SRAM_TSIZE
-Z(DATA)CSTACK+_..X_CSTACK_SIZE=_..X_CSTACK_BASE-_..X_CSTACK_END
-Z(DATA)HEAP+_..X_HEAP_SIZE=_..X_SRAM_BASE-_..X_SRAM_END
-Z(DATA)IOSTREAM_N#_..X_SRAM_BASE-_..X_SRAM_END
-Z(DATA)NEAR_HEAP+_..X_NEAR_HEAP_SIZE=_..X_SRAM_BASE-_..X_SRAM_END
-Z(DATA)RSTACK+_..X_RSTACK_SIZE=_..X_RSTACK_BASE-_..X_RSTACK_END
-Z(DATA)NEAR_I,NEAR_Z,NEAR_N=_..X_SRAM_BASE-_..X_SRAM_END
//////////////////////////////////////////////////////////////////////////////
// Internal EEPROM
-Z(XDATA)EEPROM_I,EEPROM_N=_..X_EEPROM_START-_..X_EEPROM_END
//
// Configuration for a generic -v3 -ms target.
//
// File version: $Revision: 9254 $
//
// The '_..X_' prefix is used by C-SPY as an indication that the label should
// not be displayed in the dissassembly window.
//
// Set up XLINK
-ca90
-w29
//////////////////////////////////////////////////////////////////////////////
// Code (flash) segments
-Z(CODE)INTVEC=0-(_..X_INTVEC_SIZE-1)
-Z(CODE)TINY_F=_..X_FLASH_BASE-FF
-Z(CODE)NEAR_F=_..X_FLASH_BASE-_..X_FLASH_NEND
-Z(CODE)SWITCH=_..X_FLASH_BASE-_..X_FLASH_NEND
-Z(CODE)DIFUNCT=_..X_FLASH_BASE-_..X_FLASH_NEND
-Z(CODE)CODE=_..X_FLASH_BASE-_..X_FLASH_END
-P(CODE)FAR_F=[_..X_FLASH_BASE-_..X_FLASH_END]/10000
-Z(CODE)INITTAB=_..X_FLASH_BASE-_..X_FLASH_END
-Z(CODE)HUGE_F=_..X_FLASH_BASE-_..X_FLASH_END
-Z(CODE)TINY_ID=_..X_FLASH_BASE-_..X_FLASH_END
-Z(CODE)NEAR_ID=_..X_FLASH_BASE-_..X_FLASH_END
-Z(CODE)CHECKSUM=(_..X_FLASH_END-1)-_..X_FLASH_END
//////////////////////////////////////////////////////////////////////////////
// Data (SRAM, external ROM or external NV RAM) memory
-Z(DATA)TINY_I,TINY_Z,TINY_N=_..X_SRAM_TBASE:+_..X_SRAM_TSIZE
-Z(DATA)CSTACK+_..X_CSTACK_SIZE=_..X_CSTACK_BASE-_..X_CSTACK_END
-Z(DATA)HEAP+_..X_HEAP_SIZE=_..X_SRAM_BASE-_..X_SRAM_END
-Z(DATA)IOSTREAM_N#_..X_SRAM_BASE-_..X_SRAM_END
-Z(DATA)NEAR_HEAP+_..X_NEAR_HEAP_SIZE=_..X_SRAM_BASE-_..X_SRAM_END
-Z(DATA)RSTACK+_..X_RSTACK_SIZE=_..X_RSTACK_BASE-_..X_RSTACK_END
-Z(DATA)NEAR_I,NEAR_Z,NEAR_N=_..X_SRAM_BASE-_..X_SRAM_END
//////////////////////////////////////////////////////////////////////////////
// Internal EEPROM
-Z(XDATA)EEPROM_I,EEPROM_N=_..X_EEPROM_START-_..X_EEPROM_END
Когда отрабатывает линкер, в мар файле появляется следующее:
Код
"C:\Program Files (x86)\IAR Systems\Embedded Work #
# bench 6.0\avr\src\template\cfg3soim.xcl" #
# (-ca90 -w29 #
# -Z(CODE)INTVEC=0-(_..X_INTVEC_SIZE-1) #
# -Z(CODE)TINY_F=_..X_FLASH_BASE-FF #
# -Z(CODE)NEAR_F=_..X_FLASH_BASE-_..X_FLASH_NEND #
# -Z(CODE)SWITCH=_..X_FLASH_BASE-_..X_FLASH_NEND #
# -Z(CODE)DIFUNCT=_..X_FLASH_BASE-_..X_FLASH_NEND #
# -Z(CODE)CODE=_..X_FLASH_BASE-_..X_FLASH_END #
# -P(CODE)FAR_F=[_..X_FLASH_BASE-_..X_FLASH_END]/10 #
# 000 #
# -Z(CODE)INITTAB=_..X_FLASH_BASE-_..X_FLASH_END #
# -Z(CODE)HUGE_F=_..X_FLASH_BASE-_..X_FLASH_END #
# -Z(CODE)TINY_ID=_..X_FLASH_BASE-_..X_FLASH_END #
# -Z(CODE)NEAR_ID=_..X_FLASH_BASE-_..X_FLASH_END #
# -Z(CODE)CHECKSUM=(_..X_FLASH_END-1)-_..X_FLASH_EN #
# D #
# -Z(DATA)TINY_I,TINY_Z,TINY_N=_..X_SRAM_TBASE:+_.. #
# X_SRAM_TSIZE #
# -Z(DATA)CSTACK+_..X_CSTACK_SIZE=_..X_CSTACK_BASE- #
# _..X_CSTACK_END #
# -Z(DATA)HEAP+_..X_HEAP_SIZE=_..X_SRAM_BASE-_..X_S #
# RAM_END #
# -Z(DATA)IOSTREAM_N#_..X_SRAM_BASE-_..X_SRAM_END #
# -Z(DATA)NEAR_HEAP+_..X_NEAR_HEAP_SIZE=_..X_SRAM_B #
# ASE-_..X_SRAM_END #
# -Z(DATA)RSTACK+_..X_RSTACK_SIZE=_..X_RSTACK_BASE- #
# _..X_RSTACK_END #
# -Z(DATA)NEAR_I,NEAR_Z,NEAR_N=_..X_SRAM_BASE-_..X_ #
# SRAM_END #
# -Z(XDATA)EEPROM_I,EEPROM_N=_..X_EEPROM_START-_..X #
# _EEPROM_END) #
# -D_..X_FLASH_BASE=_..X_INTVEC_SIZE -H1895 #
# -h(CODE)0-(_..X_INTVEC_SIZE-1) #
# -D_..X_CSTACK_BASE=_..X_SRAM_BASE #
# -D_..X_CSTACK_END=_..X_SRAM_END #
# -D_..X_RSTACK_BASE=_..X_SRAM_BASE #
# -D_..X_RSTACK_END=_..X_SRAM_END -s #
# __program_start #
# "C:\Program Files (x86)\IAR Systems\Embedded Work #
# bench 6.0\avr\LIB\CLIB\cl3s-ec_mul-sf.r90" #
# -e_large_write=_formatted_write #
# -e_large_read=_formatted_read #
# bench 6.0\avr\src\template\cfg3soim.xcl" #
# (-ca90 -w29 #
# -Z(CODE)INTVEC=0-(_..X_INTVEC_SIZE-1) #
# -Z(CODE)TINY_F=_..X_FLASH_BASE-FF #
# -Z(CODE)NEAR_F=_..X_FLASH_BASE-_..X_FLASH_NEND #
# -Z(CODE)SWITCH=_..X_FLASH_BASE-_..X_FLASH_NEND #
# -Z(CODE)DIFUNCT=_..X_FLASH_BASE-_..X_FLASH_NEND #
# -Z(CODE)CODE=_..X_FLASH_BASE-_..X_FLASH_END #
# -P(CODE)FAR_F=[_..X_FLASH_BASE-_..X_FLASH_END]/10 #
# 000 #
# -Z(CODE)INITTAB=_..X_FLASH_BASE-_..X_FLASH_END #
# -Z(CODE)HUGE_F=_..X_FLASH_BASE-_..X_FLASH_END #
# -Z(CODE)TINY_ID=_..X_FLASH_BASE-_..X_FLASH_END #
# -Z(CODE)NEAR_ID=_..X_FLASH_BASE-_..X_FLASH_END #
# -Z(CODE)CHECKSUM=(_..X_FLASH_END-1)-_..X_FLASH_EN #
# D #
# -Z(DATA)TINY_I,TINY_Z,TINY_N=_..X_SRAM_TBASE:+_.. #
# X_SRAM_TSIZE #
# -Z(DATA)CSTACK+_..X_CSTACK_SIZE=_..X_CSTACK_BASE- #
# _..X_CSTACK_END #
# -Z(DATA)HEAP+_..X_HEAP_SIZE=_..X_SRAM_BASE-_..X_S #
# RAM_END #
# -Z(DATA)IOSTREAM_N#_..X_SRAM_BASE-_..X_SRAM_END #
# -Z(DATA)NEAR_HEAP+_..X_NEAR_HEAP_SIZE=_..X_SRAM_B #
# ASE-_..X_SRAM_END #
# -Z(DATA)RSTACK+_..X_RSTACK_SIZE=_..X_RSTACK_BASE- #
# _..X_RSTACK_END #
# -Z(DATA)NEAR_I,NEAR_Z,NEAR_N=_..X_SRAM_BASE-_..X_ #
# SRAM_END #
# -Z(XDATA)EEPROM_I,EEPROM_N=_..X_EEPROM_START-_..X #
# _EEPROM_END) #
# -D_..X_FLASH_BASE=_..X_INTVEC_SIZE -H1895 #
# -h(CODE)0-(_..X_INTVEC_SIZE-1) #
# -D_..X_CSTACK_BASE=_..X_SRAM_BASE #
# -D_..X_CSTACK_END=_..X_SRAM_END #
# -D_..X_RSTACK_BASE=_..X_SRAM_BASE #
# -D_..X_RSTACK_END=_..X_SRAM_END -s #
# __program_start #
# "C:\Program Files (x86)\IAR Systems\Embedded Work #
# bench 6.0\avr\LIB\CLIB\cl3s-ec_mul-sf.r90" #
# -e_large_write=_formatted_write #
# -e_large_read=_formatted_read #
меня смущает строка
-D_..X_FLASH_BASE=_..X_INTVEC_SIZE -H1895
Дело в том, что мне нужно заполнить неиспользуемую область 0xFF, а наличие вышеуакзанной строчки вызывает грязную ругань со стороны линкера.
И выходной файл не заполняется ничем...
Подскажите, где рыть? Что нужно поправить в настройках...
Спасибо...