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

Команды инициализации (ICW)



Форматы команд инициализации приведены на рис. 6.16 - 6.20.

 
 

Рис. 6.17. Формат ICW2

 
 

Рис. 6.18. Формат ICW3 (MASTER)

 

 

 
 

 

Рис. 6.19. Формат ICW3 (SLAVE)

 
 

Рис. 6.20. Формат ICW4

 

Рабочие команды (OCW)

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

OCW1 используется только для операций 8259A, связанных с маскированием. Это слово обеспечивает прямой канал связи с регистром маски прерываний IMR. Процессор может осуществлять чтение или запись IMR через OCW1. Формат OCW1 приведен на рис. 6.21.

 
 

Рис. 6.21. Формат OCW1

 

Разряды OCW1 определяются следующим образом.

M0-M7: используются для управления маскированием входов IRQ. Если разряд Mх установлен в 1, он будет маскировать соответствующий вход IRQ. Если разряд Mx установлен в нуль, то он разрешает распознавание соответствующего входа IRQ. Эти разряды имеют те же значения, когда они читаются процессором для корректировки состояния.

OCW2 используется для окончания прерывания, автоматической ротации и специальной ротации. В зависимости от сочетания разрядов OCW2 выбираются соответствующие режимы и команды (за исключением инициализации AEOI). Формат OCW2 приведен на рис. 6.22.

 
 

Рис. 6.22. Формат OCW2.

 

Разряды OCW2 определяются следующим образом.

L0-L2: используются для указания уровня прерываний (0-7) для операций, выбранных разрядами EOI, SL и R слова OCW2. Указанный уровень будет использован либо для сброса конкретного ISR, либо для установки конкретного приоритета. L0-L2 разрешаются или запрещаются разрядом SL;

EOI: используется для команд окончания прерывания EOI (не в автоматическом режиме EOI). Если разряд EOI установлен в 1, то при выполнении команды EOI будет учитываться состояние разрядов SL и R (см.рис.6.18). Если разряд EOI установлен в нуль, команда окончания прерывания выполняться не будет; SL: используется для выбора конкретного уровня прерывания для данной операции. Если SL установлен в 1, разряды L0-L2 разрешены. Операция, выбранная разрядами EOI и R, будет выполняться на заданном уровне прерывания. Если разряд SL установлен в нуль, разряды L0-L2 запрещены;

R: используется для управления всеми операциями ротации 8259A. Если разряд R установлен в 1, форма ротации приоритетов будет определяться состоянием разрядов SL и EOI. Если разряд R установлен в нуль, ротация выполняться не будет.

OCW3 используется для выдачи различных режимов и команд в 8259A.

Слово OCW3 имеет дело с двумя основными классами операций, связанными с состоянием прерываний и маскированием прерываний. Формат OCW3 приведен на рис. 6.23.

Разряды OCW3 определены следующим образом.

RIS: используется для выбора ISR или IRR для команды чтения регистра. Если RIS установлен в 1, выбирается ISR. Если RIS установлен в нуль, выбирается IRR. Состояние RIS учитывается только в том случае, если разряд RR установлен в 1;

RR: используется для выполнения команд чтения регистра. Если RR установлен в 1, выполняется чтение регистра, а установка RIS определяет, какой регистр будет прочитан. Если RR установлен в нуль, команда чтения регистра не выполняется;

P: используется для выдачи команды опроса. Если P установлен в 1, выдается команда опроса. Если он установлен в нуль, команда опроса не выдается.

 
 

Рис. 6.23. Формат OCW3

 

SMM: используется для назначения режима специального маскирования. Если SMM установлен в 1, будет выбран режим специального маскирования. Состояние разряда SMM учитывается только в том случае, если он разрешен разрядом ESMM.

ESMM: используется для разрешения или запрещения действия SMM. Если ESMM установлен в 1, то SMM разрешен. Если ESM установлен в нуль, то SMM запрещен. Это полезно для предотвращения интерференции установок режимов и команд в OSW3.

 

Инициализация

До начала нормальной работы каждый контроллер 8295A в системе должен быть инициализирован с помощью командных слов инициализации (ICW), содержащих от двух до четырех байтов. ICW используются для установки необходимых условий и режимов работы 8259A. Инициализация контроллера (рис. 6.24) производится только в указанной последовательности, так как эта процедура жестко связана с аппаратурой.

Если в системе несколько контроллеров, то сначала инициализируется MASTER, затем SLAVE.

Типовая программа инициализации контроллеров прерывания имеет вид:

Для MASTER

----------

MOV AL,11h

OUT 20h,AL ;ICW1, режим запуска по фронту LTIM=0, каскадный режим SNLG=0

;IC4=1 - наличие в цепочке инициализации команды ICW4

;D4=1 указывает, что выполняется команда ICW1

MOV AL,8

OUT 21h,AL ;ICW2, устанавливает базовый адрес векторов прерываний в

;диапазоне 8h-Fh

MOV AL,4

OUT 21h,AL ;ICW3, указывает, что SLAVE подключен к IRQ2

MOV AL,1

OUT 21h,AL ;ICW4, установлен режим работы системы (может быть при

;необходимости задан специальный полновложенный режим - SFNM)

 

Для SLAVE

---------

MOV AL,11h ;ICW1, режим запуска по фронту LTIM=0, каскадный режим SNLG=0

OUT A0h,AL ;IC4=1 - наличие в цепочке инициализации команды ICW4

;D4=1 указывает, что выполняется команда ICW1

MOV AL,70h ;ICW2, устанавливает базовый адрес векторов прерываний в

;диапазоне 70-77h

OUT A1h,AL

MOV AL,2 ;ICW3, задает код SLAVE в системе (для каскадирования

OUT A1h,AL ;использован IRQ2)

MOV AL,1 ;ICW4, установлен режим работы системы

OUT A1h,AL

 
 

Рис. 6.24 Ход инициализации подсистемы 8259A в РС АТ.

 

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

При инициализации выполняются следующие функции, в том числе и аппаратные:

- согласно ICW1 устанавливается логика последовательности инициализации таким образом, чтобы обеспечивался прием ICW, указанных в ICW1;

- сбрасываются регистры ISR и IMR ;

- сбрасывается режим специального маскирования (SMM);

- сбрасывается триггер ротации в автоматическом режиме EOI;

- схема чтения/записи для чтения настраивается на чтение IRR в обоих контроллерах;

- устанавливается фиксированный приоритет (высший у IRQ0, низший у IRQ7);

- устанавливается режим распознавания запросов на прерывание по

- фронту (см. параграф "Режимы работы");

- устанавливается работа подсистемы в каскадном режиме (объединение по входу IRQ2 MASTER);

- присваиваются коды векторов, соответствующие уровням прерываний;

- при необходимости может быть установлен специальнай режим полного вложения (SFNM). Если он не установлен, контроллеры будут работать в полновложенном режиме.

 







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