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] управляет контроллер.