i8259 irq2

Тема в разделе "WASM.ASSEMBLER", создана пользователем 0136, 21 мар 2009.

  1. 0136

    0136 New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2007
    Сообщения:
    112
    Привет всем! А ну ка подскажите, например сработало irq 8, это во втором контроллере установится бит занятости... Меня интересует, что будет с IRQ 2, оно сработает или нет? Если сработает irq 8 то ведь в первом контроллере установится бит занятости IRQ 2, и во втором контроллере IRQ 1 установится. Обьясните что с первым контроллером и с его IRQ 2 при приходе прерывания на второй контроллер. Это все про 8259.
    Всем спасибо за внимание!
     
  2. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    0136
    Сработает. Поэтому сигнал конца прерывания посылается в первый и во второй контроллеры 8259A.

    Регистр запроса на прерывание (Interrupt Request Register, IRR) доступ к которым осуществляется через входы IR0 - IR7 контроллера. Бит этого регистра устанавливается в 1 если выбран режим запуска фронтом и происходит перепад напряжения от низкого к высокому. Или если выбран режим запуска уровнем то устанавливается в 1 при высоком уровне. Этот бит устанавливается в 1 или сбрасывается в 0, даже если соответствующее прерывание было замаскировано.
    Он будет сброшен, как только поступит цикл запроса прерывания INTERRUPT ACKNOWLEDGE

    Регистр обрабатываемых запросов, (In-Service Register, ISR) описывает в битах 0 - 7 номер прерывания которое (0 - 7) в данный момент обрабатывается. Эти биты устанавливаются и соответствующие ему IRR очищаются когда поступит цикл запроса прерывания INTERRUPT ACKNOWLEDGE. Этот бит будет сброшен как только будет получена команда подтверждение конца прерывания(End of Interrupt Command - EOI)

    Регистр маскирования запроса на прерывания (Interrupt Mask Register, IMR) описывает,какие номера прерывания в настоящий момент замаскированы. Единичное значение бита в IMR указывает на то, какое прерывание при появлении запроса в IRR будет заблокировано. При этом INTR не генерируется.

    Как известно PIC подключаются каскадным способом.
    Это значит что INTR ведомого подключен к IRQ ведущего. В классической схеме ко второму входу.

    PIC работает следующем образом. Когда выставляется сигнал на линию IRQ, контроллер получив сигнал вырабатывает запрос на прерывание по линии INTR- interrupt request сигнал. Процессор отвечает по линии INTA - INTERRUPT ACKNOWLEDGE . Контроллер замораживает состояние прерываний припомощи ISR. Процессор подает второй INTA и теперь уже контроллер отправляет данные на шину данных. Это номер прерывания. Начальный адрес записанный в контроллер плюс номер линии на которую поступило прерывание.
    Если имеется каскадное подключение. А такое подключение, как мы знаем, имеется. То ведущий контроллер выставляет ID на линии CAS0-2. Ведомый сравнивает его со своим ID ,который он получил по ICW3. И при втором запросе INTA ведомый выставляет номер прерывания на шину адреса.

    Пожалуй добавлю CAS0-2, выставляется только если на ведущем контроллере обробатывается прерывание поступившее с ведомого контроллера. А это определяется путем сравнения ICW3 ведущего, с линии на которое поступило прерывание.
     
  3. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    фактическе перебрасывает IRR в ISR, обнуляя первый.

    А еще там есть схема управления приоритетами.
     
  4. 0136

    0136 New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2007
    Сообщения:
    112
    будет два прерывания? или одно прерывание irq2 и оно должно смотреть во второй контроллер? Я конечно извиняюсь, но у меня нет возможности вызвать прерывания 8-15 что бы разобраться самому. А ваш ответ большой. Мне конкретно надо :) понимаете вопрос мой? Я не понимаю сколько будет прерываний??? опишите процесс возникновения и такое, в общем плане без тонкостей, при каскадном подкл 8259 и прерывание происходит например irq8. Как будет вести себя система прерываний??? То что бит занятости на первом контроллеру установится это я знаю! а вот будет ли прерывание??? Че это получается irq8 сработает и irq2 сработает??? Вот это не могу понять! Извиняюсь!!!
     
  5. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    нет. ведущий знает, что на IR2 у него висит ведомый, поэтому при получении INTA выдает двойку на cas0-2, ведомый, получив этот сигнал сравнивает его со своим номером. есле номер совпадает, то при втором INTA ведомый засветит на шину число=базовому номеру прерывания+номер ноги, на которую прикатил запрос на прерывание
     
  6. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    0136
    Как же я тебе отвечу если ты читать не хочешь?

    Для процессора одно. Мы дергаем второй контроллер за 0 ногу (IRQ 8)/ Второй контроллер дергнет первый за ногу 2 (Irq 2) первый дергнет процессор INTR. Процессор выдаст ответ ack оба контроллера заморзятся. Первый стукнит второй. И при второй посылке ack второй контроллер выдаст номер.

    Да сработают.
     
  7. 0136

    0136 New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2007
    Сообщения:
    112
    О! Вот теперь я вроде понял, Pavia, я то все читал, просто с того чет не ясно мне. А вот с этого уже гут. Спасибо. То есть будет так - если произошло irq8, то вызовется его обработчик, а обработчик просто в конце должен отослать EOI обоим контроллерам.
    И вот теперь самое последнее чё мне вообще это нужно, получается в таблице прерываний место под irq2 не нужно, так как оно не произойдёт :) . Правильно? Обработчик irq2 в таблице прерываний не нужен, да?
     
  8. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    0136
    Да обработчик не нужен. Но заглушку стоит повесить.
    В APIC там другое дело.
     
  9. 0136

    0136 New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2007
    Сообщения:
    112
    почему стоит?
     
  10. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Чтобы спать спокойно :)