Прошу прощения за предыдущий пост! (стыдно, но рука не "поднялась" его "пофиксить")
"Правды" в нем - только благодарность авторам!
Я не стек увеличивал, а размер контекста....
Код
#define scmRTOS_IDLE_PROCESS_STACK_SIZE 17 * sizeof(TStackItem)
А как только увеличил размер стека
Код
typedef OS::process<OS::pr0, 200> TProc1;
typedef OS::process<OS::pr1, 400> TProc2;
typedef OS::process<OS::pr2, 200> TProc3;
, так сразу
Code motion перестал оказывать "влияние".
....
Дизассембленый код, все же, посмотрел, разницы не увидел (опция
Code motion ). Код функций неизмЕнен, функции на "своих" (одних и тех же) местах (две "верхние", во всяком случае). Глубина вложения "оказалась" - 4-ре уровня: линия->точка->формирование байта для записи->передача байта в LCD.
....
Попутно возник вопрос.. Как лучше поступать? Делать функции встраиваемыми, "экономя" ОЗУ, или использовать вложенные, увеличивая размер стека? Понимаю, что ответ, скорее всего будет, - "Все зависит от конкретной задачи.." Но все же.. Нужно ли, допустим, объявлять встраиваемыми функции, зависимые от платформы ("нижние", так сказать)?
Что подсказывает "опыт" и какой "стиль программирования" правильный?
Спасибо.