реклама на сайте
подробности

 
 
> Комипилятор IAR 4.02A... Нехватает Стека....., Подскажите пожалуйста кто знает...
Potter
сообщение Nov 3 2006, 08:07
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 151
Регистрация: 27-05-06
Из: Харьков
Пользователь №: 17 508



Конроллер мега 64... Надо сохранить (в памяти) большое количество данных.... Сохраняю во флеше в виде массивов..... И выскакивает следующая ошибка:


Error[e16]: Segment CSTACK (size: 0x200 align: 0) is too long for segment definition. At least 0x71 more bytes needed. The problem occurred while
processing the segment placement command "-Z(DATA)CSTACK+_..X_CSTACK_SIZE=_..X_SRAM_BASE-_..X_SRAM_END", where at the moment of
placement the available memory ranges were "DATA:f71-10ff"
Reserved ranges relevant to this placement:
DATA:100-d18 NEAR_I
DATA:d19-f30 NEAR_Z
DATA:f31-f70 RSTACK
DATA:f71-10ff CSTACK

Я так понимаю что это не хватает стека.... Поправте если это не так.... Знаю что б устранить эту ошибку надо где-то в настройках проэкта что-то изменить.... Подскажите что и где надо изменить.... Работаю в компиляторе IAR 4.02A....

Зарание спасибо за ответы....
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
slog
сообщение Nov 3 2006, 16:31
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 961
Регистрация: 28-11-05
Пользователь №: 11 489



По моему это значит что не хватает памяти для стека, который ты хочешь. Уменьши 0х200 на 0х71 и ошибка исчезнет.


--------------------
В действительности всё не так, как на самом деле.
Go to the top of the page
 
+Quote Post
Potter
сообщение Nov 4 2006, 13:52
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 151
Регистрация: 27-05-06
Из: Харьков
Пользователь №: 17 508



Цитата(slog @ Nov 3 2006, 19:31) *
По моему это значит что не хватает памяти для стека, который ты хочешь. Уменьши 0х200 на 0х71 и ошибка исчезнет.


Интересно.... Вот я сохраняю все во флеше.... Но сохраняю в виде массивов.... Тоесть в таком виде к примеру:

unsigned char I[2] = {1,74};

То есть этот масив как набор переменных.... Получается что при начале работы конроллера он полность все массивы загружает в ОЗУ.... А мне надо впринципе сохранять не переменные а константы... То есть эти данные которые мне надро сохранить не меняются.... Просто я сохраняю в виде массивов что б удобней было с данными работать.... Интересно.. Надо будет посмотреть в книге по Си... Можно ли сохранят Не просто константы... А массивы констант....
Go to the top of the page
 
+Quote Post
AVR
сообщение Nov 4 2006, 15:53
Сообщение #4


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Potter @ Nov 4 2006, 16:52) *
unsigned char I[2] = {1,74};

При такой записи, кажется, и будет дублирование содержимого массива в ОЗУ, ведь это инициализация массива переменных.
Попробуйте так...:
const unsigned char __flash I[2] = {1,74};


--------------------
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 15:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01381 секунд с 7
ELECTRONIX ©2004-2016