Здавалка
Главная | Обратная связь

Специальная ротация приоритетов



Специальная ротация предоставляет пользователю широкие возможности обработки с использованием прерываний. Она целесообразна в тех случаях, когда необходимо изменять приоритеты прерываний от отдельных устройств. В отличие от автоматической ротации специальная ротация полностью управляется пользователем, т. е. пользователь сам выбирает распределение приоритетов между уровнями прерываний. Это можно сделать во время выполнения основной программы или сервисных программ. Пользователь располагает двумя командами специальной ротации: "Установить приоритет" и "Ротация по специальной команде EOI".

В базовой конфигурации PC AT специальная ротация приоритетов неиспользуется.

Команда установки приоритета

 
 

Команда установки приоритета позволяет программисту присвоить определенному уровню IRQ низший приоритет (дно приоритетного кольца). Все остальные уровни получат приоритеты в соответствии с режимом полного вложения с учетом присвоенного низшего приоритета.

 

Рис. 6.27. Пример действия команды установки приоритета

 

На рис. 6.27 показаны состояние ISR и относительные приоритеты уровней прерывания до и после выполнения команды установки приоритета. Выполняются две программы обслуживания прерываний. Поскольку IRQ2 обладает высшим приоритетом, обязательно выполняется соответствующая программа обработчик. Во время выполнения этой программы приоритеты изменяются так, что высший приоритет получает IRQ5. Для этого в 8259A просто посылается команда установки приоритета. В данном случае эта команда назначает IRQ4 низший приоритет. Хотя IRQ7 обладает теперь высшим приоритетом по сравнению с IRQ2, он не будет подтвержден до завершения программы по IRQ2 (посредством EOI). Это объясняется тем, что приоритеты определяются только после запроса прерывания или последовательности подтверждения прерывания. Если в ходе выполнения программы по IRQ2 появится запрос с более высоким приоритетом, то приоритеты будут определены и высший приоритет будет подтвержден.

По завершении выполнения программы-обработчика прерываний, в которой используется команда установки приоритета, должна быть выдана надлежащая команда EOI. Обычная команда EOI не должна использоваться в той программе-обработчике, где имеется команда установки приоритета. Это объясняется тем, что обычная команда EOI сбрасывает разряд ISR, соответствующий высшему приоритету, который при использовании команды установки приоритета не всегда соответствует последней программе-обработчика. С другой стороны, автоматический режим EOI можно использовать с командой установки приоритета. Дело в том, что в этом случае обычная команда EOI выполняется до того, как может быть выдана команда установки приоритета. В большинстве случаев, когда в сервисной программе используется команда установки приоритета, лучше всего применить специальную команду EOI. При этом сброс в ISR конкретного разряда завершаемой программы исключает путаницу.

В базовой конфигурации PC AT команда установки приорита не используется.

Ротация по специальной команде EOI

Ротация по специальной команде EOI представляет собой сочетание команды установки приоритета и специальной команды EOI. Как и при команде установки приоритета, указанному уровню IRQ присваивается низший приоритет. Как и при специальной команде EOI, в ISR будет сброшен указанный уровень. Таким образом, в режиме ротации по специальной команде EOI объединяются функции двух команд.

Этот режим целесообразен, когда не нужно изменять приоритеты IRQ до окончания выполнения программы по прерыванию.

В базовой конфигурации PC AT ротация по специальной команде EOI не используется.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.