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

 
 
> pvPortMalloc, Вызов в прерываниях
M0HAX
сообщение Nov 11 2011, 11:28
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 22-09-08
Пользователь №: 40 378



Можно ли вызывать pvPortMalloc/vPortFree внутри irq-прерывании?
Попытался и получил, что после его вызова в прерывании разрешается irq-прерывание в CPSR со всеми вытекающими печальными последствиями.
Данное прерывание проходит как обычно через сохранение/восстановление контекста задач.
Не нашел в документации, что pvPortMalloc нельзя вызывать из прерываний, или я что-то пропустил?

Сообщение отредактировал M0HAX - Nov 11 2011, 11:51
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aba
сообщение Nov 11 2011, 15:57
Сообщение #2


Участник
*

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



А нельзя ли реализовать алгоритм работы например так?
1 - из прерывания отсылается сообщение задаче.
2 - задача, ожидающая это сообщение уже выделяет память.
В функциях pvPortMalloc/vPortFree используются функции vTaskSuspendAll() и xTaskResumeAll(), последняя разрешает прерывания, я думаю из-за этого могут возникнуть непредвиденные глюки.

Сообщение отредактировал aba - Nov 11 2011, 15:58
Go to the top of the page
 
+Quote Post
BSV
сообщение Nov 11 2011, 19:22
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 541
Регистрация: 11-04-05
Из: Москва
Пользователь №: 4 045



Цитата(aba @ Nov 11 2011, 19:57) *
vTaskSuspendAll() и xTaskResumeAll(), последняя разрешает прерывания, я думаю из-за этого могут возникнуть непредвиденные глюки.
Эти функции предназначены для врЕменной становки и последующего запуска планировщика задач соответственно. Запрещает прерывания макрос portEnterCritical(), разрешает - portExitCritical().
А идея по организации процесса правильная.


--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
Go to the top of the page
 
+Quote Post



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

 


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


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