Смекни!
smekni.com

Программирование контроллера приоритетных прерываний (стр. 6 из 8)

5. Режим специальной маски (Special Mask Mode).

Данный режим позволяет отменить приоритетное упорядочение обработки запросов и обрабатывать их по мере поступления. После отмены режима специальной маски предшествующий порядок приоритетов уровней сохранается.

6. Режим опроса (PollingMode).

В этом режиме аппаратные прерывания не происходят автоматически. Появление запросов на прерывание должно определяться считыванием IRR. Данный режим позволяет так же получить от ПКП информацию о наличии запросов на прерывания и, если запросы имеются, номер уровня с максимальным приоритетом, по которому есть запрос

Программирование контроллера прерываний i8259A

Для вывода информации в ПКП используются 2 порта ввода-вывода. Порт с четным адресом (обычно это порт 20h) и порт с нечетным адресом (обычно 21h). Через эти порты могут быть переданы 4 слова инициализации (Initialization Control Word, ICW1 - ICW4), задающие режим работы ПКП, и 3 операционных управляющих слова (слова рабочих приказов, Operation Control Words, OCW1 - OCW3).

В порт с четным адресом выводятся ICW1, OCW2 и OCW3.

Порт с нечетным адресом используется для вывода ICW2, ICW3, ICW4 и OCW1. Неоднозначности интерпретации данных в этом случае так же не возникает, т. к. слова инициализации ICW2 - ICW4 должны непосредственно следовать за ICW1, выведенным в порт с четным адресом и выводить в промежутке между ними OCW1 не следует, оно не будет опознано контроллером.

Выводом в порт с четным адресом управляющего слова инициализации ICW1 начинается инициализация ПКП. В процессе инициализации контроллер последовательно принимает управляющие слова ICW1 - ICW4. При наличии в системе одного контроллера ICW3 не выводится. Наличие ICW4 определяется содержанием ICW1. При наличии каскада из нескольких ПКП каждый из них инициализируется отдельно.

Для инициализации и управления работой ведомого контроллера используются адреса A0h, A1h. В порт с адресом A0h выводятся ICW1, OCW2 и OCW3. Порт с адресом A1hиспользуется для вывода ICW2, ICW3, ICW4 и OCW1.

При наличии в системе ведомого контроллера слово ICW3 для контроллеров ПКП обязательно.

Формат ICW1 следующий:

Биты ICW1 Назначение и содержание
0 1 – управляющее слово ICW4 будет присутствовать в данной последовательности приказов
1 0 – каскадное подключение ПКП (ICW3 будет в последовательности)1 – одиночное подключение ПКП (ICW3 не будет)
2 0 – не используется
3 0 – прерывание по перепаду сигнала
4 1 – признак ICW1
5..7 0 – не используется

ICW2 – определение базового адреса:

Биты ICW2 Назначение и содержание
0..2 0 – не используется
3..7 Бит для задания номера базового вектора

Управляющее слово ICW2 задает номер вектора прерывания, процедуры обработки прерываний, для аппаратного прерывания irq0. Вектора обработки аппаратных прерываний располагаются последовательно с адреса 08h, загружаемого в начале работы процессора. Некорректное изменение номера вектора приведет к сбою всей системы.

Формат ICW3 для ведущего контроллера следующий:

Биты ICW3 Назначение и содержание
0..7 1- если ко входу irqN подключен ведомый0- если ко входу irqN подключено внешнее устройство

Формат ICW3 для ведомого контроллера следующий:

Биты ICW3 Назначение и содержание
0..3 Задает номер уровня, на котором работает ведомый контроллер
4..7 0 – не используется

Формат ICW4:

Биты ICW4 Назначение и содержание
0 Тип микропроцессора: 0 – i8080; 1 – i80x86, Pentium
1 1- режим автоматического завершения обработки прерывания, описанный выше0- действует обычное соглашение: процедура обработки аппаратного прерывания должна сама сбрасывать свой бит в ISR.
2 1 – данный контроллер ведущий,0 - данный контроллер ведомый
3 1 – системная шина буферизована0 - системная шина не буферизована
4 0 - устанавливает специальный вложенный режим, применяемый при каскадировании для определения приоритетов запросов от разных контроллеров (Special Fully Nested Mode)
5..7 0

В процессе работы с ПКП вы можете без переинициализации:

- маскировать и размаскировать аппаратные прерывания;

- изменять приоритеты уровней;

