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

 
 
> sleep блоирует поток, Регулярно намертво блокируется один из потоков, где используется sleep
BAT
сообщение May 14 2018, 15:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 35
Регистрация: 22-12-05
Пользователь №: 12 556



Приветствую всех.

В проекте регулярно застывает задача при входе в sleep. Т.е. она бежит некоторое время, а потом перестает выходить из слипа одного из потоков.
При этом Timeout потока висит в нуле. Если его в отладчике снова выставить на какое-либо число, то поток отмерзает и снова работает некоторое время.
Стека там достаточно. Время на выполнение потока точно есть (все сидит в IDLE).

CPU stm32h7. За основу взят порт для stm32F3 для IAR + порт для stm32f4 FPU для GCC

Грешу на кэши, но оно работало вполне успешно на stm32F7, где это тоже присутствует.

Есть подозрение, что встал на те же грабли, но не могу их разглядеть. Может кто сможет поделиться идеей, куда покопать.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
BAT
сообщение May 22 2018, 13:28
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 35
Регистрация: 22-12-05
Пользователь №: 12 556



Проблема так и не ушла.
В процессе отладки стало ясно, что двойное ожидание здесь ни при чем. Вылезает во всех местах, где есть ожидание со временем (sleep, event(s)). Там, где sleep или ожидание с таймаутом заменил на простой блокирующий event (раздаю события из таймерного хука), проблем не влезает.

Приоритеты прерываний? Вложенные прерывания для кортекса? Кеши в процессоре(сброс DATA не помогал)? Где еще можно поискать затык?
Как такое в принципе может возникать?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 04:54
Рейтинг@Mail.ru


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