Во тут решил изучить работу программируемого контроллера прерываний 8259A, и в ходе изучения возникли несколько вопросов, если кто знает может поделиться своими соображениями: 1.Во время режима специальной маски прерывания обрабатываются по мере поступления без учета приоритетов? 2.В режиме специальлной маски во время обработки прерывания контроллер устанавливает биты в IRR? Если да, то допустим во время обработки прерывания 1 поступили запросы на обработку 2 и 3 прерывания. После выхода из обработчика int 1 как контроллер определяет в какой последовательности поступали прерывания и какое надо обрабатывать, если учесть, что в режиме спец. маски не учетываются приоритеты? 3.Установка в OCW3 битов ESMM=1 SMM=0, приведет к сбросу регистра IRR, то есть сброс всех запросов? 4.В режиме специальной маски маскировка тоже учитывается заданая в регистре OCW1? 5.Как я понял приоритеты нельзя задавать в произвольной последовательности, то есть, если int 0 - выший приоритет, а int 7- низший. Нельзя сделать чтобы int 7 - выший, а int 0 -низший. Если я ошибаюсь, то хотелось бы знать, как произвольно задавать приоритеты. 6.Если контроллеры соединены каскадно,каждый может работать в любом режиме или все должны работать в одном режиме? 7.Можно ли программно определить в с какими настройками был проинициализирован контроллер? 8.Чем программирование PIC отличается от APIC? 9.как будет реагировать процессор если одновременно поступит аппаратное и программное прерывание? 10.Если послать OCW2 с (R=1,SL=0,EOI=0), то контроллер будет сдвигать приоритеты на одну позицию влево сам после каждого поступившего прерывания, или надо каждый раз посылать OCW2 после каждого прерывания программно?
Чем программирование PIC отличается от APIC? - нет фиксированных адресов перывания, т.е. на любой вектор. - всегда используется в 2 и более ядерных и в HT. - содержит по меньшей мере 2 контроллера (один в CPU другой в чипсете) программировать нужно и тот и тот. - Приоритеты можно назначить на каждый вектор, но в пределах 10h векторов существует приоритет т.е. прерывание 15h свегда выше приоритет, чем у 25h. - рактически все современные машины содержат APIC, но в DOSe можно выставить эмуляцию PIC - почитать можно в мнуалах на x86 технологию, на сайте intel
Добрый вечер.. Есть вопрос по режиму SM спец.маскирования (СМ). Задача включить СМ для ПКП,состоящего из 3х контроллеров. Например 1 ведущий и от него 2 ведомых отходят. Пусть 1.Пусть к Мастеру подсоединено 2 слэйва на irq6,7. 2.Нужно везде включить режим СМ 3.предположим я все 3 контроллера проинитил через ICW1-4: 1 слэйв,2 мастера Вопросы 1. когда я иничу каждый из слэйвов - порт использую 0a0-1h ?соотвествующий 20h-21h 2. Перрывания должны в СМ обрабат. в порядке поступления в том числе и на ведомых.НО - в режиме Простого вложенного режима(ICW4) ведомые контроллеры буду маскироваться,как только они получили прерывание, поэтому СМ будет полноценным только для Мастера. В связи с этим вопрос - нужно ли включать Спец.вложенный режим,чтобы корректно работал СМ режим для всех контроллеров. 3.Когда я включаю СМ, или Спец.вложенный режим, нужно его включать для всех 3х ПКП или достаточно для ведущего? Прим.:цитирую доку по Спец.вложеному режиму (СВР), отличие от обычного вложенного: "когда обслуживается запрос от некоторого ведомого контроллера, этот контроллер не закрыт от приоритетной логики ведущего контроллера и дальнейшие запросы на прерывание от входов с более высоким приоритетом в пределах ведомого контроллера будут распознаваться ведущим контроллером и инициировать запрос прерывания для ЦП " Но в СМ режиме ведь вобще мы забиваем на приоритеты - может тогда и не стоит включать СВР..