GrAlexI 0 18 июня, 2012 Опубликовано 18 июня, 2012 · Жалоба Я решил реализовать обработку прерывания по шине PCI от своего устройства. Почитав различные материалы, выяснил, что так как устройство у меня одно функциональное, то мне достаточно использовать только линую INTA, причем линия является для вывода (другие INTx могу я не подключать вообще), и в неактивном состояние должен находится в состоянии ‘Z’, а при вызове на порывание перевести в состояние ‘0’, и быть в состоянии ‘0’ до тех пор пока не будет, обработана драйвером устройства, в моем случаи прочитать с порта ввода-вывода. Так же при конфигурации устройства моему устройстве выделяется порывание на INTA с номером 14. Правильно я все понял? А как реагирует контроллер обрабатывающий pci при приходе прерывания с линии? Он сперва определяет через команду “0000” Interrupt Acknowledge какой номер прерывания, после чего сообщает процессору номер прерывания. Или все же сообщает процессору о прерывании, а операционная система вызывает обработчики прерывании каждого pci устройства, а те в свою очередь определяет их устройство востребовало прерывные через команду Interrupt Acknowledge или возможно нет в этой команде необходимости, достаточно на пример считать с моего устройства какой-то регистр, с тот в свою очередь (устройство) сбросить прерывание в ‘Z’. Как вообще происходит процесс обработки прерывания и надо ли обрабатываться команду “0000” Interrupt Acknowledge. При выполнение команды lspci -vvv (в терминале Linux), увидел параметры Control: ….. DisINTx-, и еще один Status: …… INTx-, я так понимаю это значения из конфигураций устройства, я не нашел описание этих значений их необходимо конфигурировать, как? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться