FreeRTOS хороша, но минималистистичность по памяти не ее путь.
Можно занятся извращениями, которые формально запрещены, но
эффективны. Глобальные статические переменные. Т.е. все более менее объемные данные каждой задачи в статику.
Делать это надо с умом, при перегибе потребление памяти вырастет.
Анализировать логи компилера - там четко пишется, сколько стека надо.
Тестирование каждой функции с заполнением стека псевдослучайной последовательностью и изучением, сколько они сожрала.
В общем, объем памяти на задачу можно точно измерить, но это целое искусство.
Далее. Изучаем код Contiki-NG
https://caxapa.ru/985289.html
Там очень эффективные методы экономии ОЗУ.