- издавать команду завершения обработки аппаратного прерывания;

- устанавливать/сбрасывать режим специальной маски;

- переводить контроллер в режим опроса и считывать состояние регистров ISR и IRR.

Для этого Вам потребуется вывести в порты ПКП одно из трех слов рабочих приказов OCW1 - OCW3.


Формат OCW1 – управление регистром масок IMR:

Биты ОCW1 Назначение и содержание
0..7 0 – разрешить прерывания уровня N1 - запретить прерывания уровня N

Формат OCW2 – управление приоритетом:

Биты ОCW2 Назначение и содержание
0..2 000-nnn – код уровня запроса irq для действий, определяемых разрядами 5-7
3..4 00 – признак OCW2
5 0- режим автоматического EOI1- режим неавтоматического EOI
6..7 Задают операцию в сочетании с 5-м битом:000 – автоматический режим приоритетов с автоматическим EOI001 – сброс бита с максимальным приоритетом в ISR011 – сброс бита в ISR для уровня с кодом nnn100 – установка режима циклической смены приоритета при автоматическом EOI101 – установка режима циклической смены приоритета при неавтоматическом EOI111 - установка режима циклической смены приоритета но относительно бита nnn

Формат OCW3 – общее управление контроллером:

Биты ОCW3 Назначение и содержание
0..1 10 – прочитать содержимое IRR (следующей командой из порта 020h);11– прочитать содержимое ISR (следующей командой из порта 020h);Содержимое IМR доступно постоянно как содержимое порта 021h.
2 1 - переводит контроллер в режим опроса
3..4 Признак OCW3
5..6 11 – установить режим специального маскирования10 – сбросить режим специального маскирования00 или 01 – ничего не менять
7 0

Распределение и приоритеты аппаратных прерываний в архитектуре АТ

Уровень Контроллер Источник прерываний Приоритет уровня
Irq0 Ведущий Таймер 2
Irq1 Ведущий Клавиатура 3
Irq2 Ведущий Выход INT ведомого
Irq8 Ведомый Часы реального времени 4
Irq9 Ведомый Вход для устройства расширения 5
Irq10 Ведомый Вход для устройства расширения 6
Irq11 Ведомый Вход для устройства расширения 7
Irq12 Ведомый Вход для устройства расширения 8
Irq13 Ведомый Ошибка сопроцессора 9
Irq14 Ведомый Контроллер жесткого диска 10
Irq15 Ведомый Вход для устройства расширения 11
Irq3 Ведущий Вход для устройства расширения (последовательный порт СОМ2) 12
Irq4 Ведущий Вход для устройства расширения (последовательный порт СОМ1) 13
Irq5 Ведущий Вход для устройства расширения (параллельный порт LPT2) 14
Irq6 Ведущий Контроллер гибкого диска 15
Irq7 Ведущий Вход для устройства расширения (параллельный порт LPT1) 16

Программирование контроллера прямого доступа памяти

Программирование контроллера ПДП

Цель работы:

Исследование принципа программного управления микросхемы, контроллера прямого доступа памяти (ПДП) i8237А с помощью ПК, исследование различных режимов работы ПДП.

Прямой доступ к памяти – DMA (DirectMemoryAccess) метод обмена данными периферийного устройства с памятью без участия процессора. В режиме прямого доступа к памяти процессор инициализирует контроллер прямого доступа к памяти – задает начальный адрес, счетчик и режим обмена, после чего освобождается. Сам обмен производит контроллером ПДП, что обеспечивает высокоскоростной обмен данными между устройствами ввода-вывода и ОЗУ без использования центрального процессора, это позволяет освободить процессор для выполнения вычислений параллельно с обменом и независимо от него. Наиболее часто возможности ПДП используются при работе с дисковыми накопителями, однако реализовано использование ПДП рядом других устройств. Ощутимые преимущества дает использование ПДП в процессе обмена с устройствами, принимающими или передающими данные достаточно большими порциями с высокой скоростью.

Четырехканальный контроллер ПДП i8237А имеет 16-разрядные регистры адреса и счетчики, что обеспечивает возможность программирования передачи блока данных размером до 64 Кбайт. Для обеспечения доступности адресного пространства памяти размером в 1 Мбайт применили внешние 4-разрядные регистры страниц DMA, отдельные для каждого канала. В этих регистрах хранятся биты адреса А[19:16], а битами А[15:0] управляет контроллер.