Приветствую!
Конечная цель - разместить код в загрузчике. Имеется загрузчик AVR230 http://microsin.net/programming/AVR/avr230...bootloader.html
Проект имеет уйму настроек. Если что-то неудачно зацепить, концов не найти. Проект был изначально для IAR 2.28. Вроде бы получилось его адаптировать на IAR 6.40. Загрузчик работает, программы тоже. Проблема началась, когда к проекту загрузчика прицепил ранее отлаженный код. Линкер выдаёт следующее:

Error[e16]: Segment CSTACK (size: 0xfc0 align: 0) is too long for segment definition. At least 0x2 more bytes needed. The problem occurred while processing the segment placement
command "-Z(DATA)CSTACK+(RAM_SIZE-40)=RAM_BASE-(RAM_BASE+RAM_SIZE-1)", where at the moment of placement the available memory ranges were "DATA:142-10ff"
Reserved ranges relevant to this placement:
DATA:100-101 NEAR_Z
DATA:102-141 RSTACK
DATA:142-10ff CSTACK
Error while running Linker

В проекте есть файл .xcl, содержащий следующую строку:
-Z(DATA)CSTACK+(RAM_SIZE-40-APP_SRAM_USAGE)=RAM_BASE-(RAM_BASE+RAM_SIZE-1)
Несколько мудрёное уравнение. И самое главное, в нём есть неизвестное APP_SRAM_USAGE.

Было замечено, что ошибка линкера появляется, когда в обработчике прерывания встречается обращение к структуре через указатель. Когда в теле обычной функции, то всё нормально. И чего линкер прицепился к обработчику прерывания?!

#pragma vector=TIMER0_OVF_vect
__interrupt void T0_mng (void)
{
char from_T0;

from_T0 = TCNT0;
while(from_T0 == TCNT0);
TCNT0 += (255-T0_preload);
//Syst->swe_Time = Syst->qty_SWI_executors++; /* Вызывает ошибку Линкера */
}


В свойствах проекта нет возможности изменить размеры стеков. Получается, что всё определяется файлом .xcl

Кто-то знает, как настроить стек данных?
Заранее благодарен!