
- •Министерство труда, занятости и трудовых ресурсов Новосибирской области
- •Разработал: а.А.Холин
- •1. Цели:
- •2 Оборудование, аппаратура, материалы, инструменты, документация.
- •3 Форма организации.
- •4 Инструктаж.
- •5 Порядок выполнения.
- •6. Методические рекомендации.
- •7. Форма отчета.
- •8. Контрольные вопросы.
- •9. Критерии оценки.
6. Методические рекомендации.
Для управления аппаратными прерываниями во всех типах ПЭВМ IBM PC используется микросхема программируемого контроллера прерываний Intel 8259. Поскольку в каждый момент времени может поступить не один запрос микросхема имеет схему приоритетов. Имеется 8 уровней приоритетов, максимальный приоритет соответствует уровню 0. Добавочные 8 уровней ( Уровень 8 - Уровень 15 ) обрабатываются второй микросхемой 8259, этот второй набор уровней имеет приоритет между уровнями 2 и 3. Запросы на прерывания по уровням 0 - 7 соответствуют векторам прерывания от INT 8 до INT 0F. Запросы на прерывания по уровням 8 - 15 обслуживаются векторами INT 70 - INT 77. Исключением из общего правила является аппаратное немаскируемое прерывание NMI которое имеет максимальный приоритет, поскольку запрос минуя контроллер прерываний поступает непосредственно на процессор.
Микросхема 8259 имеет три однобайтовых регистра, которые управляют восемью линиями аппаратных прерываний. Регистр запроса на прерывание <IRR> устанавливает соответствующий бит, когда на линии прерывания уровень сигнала изменяется от низкого к высокому. Затем микросхема автоматически проверяет, не обрабатывается ли другое прерывание. При этом она запрашивает информацию регистра обслуживания <ISR>. Дополнительная цепь отвечает за схему приоритетов. Перед вызовом прерывания проверяется регистр маски прерываний <IMR>, чтобы узнать разрешено ли в данный момент прерывание данного уровня.
Если необходимые условия обработки запроса прерывания выполнены то контроллер 8259 выдает процессору запрос на обработку, процессор завершает выполнение текущей команды и проверяет бит разрешения прерываний в слове состояния процессора. Если этот бит установлен, то процессор сохраняет в стеке текущий физический адрес прерываемой программы, слово состояния процессора и выдает контроллеру разрешение на прерывание.
Получив от процессора разрешение, контроллер выдает на шину данных адрес вектора прерываний. Процессор использует этот адрес, чтобы определить точку входа в программу обработки прерываний. Когда программа обработки прерываний завершается, необходимо командой OCW2/EOI в контроллере 8259 сбросить бит регистра ISR с максимальным приоритетом. В противном случае обработка прерываний для уровня с текущим приоритетом и уровней с более низким приоритетом будет блокирована.
Доступ к внутренним регистрам контроллеров осуществляется через порты 20h, 21h для главного контроллера и A0h, A1h - для подчиненного. Формат команды обращения показан на рис. 5.6. На этапе начального пуска программой BIOS выполняется инициализация контроллера прерывания. В процессе инициализации устанавливаются значения векторов прерываний и дисциплина обслуживания приоритетных уровней.
В лабораторной работе используется аппаратное прерывание INT 8 от микросхемы таймера. Стандартный обработчик данного прерывания поддерживает системные часы операционной системы MS DOS, контролирует длительность паузы при выполнении операций с гибким диском, а также вызывает программное прерывание INT 1C, предназначенное для подключения обработчиков прерываний разработанных пользователем.
Вектора прерываний, используемые операционной системой, образуют таблицу векторов и располагаются в начальной области оперативной памяти, начиная с нулевого физического адреса. Таблица векторов занимает 1К оперативной памяти и содержит 256 векторов. На каждый вектор отводится четыре байта. Вектор прерываний имеет следующий формат в оперативной памяти:
Формат вектора прерываний:
+2
0
CS - сегмент точки входа в обработчик прерываний
|
IP - смещение точки входа в обработчик прерываний |
Главный I8259А
|
Уровень 0 Уровень 1
|
Уровень 2 Уровень 3 Уровень 4 Уровень 5 Уровень 6 Уровень 7
|
INT 9
INT B
INT C
INT D
INT E
INT F
INT 2
INT
8
Системные часы
Клавиатура
Последовательный интерфейс COM1
Последовательный интерфейс COM2
Параллельный интерфейс LPT2
Дискетные устройства
Параллельный интерфейс LPT1
NMI
|
Ошибка четности
Подчиненный I8259А
|
Уровень 8
|
Уровень 9 Уровень 10 Уровень 11 Уровень 12 Уровень 13 Уровень 14 Уровень 15
|
--- INT 70
--- INT 71
--- INT 72
--- INT 73
--- INT 74
--- INT 75
--- INT 76
--- INT 77
CMOS - часы реального времени
резервировано
Арифметический процессор 80287
Контроллер жесткого диска
резервировано
Pис. 1. Структурная схема системы прерываний IBM PC.
IR7 IR6
IR5 IR4 IR3 IR2 IR1 IR0
|
Регистр состояния |
|
команд |
|
DA<7. . . 0> DA<7. . . 0>
Рис. 2. Программная модель контроллера I8259А.
IR<7. . . 0> - запросы прерываний;
DA<7. . . 0> - шина данных;
IRR - регистр запросов прерываний;
ISR - регистр обслуживаемых прерываний;
IMR - регистр маски прерываний.
7 6 5 4 3 2 1 0
|
IR6 |
IR5 |
IR4 |
IR3 |
IR2 |
IR1 |
IR0 |
1 - запрос
блокирован,
0 - маска
сброшена.
Рис. 3. Формат регистра маски: команда OCW1 доступен для чтения и записи
Порт 21h - для главного контроллера;
Порт A1h - для подчиненного контроллера.
7 6 5 4 3 2 1 0
|
SE0I |
EOI |
0 |
0 |
L2 |
L1 |
L0 |
Адрес
входа IR
1
- Сбросить бит ISR с максимальным приоритетом
1
- Поле L<2. . .0> не используется
1
- Циклический приоритет
Рис. 4. Формат команды управления OСW 2.
7 6 5 4 3 2 1 0
|
ESMM |
SMM |
0 |
1 |
P |
ERIS |
RIS |
ESMM SMM
0 |
* |
Не использ. |
1 |
0 |
Читать IRR |
1 |
1 |
Читать ISR |
Не использ. |
0 |
* |
Сбросить SMM |
1 |
0 |
Установить SMM |
1 |
1 |
1 - Опросить
номер обслужи-
ваемого прерывания.
Рис. 5. Формат команды управления OСW 3.
7 6 5 4 3 2 1 0
|
|
|
|
|
L2 |
L1 |
L0 |
код
запроса
111 - при D7=0
1 -
наличие запроса
Рис. 6. Формат слова состояния прерываний в режиме опроса.