реклама на сайте
подробности

 
 
> scmRTOS+STM32L15x+OpenSTM(+CUBE), проблема с переключением контекста
skyspark
сообщение Oct 7 2015, 23:04
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 20-02-08
Пользователь №: 35 238



Добрый день.

Перенес проект в 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?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AHTOXA
сообщение Oct 8 2015, 08:47
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



День добрый.

volatile для CurProcPriority не нужен, потому что SchedProcPriority - volatile, и компилятор уже и так не имеет права выбросить это сравнение. Конечно, теоретически, компилятор может загрузить переменную CurProcPriority в регистр, и не перечитывать её каждый раз при сравнении. Но на практике такого до сих пор не встречалось.
Думаю, что проблема всё-таки в чём-то другом.
Обновление Eclipse и плагинов вряд ли могло повлиять. А вот обновление sdtlib (это что? SrdPeriphLib?) и особенно замена стартап-файла - повлиять могли.
Такие симптомы бывают, когда не вызывается прерывание переключателя контекста или прерывание системного таймера.
Проверьте имена обработчиков прерываний в стартап-файле. Они должны называться
PendSVC_ISR()
и
SystemTimer_ISR().

Кроме того, насколько я знаю, CUBE захватывает системный таймер. Как вы решили эту проблему?

ЗЫ. Напишите версию компилятора и scmRTOS, а также какой порт вы используете (GCC/Cortex-M3 или GCC/Cortex-Mx).


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- skyspark   scmRTOS+STM32L15x+OpenSTM(+CUBE)   Oct 7 2015, 23:04
- - Сергей Борщ   для CurProcPriority volatile не нужен, потому что ...   Oct 8 2015, 08:55
|- - dxp   QUOTE (Сергей Борщ @ Oct 8 2015, 14:55) д...   Oct 8 2015, 09:23
|- - dxp   QUOTE (dxp @ Oct 8 2015, 15:23) Смутно пр...   Oct 8 2015, 14:42
|- - AHTOXA   Ага, идея понятна. Каждый процесс, засыпая, читает...   Oct 8 2015, 15:13
|- - dxp   QUOTE (AHTOXA @ Oct 8 2015, 21:13) В этой...   Oct 8 2015, 16:23
|- - Сергей Борщ   Цитата(dxp @ Oct 8 2015, 19:23) Да, дейст...   Oct 8 2015, 16:44
|- - AHTOXA   Цитата(Сергей Борщ @ Oct 8 2015, 21:44) Е...   Oct 8 2015, 17:20
|- - dxp   QUOTE (AHTOXA @ Oct 8 2015, 23:20) CODE{ ...   Oct 8 2015, 17:35
|- - AHTOXA   Семён Семёныч! Это я тормознул, да. Тогда воз...   Oct 8 2015, 17:49
|- - dxp   QUOTE (AHTOXA @ Oct 8 2015, 23:49) Семён ...   Oct 8 2015, 18:04
|- - skyspark   Добрый день. Я проковырялся пару дней с разными в...   Oct 8 2015, 23:40
|- - skyspark   Глянул дизасмом: Вариант без volatile (нерабочий)...   Oct 9 2015, 02:03
|- - dxp   Спасибо за листинг! QUOTE (skyspark @ Oc...   Oct 9 2015, 02:42
|- - AHTOXA   Цитата(skyspark @ Oct 9 2015, 07:03) Вари...   Oct 9 2015, 04:41
|- - skyspark   Цитата(AHTOXA @ Oct 9 2015, 07:41) Хм. ...   Oct 16 2015, 16:24
|- - AHTOXA   Эх, мы так не разберёмся. На вопросы о версии комп...   Oct 16 2015, 16:52
|- - skyspark   Цитата(AHTOXA @ Oct 16 2015, 19:52) Если ...   Oct 17 2015, 00:18
- - Сергей Борщ   Попробую еще большую ясность внести: Перед передач...   Oct 8 2015, 14:56


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 11:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.0139 секунд с 7
ELECTRONIX ©2004-2016