|
Уважаемые, как в 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