реклама на сайте
подробности

 
 
> Прерывание PCI, Разбираемся в процессе обработки прерывания PCI
GrAlexI
сообщение Jun 18 2012, 08:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 22-06-11
Пользователь №: 65 818



Я решил реализовать обработку прерывания по шине 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-, я так понимаю это значения из конфигураций устройства, я не нашел описание этих значений их необходимо конфигурировать, как?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GrAlexI
сообщение Jun 18 2012, 10:33
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 22-06-11
Пользователь №: 65 818



Спасибо за ответ gerber.

То, что BIOS назначает номер прерывания я знаю и про "IRQ Routing" знаю. Что - то у меня не получается адекватно устройство работать с прерыванием, вот и начал искать пробелы в знаниях.

И все таки что за параметр Control: DisINTx случайно не рашифровыется Disable INT, то есть отключает обработку прерывания верно или нет и какой бить отвечает за этот параметр?
И как я понял устанавливать пераметр не обязательно Status: INTx и какой бит отвечает за него?

Да еще один вопрос забыл: по документации написано, что прерывание обрабатывается по обратному фронту clk, то еть обязательно устанавливать и сбрасывать INTA по обратному фронту?

Я пишу на vhdl линия у INTA должна быть типа in или inout?

Сообщение отредактировал GrAlexI - Jun 18 2012, 11:24
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 03:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.0194 секунд с 7
ELECTRONIX ©2004-2016