Тема 1. ОСРВ, ее особенности
1.1 Основы использования ОСРВ в управляющей программе.
1.1.1 Требования реального времени.
1.1.2 Примеры ситуаций, в которых ОСРВ облегчает проектирование.
1.1.3 Обзор двух малых ОСРВ. Конфигурирование ОСРВ.
1.2 Как выглядит ОСРВ для программиста.
1.2.1 Почему ОСРВ используется в формате исходных текстов.
1.2.2 Какова структура простейшей многопоточной программы при использовании ОСРВ.
1.2.3 Системные сервисы для создания Задачи.
Практические занятия
Простой проект под ОСРВ.
Структура программы.
Особенности и типовые приемы отладки.
Тема 2. Управление Задачами и временем в управляющей программе
2.1 Проектирование многозадачной программы.
2.1.1 Обоснование выбора количества Задач.
2.1.2 Создание Задач: последовательность действий и их особенности в ОСРВ microC/OS-II.
2.1.3 Создание нескольких Задач на базе одной функции: для чего и как.
2.2 Выбор приоритетов Задач
2.2.1 Приоритеты и алгоритм планирования и диспетчеризации.
2.2.2 Как задаются приоритеты в ОСРВ microC/OS-II.
2.3 Приостановка/возобновление Задачи: для чего и как это делается.
2.3.1 Понятие состояния Задачи.
2.3.2 Системные сервисы для изменения состояния Задачи.
2.4 Управление временем.
2.4.1 Тайм-ауты в Задачах. Что такое «программные таймеры».
2.4.2 Сервисы управления временем.
Практические занятия
Программа многоканальных измерений с использованием многозадачности.
Тема 3. Межзадачная синхронизация
3.1 Цели межзадачной синхронизации
3.1.1 Когда требуется синхронизация.
3.1.2 Критические секции, управление диспетчеризацией, динамическое изменение приоритета, понятие синхронизирующего сервиса
3.2 Сервисы синхронизации: семафоры.
3.2.1 Способы использования семафоров.
3.2.2 Конфликты за ресурс.
3.2.3 Разные способы использования двоичных и счетных семафоров.
3.2.4 Недостатки семафоров: инверсия приоритетов и тупики.
3.3 Сервисы синхронизации: мьютексы.
3.3.1 Протоколы избегания инверсии: наследование приоритета в мьютексах.
Практические занятия
Использование семафоров и мьютексов для ограничения доступа к коммуникационному интерфейсу в программе многоканальных измерений.
Тема 4. Синхронизация с множественными событиями. Флаги событий
4.1 Когда это требуется.
4.1.1 Понятие о синхронизации с комплексным событием.
4.1.2 Пример комплексного события
4.2 Объект синхронизации «группа флагов событий» в ОСРВ microC/OS-II.
4.2.1 Реализация «групп флагов»: свойства и возможности.
4.2.2 Пример использования в программе многоканальных измерений.
4.3 Флаги событий в FreeRTOS.
4.3.1 Аналогии и различия флагов событий по сравнению с microC/OS-II.
Практические занятия
Пример использования «группы флагов» в программе опроса матричной клавиатуры.
Тема 5. Межзадачная коммуникация и сервисы коммуникации
5.1 Сервисы межзадачной коммуникации: «почтовые ящики».
5.1.1 Реализация и использование «почтовых ящиков» в microC/OS-II.
5.1.2 Как выявить переполнение «ящика» и как избежать потери данных
5.2 Сервис «очередь сообщений»
5.2.1 Реализации «очереди» в microC/OS-II.
5.2.2 Как выбрать необходимый размер «очереди».
5.2.3 Преимущества и недостатки «очередей» в сравнении с «ящиками».
5.3 Примеры использования объектов коммуникации
5.3.1 Аналогии и различия межзадачной коммуникации в программt под microC/OS-II и под FreeRTOS
Практические занятия
Инкапсуляция передаваемых данных в «почтовый ящик в программе многоканальных измерений.
Как «очередь сообщений» помогает избежать потери данных при межзадачной коммуникации.
Тема 6. Прерывания под ОСРВ. Портирование ОСРВ
6.1 Обработка прерываний в программе с многозадачностью.
6.1.1 Когда целесообразно помещать код в обработчик прерывания.
6.1.2 Как обрабатывается прерывание в ОСРВ microC/OS-II и как в FreeRTOS.
6.1.3 Разделение кода между Обработчиком и Задачей.
6.1.4 Выбор приоритетов для Обработчиков и Задач.
6.2 Управление приоритетами под ОСРВ на ядре Cortex-M
6.2.1 Разница в программе при использовании microC/OS-II и в FreeRTOS
6.3 Сложная управляющая программа под ОСРВ Разбор и сравнение сложной программы, реализованной под microC/OS-II и в FreeRTOS.
6.3.1 Обсуждение преимуществ и недостатков.
Практические занятия
Разбор программы, в которой использование пользовательского прерывания оказывается полезным.
Тема 7. Портирование ОСРВ
7.1 Когда требуется портирование.
7.1.1 Сравнение платформо-зависимой части ОСРВ для двух рассмотренных систем.
7.1.2 Какая часть кода не может быть написана на Си и требует использования уровня Ассемблера.
Практические занятия Не предусмотрены