Почему конец прерывания для главного PIC вызывает тройной сбой (перезагрузка)? - PullRequest
4 голосов
/ 20 мая 2009

Хорошо, в школе мы разрабатываем операционную систему. Мой проект заключался в разработке драйвера жесткого диска ATA. Я подумал, что моя подпрограмма обработки прерываний работает достаточно хорошо, когда мой профессор указал, что я посылаю только команды окончания прерывания подчиненному PIC, а не ведущему устройству.

Моя проблема в том, что всякий раз, когда я посылаю конец прерывания на главный PIC, это вызывает тройной сбой, который затем приводит к перезагрузке моей системы. Теперь я удалил / прокомментировал несколько строк, и кажется, что всякий раз, когда функция, отправляющая конец прерывания ведущему PIC, остается в коде, я получаю тройную ошибку.

Теперь я совершенно уверен в следующем:

  1. прерывания отключаются при входе в мой ISR
  2. Я правильно отправляю байт конца прерывания (класс проверен)
  3. Я не подтверждаю то же самое прерывание

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

Спасибо!

1 Ответ

0 голосов
/ 20 мая 2009

Я могу только догадываться об этом. Вот несколько вещей, которые нужно проверить.

  • ВЗ выходит за пределы вашего сегмента?
  • ВЗ находится на странице только для чтения?
  • Ваш обработчик прерываний имеет правильный уровень привилегий для доступа к EOI?
  • Вы используете правильный сегментный регистр?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...