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

 
 
> Использование семафоров до старта планировщика
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

Сообщений в этой теме
- turnon   Использование семафоров до старта планировщика   Mar 17 2016, 08:33
- - AleksBak   Цитата(turnon @ Mar 17 2016, 12:33) ... К...   Mar 17 2016, 09:22
|- - turnon   Цитата(AleksBak @ Mar 17 2016, 13:22) А э...   Mar 17 2016, 09:55
|- - AleksBak   Цитата(turnon @ Mar 17 2016, 13:55) Нет, ...   Mar 17 2016, 11:47
|- - 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 Текстовая версия Сейчас: 19th July 2025 - 19:05
Рейтинг@Mail.ru


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