В руководстве разработчика программного обеспечения Intel говорится, что векторы прерываний 32-255 обычно определяются пользователем для внешних устройств ввода-вывода. В моем классе системного программирования я должен разработать простой драйвер устройства. У меня вопрос, как я могу определить конкретный вектор прерывания, который будет использоваться для конкретного устройства? Это сделано с BIOS?
Примечание: мы разрабатываем простую операционную систему, поэтому моя ситуация довольно специфична, однако в конце мне нужно понять, как все это происходит в системе x86. В настоящее время наша система настроена таким образом, что несколько векторов прерываний выше 32 назначаются таким устройствам, как последовательный порт и клавиатура. При чтении таблицы данных для контроллера ввода-вывода Intel 82801EB ICH5, в частности в разделе, касающемся 8259 PIC, говорится, что IRQ15 является вторичным каналом IDE. Как это в конечном итоге будет помещено в стек как вектор прерывания?
Я могу быть настолько смущен, что этот вопрос не имеет смысла, поэтому я заранее извиняюсь.
РЕДАКТИРОВАТЬ: Таким образом, наш класс системного программирования имеет очень простую ОС, которая имеет подпрограммы ядра для установки ISR для обработки определенных прерываний с учетом номера вектора. В нашем классе в прошлом квартале профессор дал нам файл заголовка, который определял клавиатуру как векторное число 0x2c или что-то подобное. Я пытаюсь выяснить, как сопоставить прерывания основного и / или вторичного канала IDE с различными ISR, используя наши процедуры ядра. На данный момент все неиспользуемые векторы прерываний имеют обработчик по умолчанию, который будет печатать сообщения в случае возникновения прерывания, поэтому прерывания IDE на данный момент даже не включены, однако это другой вопрос.