Zaicev 0 26 декабря, 2005 Опубликовано 26 декабря, 2005 · Жалоба Народ горю как швед по полтавой.. Происходит переполнение стека. Как указать глубину стека в WinAVR. Заранее спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GeorgeV 0 26 декабря, 2005 Опубликовано 26 декабря, 2005 · Жалоба Так WinAVR тут не причем, если пишешь на ассемблере, предусмотри область памяти под стэк побольше, если на Си, то в опциях компилятора надо указать размер стека поболее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zaicev 0 26 декабря, 2005 Опубликовано 26 декабря, 2005 · Жалоба про асм и про IAR это знаю, как там указывать глубину стека Но проект написан на WInAVR, а переделываеть его просто не времени физически подскажите тупому где в WinAVR это указывается заранее спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GeorgeV 0 26 декабря, 2005 Опубликовано 26 декабря, 2005 · Жалоба Эх, снес я у себя ВинАВР, оказывается! Так что точно не скажу, но надо копаться в опциях компилятора. Не может не быть, чтобы размера стека не было. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 4 26 декабря, 2005 Опубликовано 26 декабря, 2005 · Жалоба Эх, снес я у себя ВинАВР, оказывается! Так что точно не скажу, но надо копаться в опциях компилятора. Не может не быть, чтобы размера стека не было. Так размер и расположение сегмента стека как, впрочем, и всех других сегментов - это забота не компилятора, а линкера. В его опциях/настройках и надо смотреть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beer_warrior 0 26 декабря, 2005 Опубликовано 26 декабря, 2005 · Жалоба Можно покопаться в ключах -fstack- хотя это не совсем то. Если все совсем плохо, попробовать использовать inline. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pulsar-17 0 26 декабря, 2005 Опубликовано 26 декабря, 2005 · Жалоба А почему Вы решили что это именно стек переполняется? Если используется только накристальная память то увеличивай не увеличивай - результат один - при сильном заполнении накристалки возможно наползание стека на BSS, а за ней и на DATA сегмент, в итоге данные запораты и стек поврежден. Выход один - оптимизировать программу с точки зрения использования памяти данных(уменьшать размеры массивов, оптимизировать математику для обработки "не лету",...), а также убрать рекурсивные функции(если есть таковые) и тд. Если есть внешняя память, то перенести сегмент DATA и BSS в неё. Стек оставить в накристалке, там он работает быстрей. Как перенести сегменты читайте в avr-libc-user-manual, лежит в winavr\doc. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться