Как определить размер стека распределяемый IAR C Compiler’ом?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено brake 29 января 2004 г. 15:12

Уважаемые, как в IAR AVR EW определить необходимый размер стека?
Компилятор ICC выдает некоторую диагностическую информацию, например:

Maximum stack usage in bytes:

Function CSTACK RSTACK
-------- ------ ------
Adjust 30 2
-> PolyVal 26 2
-> PolyVal 30 2
PolyVal 5 2
SEND 0 0
SIGNALS 34 2
-> SEND 26 2
-> Adjust 28 2
-> sqrt 26 2
-> acos 30 2
main 0 2
-> SIGNALS 0 2
-> SEND 0 2

Насколько я понимаю, здесь указан размер стека в подпрограммах (функциях) при вызове других подпрограмм, но без учета стека этих вызываемых подпрограмм. То есть это какой-то полуфабрикат, если надлежащим образом просуммировать данные – получится максимальная глубина стека. Можно ли каким либо способом автоматически получить максимальный размер стека используемый программой? Считать вручную или делать программу для подсчета размера стека на основе этой таблицы как-то влом. Устанавливать размер стека с запасом или подбирать экспериментально тоже не очень здорово. Кстати описан ли формат вышеприведенной таблицы где-нибудь в документации? Я – не нашел. Да, вот подумал, что может быть специально не сделано – на случай рекурсии.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru