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

 
 
> freertos vCoRoutineSchedule, freertos vCoRoutineSchedule
Bethowen81
сообщение Jun 8 2011, 05:56
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 16-06-09
Из: Воронеж
Пользователь №: 50 324



Можете подсказать по vCoRoutineSchedule
я вызываю планировщик vCoRoutineSchedule не в vApplicationIdleHook а в обычной вытесняющей Task

void vTask( void *pvParameters )
{
while(1)
{
vCoRoutineSchedule();
}
}

работает нормально т.е кооперативные Task работают вместе с вытесняющими Task
вопрос: можно ли вызывать планировщик vCoRoutineSchedule таким образом, нет ли каких либо подводных камне?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Bethowen81
сообщение Jun 9 2011, 13:05
Сообщение #2





Группа: Новичок
Сообщений: 8
Регистрация: 16-06-09
Из: Воронеж
Пользователь №: 50 324




1. Если я запускаю кооперативный планировщик (vCoRoutineSchedule) в вытесняющей Task1 и с таким же приоритетом есть еще вытесняющая Task2, то они будет делить время работы.В отличии от Hook где vCoRoutineSchedule запускаеться только в том случае когда все задачи приостановлены. А в случае vCoRoutineSchedule в Task1 получаеться можно приостановить кооперативный планировщик(vCoRoutineSchedule) и еще воспользоваться Hook функцией.
2. По поводу затрат памяти. Да нет никаких затрат. Как я понимаю просто в случае где кооперативный планировщик (vCoRoutineSchedule) в вытесняющей Task1, память кооперативных программ будет распалагаться в стеке RTOS, а вот в
случае vCoRoutineSchedule в Hook наверное в стеке компилятора.
Вопрос как раз в этом случае. Не будет ли проблем при использовании кооперативным планировщиком (vCoRoutineSchedule) запущеном в вытесняющей Task1 проблем с памятью???!!!
3. Затраты на время будет + работа кооперативного планировщика(vCoRoutineSchedule).

Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 9 2011, 13:37
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Bethowen81 @ Jun 9 2011, 16:05) *
1. Если я запускаю кооперативный планировщик (vCoRoutineSchedule) в вытесняющей Task1 и с таким же приоритетом есть еще вытесняющая Task2, то они будет делить время работы

Между собой не отдавая другим задачам более низкого приоритета. Посему, как ни крути, в том виде, как Вы написали это самая НИЗКОПРИОРИТЕТНАЯ задача должна быть. Принципиально это ничем не отличается от уже имеющейся Idle, которая в Вашем случае просто никогда не получит управление. А в ней, между прочим, бывают кроме вызова Hook и другие полезные действия.
QUOTE
А в случае vCoRoutineSchedule в Task1 получаеться можно приостановить кооперативный планировщик...

Его и так можно остановить, при желании.
QUOTE
2. По поводу затрат памяти. Да нет никаких затрат.

Вы создали ЛИШНЮЮ задачу не воспользовавшись уже имеющейся. Бесполезные затраты ресурсов на эту лишнюю задачу есть.
QUOTE
Как я понимаю просто в случае где кооперативный планировщик (vCoRoutineSchedule) в вытесняющей Task1, память кооперативных программ будет распалагаться в стеке RTOS, а вот в случае vCoRoutineSchedule в Hook наверное в стеке компилятора.

Ой, как запущено sad.gif. Слова "стек RTOS" и "стек компилятора" - полная бессмыслица sad.gif. Начните с азов - у каждой задачи свой Task Control Block и Stack.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post



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

 


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


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