Перейти к содержанию

    

Настройка стека данных CSTACK

Приветствую!

Конечная цель - разместить код в загрузчике. Имеется загрузчик 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

 

Кто-то знает, как настроить стек данных?

Заранее благодарен!

 

 

 

bootldr.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация