Нормального решения тут НЕТ ВООБЩЕ. Правильный ответ -- весь свободный (как в оригинальном Unix -- стек растёт вниз, куча вверх). Поэтому pic18 лучше и надёжней -- там компилируемый стек и ошибки связанные с его переполнением невозможны. Варианты "померять" не очень надёжны, расчитать -- тоже непонятно как: gcc умеет специальный ключ (-fstack-usage, -Wstack-usage) с которым выводит сколько стека нужно для каждой функции, но нужно же ещё как-то call graph получить, например, с помощью cflow, но он же в свою очередь может оказаться рекурсивным! Кроме того ещё функции с переменным числом аргументов и использующие alloca() или variadic length arrays с неконстантным размером. Выхода нет.
Ссылки по теме:
http://caxapa.ru/214881.html (www.cs.utah.edu/~regehr/stacktool/)
http://caxapa.ru/902080.html (
https://github.com …masgeorgec/Stack-usage)