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

 
 
> Поясните смысл прерываний для FreeRTOS, пользую 3 года, но до сих пор не понимаю
kan35
сообщение Nov 29 2012, 18:14
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Системный таймер это как бы понятно.
Я использую STM32, там дополнительно еще 2 ISR для FreeRTOS:
xPortPendSVHandler:
vPortSVCHandler:
В них вроде бы переключение контекста. Зачем прерываниями это сделано? Почему 2? Прошу пояснить доходчиво...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
LightElf
сообщение Dec 19 2012, 17:00
Сообщение #2


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

Группа: Участник
Сообщений: 180
Регистрация: 5-04-09
Пользователь №: 47 205



QUOTE (kan35 @ Nov 29 2012, 22:14) *
xPortPendSVHandler:
vPortSVCHandler:

vPortSVCHandler используется один раз - для запуска самой первой задачи. На кортексе для прерываний используется отдельный стек. Вот для того, чтобы на него переключиться и используется инструкция SVC.
xPortPendSVHandler используется для переключения задач во всех остальных случаях. Потому что:
1) этому прерыванию можно назначить самый низкий приоритет - переключение задач не вызовет блокировку обработки важных событий
2) это прерывание асинхронно - можно взвести битик, доделать текущие дела, обработать более приоритетные прерывания и т.д. Не нужно где-то запоминать флажок "надо переключить задачу", выполнять какие-то вызовы, учитывать что требование переключить задачу может проистекать из нескольких источников и т.д.
3) это прерывание можно вызвать программно откуда угодно (из задачи или из обработчика другого прерывания) - переключение контекста в одном месте кода ОС, меньше глюков, проще отладка.
4) это прерывание имеется на любом Кортексе-М - не нужно писать вариации под каждый новый камень

QUOTE (_Артём_ @ Nov 30 2012, 16:55) *
Почему задача не может сама вызвать планировщик? Если ей уже делать нечего?

Чтобы не делать несколько разных точек входа в планировщик (одна для входа из задачи, другая для входа из прерывания, третья из таймера systick).
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 11:42
Рейтинг@Mail.ru


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