Разрабатываю ПО на STM32 с использованием FreeRTOS, и заметил, что при компиляции без оптимизации кода происходит не только раздутие памяти программ, но и идет увеличенный расход памяти RAM в стеках. Видимо под все переменные выделяется гарантированное место в стеке на все время жизни задачи, а когда оптимизация включена, то видимо переменные убиваются и возникают динамично, подчищая стек за собой. Правильно ли я это понимаю?
Если так, то конечно с этим можно смириться, но крайне неудобно, что с определенного момента debug target перестает работать, так как случается нехватка стека, при этом прога сваливается в самом начала жизни потока, то есть переменные видимо как то разом инициализируются... При этом release отлично работает, но отлаживаться сложнее.
|