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

 
 
> 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
Ответов
M0HAX
сообщение Nov 14 2011, 05:19
Сообщение #2


Участник
*

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



Согласен, что так лучше - не надо будет в прерывании долго сидеть. Но если сделать внутри прерывания перед вызовом pvPortMalloc/vPortFree операцию
Код
taskENTER_CRITICAL()
, а после вызова pvPortMalloc/vPortFree
Код
if (ulCriticalNesting) ulCriticalNesting--;
, то все работает и внутри прерывания. Но это изврат, не спорю.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 04:04
Рейтинг@Mail.ru


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