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

 
 
> Использование семафоров до старта планировщика
turnon
сообщение Mar 17 2016, 08:33
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207



При использовании семафоров наткнулся на HardFault и задумался, а можно ли их использовать до старта планирощика?

Или перед использовением (xSemaphoreTake(Recursive) / xSemaphoreGive(Recursive)) нужно проверять xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED ?

Подробности такие. До старта планировщика задач (vTaskStartScheduler()) создается семафор _semaphore = xSemaphoreCreateRecursiveMutex() и потом используется в виде пары:

xSemaphoreTakeRecursive(_semaphore, (portTickType)portMAX_DELAY)
...
xSemaphoreGiveRecursive(_semaphore)

Конечно смысла в семафорах до старта задач нет, до старта задач поток один. Но это унифицированный код, он используется и из задач, и до старта планировщика.

Все работало нормально, но вчера вылез HardFault, трассировка привела к этому участку в queue.c:

if( xTaskResumeAll() == pdFALSE )
{
portYIELD_WITHIN_API();
}

При вызове portYIELD_WITHIN_API() вылетает в HardFault.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AleksBak
сообщение Mar 17 2016, 09:22
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 132
Регистрация: 6-02-16
Из: г. Баку
Пользователь №: 90 364



Цитата(turnon @ Mar 17 2016, 12:33) *
...
Конечно смысла в семафорах до старта задач нет, до старта задач поток один. Но это унифицированный код, он используется и из задач, и до старта планировщика.
Все работало нормально, но вчера вылез HardFault, трассировка привела к этому участку в queue.c:

if( xTaskResumeAll() == pdFALSE )
{
portYIELD_WITHIN_API();
}

При вызове portYIELD_WITHIN_API() вылетает в HardFault.

А это Ваш код? В смысле Вы так придумали или это код совместной работы в команде? А зачем так извращаться вообще? Мне, можно сказать новичку, итак ясно, что при вызове portYIELD_WITHIN_API() работа перейдет к планировщику. А как оно у Вас до сих пор работало интересно? sm.gif Конечно в мире разные бывают любители и пр. Но вот зачем иногда не совсем понятно.


Сообщение отредактировал AleksBak - Mar 17 2016, 09:29
Go to the top of the page
 
+Quote Post
turnon
сообщение Mar 17 2016, 09:55
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207



Цитата(AleksBak @ Mar 17 2016, 13:22) *
А это Ваш код?

Нет, это код из queue.c, привел его для понимания что вызывает HardFault
Go to the top of the page
 
+Quote Post
AleksBak
сообщение Mar 17 2016, 11:47
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 132
Регистрация: 6-02-16
Из: г. Баку
Пользователь №: 90 364



Цитата(turnon @ Mar 17 2016, 13:55) *
Нет, это код из queue.c, привел его для понимания что вызывает HardFault

Да это понятно. Я неправильно выразился - имел ввиду, что код/проект/структуру программы Вы сами придумали или кто-то "заставляет"(совместная команда, код какой задачи закрытый и пр.) именно так поступить (использовать семафоры до старта). Уже тут esaulenka и написал к чему пришел и как получше тут будет.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- turnon   Использование семафоров до старта планировщика   Mar 17 2016, 08:33
|- - turnon   Цитата(AleksBak @ Mar 17 2016, 15:47) Да ...   Mar 17 2016, 13:41
|- - zltigo   QUOTE (turnon @ Mar 17 2016, 15:41) потом...   Mar 17 2016, 13:48
|- - turnon   Цитата(zltigo @ Mar 17 2016, 17:48) Некот...   Mar 17 2016, 13:55
|- - zltigo   QUOTE (turnon @ Mar 17 2016, 15:55) А как...   Mar 17 2016, 14:13
|- - turnon   Цитата(zltigo @ Mar 17 2016, 18:13) Как о...   Mar 17 2016, 14:36
|- - zltigo   QUOTE (turnon @ Mar 17 2016, 16:36) Это с...   Mar 17 2016, 14:50
|- - turnon   Цитата(zltigo @ Mar 17 2016, 18:50) Если ...   Mar 17 2016, 16:33
|- - zltigo   QUOTE (turnon @ Mar 17 2016, 18:33) Не об...   Mar 17 2016, 18:26
|- - turnon   Цитата(zltigo @ Mar 17 2016, 22:26) Ведь ...   Mar 17 2016, 18:49
|- - zltigo   QUOTE (turnon @ Mar 17 2016, 20:49) Это э...   Mar 17 2016, 19:02
|- - turnon   Цитата(zltigo @ Mar 17 2016, 23:02) Потом...   Mar 17 2016, 20:35
|- - zltigo   QUOTE (turnon @ Mar 17 2016, 22:35) Мне к...   Mar 17 2016, 21:05
|- - turnon   Цитата(zltigo @ Mar 18 2016, 01:05) Следу...   Mar 17 2016, 21:43
|- - zltigo   QUOTE (turnon @ Mar 17 2016, 23:43) А где...   Mar 17 2016, 22:02
- - esaulenka   Да, очереди/семафоры/sleep() с остановленным шедул...   Mar 17 2016, 11:17
|- - zltigo   QUOTE (esaulenka @ Mar 17 2016, 13:17) (д...   Mar 17 2016, 12:20
- - SMaster   Я вот жду релиза версии 9.0, в нем запилили возмож...   Apr 8 2016, 11:23
- - zltigo   QUOTE (SMaster @ Apr 8 2016, 14:23) Я вот...   Apr 8 2016, 12:14


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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 12:52
Рейтинг@Mail.ru


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