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

 
 
 
Reply to this topicStart new topic
> Глубина стека в WinAVR, как указать стек
Старый Бабай
сообщение Dec 26 2005, 06:21
Сообщение #1


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

Группа: Свой
Сообщений: 104
Регистрация: 5-12-05
Из: Екатеринбург
Пользователь №: 11 823



Народ горю как швед по полтавой..
Происходит переполнение стека.
Как указать глубину стека в WinAVR.
Заранее спасибо
Go to the top of the page
 
+Quote Post
Георгий
сообщение Dec 26 2005, 06:55
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



Так WinAVR тут не причем, если пишешь на ассемблере, предусмотри область памяти под стэк побольше, если на Си, то в опциях компилятора надо указать размер стека поболее.


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
Старый Бабай
сообщение Dec 26 2005, 07:13
Сообщение #3


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

Группа: Свой
Сообщений: 104
Регистрация: 5-12-05
Из: Екатеринбург
Пользователь №: 11 823



про асм и про IAR это знаю, как там указывать глубину стека
Но проект написан на WInAVR, а переделываеть его просто не времени физически
подскажите тупому где в WinAVR это указывается
заранее спасибо
Go to the top of the page
 
+Quote Post
Георгий
сообщение Dec 26 2005, 12:41
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



Эх, снес я у себя ВинАВР, оказывается! Так что точно не скажу, но надо копаться в опциях компилятора. Не может не быть, чтобы размера стека не было.


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
SSerge
сообщение Dec 26 2005, 18:02
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Цитата(Георгий @ Dec 26 2005, 18:41) *
Эх, снес я у себя ВинАВР, оказывается! Так что точно не скажу, но надо копаться в опциях компилятора. Не может не быть, чтобы размера стека не было.

Так размер и расположение сегмента стека как, впрочем, и всех других сегментов - это забота не компилятора, а линкера.
В его опциях/настройках и надо смотреть.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Dec 26 2005, 18:22
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Можно покопаться в ключах -fstack- хотя это не совсем то.
Если все совсем плохо, попробовать использовать inline.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
pulsar-17
сообщение Dec 26 2005, 18:34
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 32
Регистрация: 7-12-04
Из: Московская область
Пользователь №: 1 376



А почему Вы решили что это именно стек переполняется? Если используется только накристальная память то увеличивай не увеличивай - результат один - при сильном заполнении накристалки возможно наползание стека на BSS, а за ней и на DATA сегмент, в итоге данные запораты и стек поврежден. Выход один - оптимизировать программу с точки зрения использования памяти данных(уменьшать размеры массивов, оптимизировать математику для обработки "не лету",...), а также убрать рекурсивные функции(если есть таковые) и тд. Если есть внешняя память, то перенести сегмент DATA и BSS в неё. Стек оставить в накристалке, там он работает быстрей. Как перенести сегменты читайте в avr-libc-user-manual, лежит в winavr\doc.
Go to the top of the page
 
+Quote Post

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

 


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


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