PREEMPTION в файле FreeRTOSConfig.h
должно быть равным 0 и каждый обработчик
прерывания должен содержать явный вызов
планировщика portYIELD_FROM_ISR().
Выводы
На этом изучение задачи как базовой еди-
ницы программы, работающей под управле-
нием FreeRTOS, можно считать завершенным.
Каждая задача представляет собой отдельную
подпрограмму, которая работает независимо
от остальных. Однако задачи не могут функ-
ционировать изолированно. Они должны об-
мениваться информацией и координировать
свою совместную работу. Во FreeRTOS основ-
ным средством обмена информацией между
задачами и средством синхронизации задач
является механизм очередей.
Поэтому следующие публикации будут
посвящены очередям. Подробно будет рас-
сказано:
как создать очередь;
•
каким образом информация хранится
•
и обрабатывается очередью;
как передать данные в очередь;
•
как получить данные из очереди;
•
как задачи блокируются, ожидая возмож-
•
ности записать данные в очередь или по-
лучить их оттуда;
какой эффект оказывает приоритет задач
•
при записи и чтении данных в/из очереди.
n
Литература
1. Курниц А. FreeRTOS — операционная система
для микроконтроллеров // Компоненты и тех-
нологии. 2011. № 2–4.
2. Barry R. Using the freertos real time kernel:
A Practical Guide. 2009.
3.
http://www.freertos.org
4. http://en.wikipedia.org/wiki/Rate-monotonic_
scheduling
5.
http://www.4stud.info/rtos/lecture3.html
6.
http://ru.wikipedia.org/wiki/Реентерабель-
ность
7.
http://ru.wikipedia.org/wiki/Malloc
8.
http://peguser.narod.ru/translations/files/tlsf.
pdf
рис. 7. Разделение процессорного времени между задачами при кооперативной многозадачности
при явном вызове taskYIELD()
|