Цитата(zltigo @ Dec 18 2016, 13:48)
0, но с учетом методики измерения - одно слово.
А контекст задачи где FreeRTOS сохраняет? Разве не на стеке задачи?
По-крайней мере часть контекста, сохраняемая при срабатывании ISR, будет на стеке задачи. Если конечно не всё исполнение идёт в Handler-режиме...
Если конечно вопрос касается Cortex-M, о чём здесь можно только догадываться.....
Цитата(Непомнящий Евгений @ Dec 19 2016, 08:56)
обычно стек назначаются с некоторым (по возможности большим) запасом. Иначе самая минимальная переделка программы может ее сломать. На что и обращают ваше внимание в данной статье
Не нужно даже переделки. Достаточно изменить ключи оптимизации или обновить компилятор.
Цитата(Непомнящий Евгений @ Dec 19 2016, 08:56)
Отдельный. Тот, что вы выделили на этапе линковки. Он используется вашими функциями до запуска шедулера; при запуске он очищается и далее используется в прерываниях
Вообще-то при входе в ISR стэкинг делается в тот стек, который был активным на момент прерывания, а уже потом делается переключение стеков. Если конечно исполнение исходно шло в Thread режиме.
Таким образом контекст прерванной задачи оказывается уже на её стеке и не нужно его копировать из Handler-стека куда-то в область данных задачи (как было на ARM7).
А уже дальнейшая работа ISR (и всех вложенных более приоритетных) идёт на Handler-стеке.