|
sleep блоирует поток, Регулярно намертво блокируется один из потоков, где используется sleep |
|
|
|
May 14 2018, 15:50
|
Участник

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

|
Приветствую всех.
В проекте регулярно застывает задача при входе в sleep. Т.е. она бежит некоторое время, а потом перестает выходить из слипа одного из потоков. При этом Timeout потока висит в нуле. Если его в отладчике снова выставить на какое-либо число, то поток отмерзает и снова работает некоторое время. Стека там достаточно. Время на выполнение потока точно есть (все сидит в IDLE).
CPU stm32h7. За основу взят порт для stm32F3 для IAR + порт для stm32f4 FPU для GCC
Грешу на кэши, но оно работало вполне успешно на stm32F7, где это тоже присутствует.
Есть подозрение, что встал на те же грабли, но не могу их разглядеть. Может кто сможет поделиться идеей, куда покопать.
|
|
|
|
|
 |
Ответов
|
May 22 2018, 13:28
|
Участник

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

|
Проблема так и не ушла. В процессе отладки стало ясно, что двойное ожидание здесь ни при чем. Вылезает во всех местах, где есть ожидание со временем (sleep, event(s)). Там, где sleep или ожидание с таймаутом заменил на простой блокирующий event (раздаю события из таймерного хука), проблем не влезает.
Приоритеты прерываний? Вложенные прерывания для кортекса? Кеши в процессоре(сброс DATA не помогал)? Где еще можно поискать затык? Как такое в принципе может возникать?
|
|
|
|
|
May 22 2018, 19:32
|

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

|
Цитата(BAT @ May 22 2018, 18:28)  Приоритеты прерываний? Вложенные прерывания для кортекса? Приоритеты проверьте, конечно. Посмотрите, как у H7 реализован доступ к регистру SHP3. У M0 он разрешён только по словам, а у M3/4 - разрешён побайтный доступ. Если у H7 тоже доступ только по словам, то будет неправильная инициализация приоритетов прерываний. А это может привести к глюкам. ЗЫ. Вот нужный дефайн в порте.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Aug 3 2018, 07:56
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Цитата(AHTOXA @ May 22 2018, 22:32)  Посмотрите, как у H7 реализован доступ к регистру SHP3. Антон, позанудствую чуть-чуть. - STM32H7 - это "особо быстрый" STM на Cortex-M7 - регистр называется SHPR3 - доступ к SCB->SHPRx, везде, кроме M0 / M0+, побайтовый. Но граблю arm знатную подложил...
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Aug 4 2018, 08:10
|

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

|
Я до M7 ещё не добрался (хотя платка лежит, ждёт своего часа), поэтому отвечал просто из общих соображений. Жалко, что автор темы пропал, и мы не знаем, решил он свою проблему или нет. Цитата(esaulenka @ Aug 3 2018, 12:56)  Но граблю arm знатную подложил... Да, помню, пришлось повозиться, вылавливая её
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
Сообщений в этой теме
BAT sleep блоирует поток May 14 2018, 15:50 AHTOXA А у вас нигде случайно не получается вызов sleep(0... May 15 2018, 12:38 BAT Точно нету.
Но есть сборная солянка кода из разны... May 16 2018, 07:29 haker_fox QUOTE (BAT @ May 16 2018, 15:29) Но осадо... May 16 2018, 07:48 dxp Цитата(BAT @ May 16 2018, 14:29) Непосред... May 16 2018, 10:05 BAT Сомневаюсь, что это проблема самой оси. Скорее в п... May 16 2018, 10:15 dxp Цитата(BAT @ May 16 2018, 17:15) for(;;)
... May 16 2018, 10:34 k155la3 Цитата(BAT @ May 22 2018, 16:28) . . . Г... May 22 2018, 16:30 Сергей Борщ Если вы используете openocd, то у нас есть ветка е... May 22 2018, 18:57
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|