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

 
 
> 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
AHTOXA
сообщение May 22 2018, 19:32
Сообщение #3


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

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



Цитата(BAT @ May 22 2018, 18:28) *
Приоритеты прерываний? Вложенные прерывания для кортекса?

Приоритеты проверьте, конечно.
Посмотрите, как у H7 реализован доступ к регистру SHP3. У M0 он разрешён только по словам, а у M3/4 - разрешён побайтный доступ. Если у H7 тоже доступ только по словам, то будет неправильная инициализация приоритетов прерываний. А это может привести к глюкам.

ЗЫ. Вот нужный дефайн в порте.


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



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 13:33
Рейтинг@Mail.ru


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