14. Контроллер прерываний i8259A
Общая функциональная схема контроллера прерываний.
Основные функции контроллера:
1. Фиксация запросов на прерывания от восьми внешних источников.
2. Программное маскирование поступающих запросов.
3. Присвоение фиксированных или циклически изменяемых приоритетов входам контроллера, на которые поступают запросы.
4. Определение адреса и инициация вызова процедуры обработки поступившего аппаратного прерывания.
Назначение основных устройств и регистров ПКП.
- контроллер (устройство) управления;
- схема каскадирования;
- регистр фиксации поступления запросов на прерывания IRR;
- регистр маскирования запросов на прерывания IMR;
- регистр состояния исполнения запроса на прерывание ISR;
- регистр управляющего слова ICW;
- регистр операционного управления OCW.
ПКП может находиться в двух основных состояниях: настройки и обслуживания запросов на прерывания.
В состоянии настройки контроллер принимает управляющие слова инициализации (Initialization Command Words, ICW).
|
|
В состоянии обслуживания - операционные управляющие слова (Operation Control Words, OCW).
Порядок программирования ПКП:
Для ввода информации в ПКП используются 2 порта ввода-вывода. Порт с четным адресом (20h/А0h) и порт с нечетным адресом (21h/А1h). Через эти порты могут быть переданы 4 слова инициализации, (ICW1- ICW4), задающие режим работы ПКП, и 3 операционных управляющих слова (слова рабочих приказов OCW1 - OCW3).
В порт с четным адресом выводятся ICW1, OCW2 и OCW3, а в порт с нечетным адресом – ICW2, ICW3, ICW4 и OCW1.
Формат слов инициализации
Формат ICW1
Формат ICW2
Величина смещения номера вектора от номера аппаратного прерывания
Формат ICW3
Для ведущего контроллера показывает к каким входам IRQn подключен ведомый (каскадируемый) контроллер –
для ведущего контроллера (2)
Для ведомого контроллера, работающего на уровне 1
для ведомого контроллера (1)
Формат ICW4
завершение инициализации
0 – тип центрального процессора
1 – режим автоматического завершения
2 – равен 1 для ведомого контроллера
3 – режим буферизации
4 – вложенный режим определения приоритетов ПКП
В процессе работы ПКП может быть перепрограммирован:
- допускается маскировать и размаскировать аппаратные прерывания;
- допускается изменять приоритеты уровней;
- можно давать команду завершения обработки аппаратного прерывания;
- допускается устанавливать/сбрасывать режим специальной маски;
- разрешен перевод контроллера в режим опроса и считывания состояния регистров ISR и IRR;
Для этого используется одно из слов рабочих приказов OCW1 - OCW3.
Форматы слов рабочих приказов
Формат OCW1
Единичное значение одного из битов М0 - М7 означает, что прерывания соответствующего уровня (IR0 - IR7) маскируются и не будут обрабатывать-ся контроллером.
|
|
Четвертый бит у ICW2, ICW3, ICW4 и OCW1 не является определяющим, т.к. все эти слова вводится в порт с нечетным номером (А0=1) и используются все биты байта.
Формат OCW2 - Порядок завершения аппаратного прерывания
Процедура обработки аппаратного прерывания должна перед своим завершением очистить свой бит в ISR выводом команды завершения обработки прерывания (End Of Interrupt, EOI).
Существует два варианта команды EOI: обычный и специфицированный EOI. Обычный EOI очищает бит в ISR, соответствующий прерыванию с максимальным приоритетом. Специфицированный EOI (R=0, SL=1, EOI=1, L0 - L2 равно номеру уровня прерывания) очищает в ISR бит, соответствующий прерыванию с номером, указанным в L0 - L2 независимо от его приоритета.
Формат OCW3 - Изменение режима и разрешение опроса IRR и ISR.
Единичное значение бита Р (бит опроса, Polling Bit) переводит контрол-лер в режим опроса. Если после этого считать данные из порта с четным адресом, получим байт следующего содержания:
Если I = 1, значит имеются запросы на прерывания и тогда L0 - L2 - это номер уровня с наивысшим приоритетом, по которому имеется запрос на прерывание.
Если P=0, можно считать информацию из ISR или IRR. Для этого необходимо дать команду чтения ISR или IRR и затем считать значение из порта с нечетным адресом.