- •Монопольные (standalone) приложения
- •Периодические прикладные задачи
- •Таймер запросы на прерывания от таймера Управляющая программа реализует «Часы», отслеживает временные
- •Асинхронные (спорадические) задачи
- •События
- •Приложение – обработчик прерывания
- •Версия 0.1
- •Проблема:
- •Работа печати
- •Работа печати
- •Монопольное приложение (3 задачи)
- •Пример для N задач. Описание задачи
- •Функции, реализующие действия задачи
- •Циклический исполнитель
- •Погрешность отсчета времени
- •Разработка монопольных приложений требует:
Монопольные (standalone) приложения
Библиотека |
|
Монопольное приложение |
|
Управляющая |
драйверов |
|
|
программа |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
Целевая платформа |
|
|
|
|
|
|
|
Пример функций типового приложения
•Часы
•Прикладные задачи (Управление температурой, Контроль работоспособности,
•Диспетчеризация)
Управление прикладными задачами (циклический исполнитель, обработка асинхронных событий)
Особенности
•монопольно используют ресурсы целевой платформы;
•поддерживаются библиотекой драйверов устройств
•могут включать в себя самостоятельные процедуры обработки прерываний и действия по вводу/выводу;
•сильно зависят от платформы
4. Standalone приложения |
2015 v.01 |
1 |
Периодические прикладные задачи |
||
|
|
Задачи |
flag1 |
flag2 |
«не реального |
|
|
времени» |
Управление |
Отображение |
«Циклический |
температурой |
информации |
Исполнитель» |
«Управляющая |
|
|
|
|
|
|
||
|
|
Периоды (Т1, Т 2) |
|
|||||
программа» |
|
|
|
|||||
|
|
|
|
|
|
|||
Прерывание |
|
|
|
|
|
|
|
|
Часы |
|
|
Возврат |
|||||
от таймера |
|
|
|
|||||
|
|
|
||||||
|
|
|
|
|
|
|
•Заданы периоды активизации прикладных задач (T)
•Программа «Часы» обрабатывает прерывания от аппаратного таймера и ведет отсчет временных интервалов
•При совпадении временного интервала с периодом активизации прикладной задачи flag этой задачи устанавливается в значение true
•«Исполнитель» циклически анализирует состояния флагов задач, активизируя их при flag=true устанавливая flag=false после выполнения задачи
4. Standalone приложения |
2015 v.01 |
2 |
Таймер запросы на прерывания от таймера Управляющая программа реализует «Часы», отслеживает временные
интервалы и активизирует прикладные задачи Управление температурой период активизации 2 такта Отображение информации период активизации 3 такта
Таймер
Управляющая
программа
Управление
температурой
Отображение
информации
t t
Задержка периода активизации
Сигнал запроса на прерывание от таймера имеет наивысший приоритет среди других запросов на прерывание
4. Standalone приложения |
2015 v.01 |
3 |
Асинхронные (спорадические) задачи
«Управляющая |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|||
программа» |
|
|
Периоды (Т1, |
Т 2) |
|
||||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
Прерывание |
|
|
|
|
|
|
|
|
|
Часы |
|
|
|
Возврат |
|||||
от таймера |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
Событие |
Контроль |
Возврат |
|
работоспособности |
|||
(ДД) |
|||
компрессора |
|
||
|
|
||
Событие |
Ввод команд |
Возврат |
|
(клавиатура) |
|||
|
|
•Прикладные задачи («Контроль работоспособности» и «Ввод команд») реализуются как процедуры обработки прерываний . Но приоритет их ниже, чем прерывания от таймера
5. Standalone приложения |
2015 v.01 |
4 |
События
Контроль
работоспособности
Ввод команды ооператора
Задача «Часы»
T 1 |
2 |
T |
T |
1 |
1 |
1 |
2
T |
T |
T |
События:
Т –Запрос на прерывание от таймера 1 - Сигнал от датчика давления 2 - Ввод команды с клавиатуры
4. Standalone приложения |
2015 v.01 |
5 |
УСО
ОУ Печать
Управление:Период = 1 s
WCET < 0.3 ms |
||
Функции |
||
• |
Измерение |
|
• |
Принятие решения |
|
Вывод воздействия |
||
• |
||
|
Пример
Таймер
Управление
Запрос на печать
Запрос на печатьПериод = 180 sWCET < 0,05 msФункции
Запуск печати:
ВыводНаПечать(Данное: X)
4. Standalone приложения |
2015 v.01 |
6 |
Приложение – обработчик прерывания
|
|
Приложение. |
«Циклический |
|
|
|
Исполнитель» |
||
Генератор |
(Фактически |
|
||
1.1931816 МГц |
является ISR |
T==t1 |
||
|
|
таймера) |
|
|
|
|
|
|
Задача_1 |
Аппаратный |
|
|
|
|
|
таймер, |
Прерывание |
|
|
делитель на 11931 |
|
|
T==tn |
|
|
|
|
ti |
|
|
|
Часы |
|
|
|
|
|
|
Задача_n |
|
|
Возврат |
|
|
Таймер |
ti+1= ti+10мс |
|
|
|
|
|
|
|
|
4. Standalone приложения |
2015 v.01 |
|
7 |
|
|
|
Версия 0.1
Таймер
ОУ
Печать
Прерывание |
Таймер: |
Запрос на прерывание каждую секунду |
Часы;
if (flag_1){ Управление; flag_1:= false;}
if (flag_2) { ВыводНаПечать(X);
flag_2:= false;} while(true)do end;
Часы:
|
Часы |
|
реализует два счетчика, значения которых |
|
|
|
увеличиваются на 1 при каждом обращении; |
||
|
|
|
когда |
|
|
|
|
|
|
|
Управление |
|
счетчик_1 |
= 1 flag_1:= true |
|
|
|
счетчик_2 |
= 180 flag_2:= true |
|
|
|
||
|
Драйвер |
|
Драйвер печати: |
|
|
печати |
|
||
|
|
|
Библиотечная программа |
|
|
|
|
4. Standalone приложения |
2015 v.01 |
8 |
Проблема:
Вывод на печать время от времени “зависает”. Версия 0.1 – что-то не так!
Необходимо более детальное рассмотрение работы системы
4. Standalone приложения |
2015 v.01 |
9 |
Работа печати
|
X1 X2 |
Xn |
«Исполнитель» |
|
|
Запрос на |
1 |
Драйвер |
печать |
печати |
|
|
2 |
Секция |
|
запуска |
|
|
|
|
3 |
4 |
Прерывание |
|
|
|
|
|
Передача Xi |
|
5 |
|
7 |
6 |
Возврат |
|
1.Запрос: ВыводНаПечать(Данное: X)
2.Секция запуска считывает Х в буфер вывода, пересылает порцию Х1 на устройство и возвращает управление
3.«Исполнитель» и устройство работают параллельно
4.Устройство закончило печать Х1,и формирует запрос на прерывание
5.Обработчик прерывания драйвера пересылает Х2 на устройство
6.Возврат в точку прерывания
7.«Исполнитель» и устройство работают параллельно
8.И так далее для Х2 Х3 Х4 ...
5. Standalone приложения |
2015 v.01 |
10 |