Добрый день.
Перенес проект в Eclipse на CDT с таким набором: scmRTOS+STM32L15x+OpenSTM(+CUBE).
Столкнулся с проблемой переключения контекста (после обновления Eclipse до Mars, всех плагинов и самой порты ОС):
Выполняется только задача с максимальным приоритетом, остально время висим тут:
CODE
{...}
while(CurProcPriority != SchedProcPriority); // until context switch done
В отладчике вижу что CurProcPriority = SchedProcPriority, проблема знакомая с AVR8 и оптимизатором в IAR.
Я грешил на что оставил stdlib при переносе и откатился в далекое прошлое, когда в проекте не было sdtlib был родной (порты OC) startup и все работало, поиграть с оптимизацией, собрать yagarto'ой, но это не изменило ситуацию.
Решилось так:
CODE
volatile uint_fast8_t CurProcPriority;
Хочется узнать почему она изначально не объявлена volatile как и SchedProcPriority?