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

 
 
> pci master/target interrupt, windows
qwqw
сообщение Nov 23 2005, 23:48
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 192
Регистрация: 23-11-05
Из: г. Москва
Пользователь №: 11 307



в процессе работы возник следубщий вопрос:
есть master/target устройство.
Мастер - для DMA , Target - для управления им.
Есть 1 прерывание.
Прерывание одно на несколько устройств(interrupt share). Когда любое из устройств, висящих на этом прерывании его вызывает, контроллер по очереди передает управление всем драйверам этих самых устройств. Те в свою очередь обращаютя к своим устройствам, проверяют им ли предназначено прерывание, если да, тогда они позволяют устройству снять запрос на прерывание.
Собственно вопрос такой: другие устройства могут выставить прерывание в произвольный момент времени, если мое устройство в этот момент будет передавать по DMA(в режиме мастера), то оно не сможет ответить на запрос обработчика прерывания(в драйвере) о том ему адресовано прерывание или нет(так как это чтение из порта, а оно возможно только в target режиме). Как организовать постоянный доступ к портам таргета при DMA?
Я полагаю чистых Мастеров не делают(или оч. редко) значит ситуация расхожая, но я нигде не нашел ничего об этом.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
qwqw
сообщение Nov 24 2005, 21:10
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 192
Регистрация: 23-11-05
Из: г. Москва
Пользователь №: 11 307



Цитата
Все по-порядку. PCI-ядро выставляет прерывание. Обработчик прерывания в драйвере считывает регистр состояния прерывания PCI-ядра - этот регистр доступен для чтения обработчиком независимо от наличия/отсутствия передачи данных по ДМА (шина не грузится мастером на 100%).

как раз это и непонятно: как регистр может быть всегда доступен?(где бы он ни находился: в пр-ве портов или в конфигурационном пространстве)
Предположим ДМА передает burst'ом 100 фаз данных.В это время обработчик получил прерывание(не от нашего устройства) , он говорит драйверу, что нужно считать регистр состояния, драйвер в свою очередь вызывает ф-ю ReadPort , далее комп в роли мастера пытается инициировать транзакцию чтения, НО
1 он не получит доступа к шине пока текущая транзакция не закончится, а она может тянуться долго.
+как выяснилось время отпущенное каждому драйверу на определение принадлежности ему прерывания ограничено.
2 как устройство поймет, что надо переводит буферы сигналов на прием?(например TRDY для мастера вх., для таргета - вых.)

----------------
я свою проблему решил следующим образом:
Если мы выставили прерывание, тогда ДМА ждет пока драйвер не попросит его(прерывание) снять.
Если прерывание выставлено не нами, тогда ф-я read_Port возвращает все '1' для значения регистра состояния.(~реально один бит у меня всегда '0') - как раз случай когда времени на опр. принадлежности прер-я не хватает.
Таким образом для обработчика это значит, что прерывание адресовано не нам.
----------------
Но я все же не понимаю, как др. устройства-мастера решают эту проблему.

Сообщение отредактировал qwqw - Nov 24 2005, 21:16
Go to the top of the page
 
+Quote Post
VslavX
сообщение Nov 25 2005, 09:36
Сообщение #3


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



[quote name='qwqw' date='Nov 24 2005, 23:10' post='66073']
[quote]
я свою проблему решил следующим образом:
Если мы выставили прерывание, тогда ДМА ждет пока драйвер не попросит его(прерывание) снять.
Если прерывание выставлено не нами, тогда ф-я read_Port возвращает все '1' для значения регистра состояния.(~реально один бит у меня всегда '0') - как раз случай когда времени на опр. принадлежности прер-я не хватает.
Таким образом для обработчика это значит, что прерывание адресовано не нам.
----------------
Но я все же не понимаю, как др. устройства-мастера решают эту проблему.
[/quote]
Прерывания и бас-мастеринг абсолютно несвязанные вещи.
На сегмента PCI всегда есть арбитр. Допустим, Ваш мастер выставил арбитру REQ# и получил от него GNT# и начал свою "долгую песню" - burst transfer. Теперь допустим Ваше устройство выставляет прерывание, оно попадает на процессор, вызывается обработчик в драйвере, где, допустим, инициируется чтение регистра из Вашего тагета. В этот момент на арбитр сегмента будет выставлен REQ# со стороны другого мастера - некоторого моста в чипсете, через который PCI привязан к ЦП, (ведь доступом к тагет всегда кто-то рулит).
Как точно поступит арбитр - зависит от многих условий (от конфигурации полей MIN_GNT, MAX_LAT всех устройств на сегменте, и от реализации самого арбитра), но все равно он в какое-то конечное время снимет GNT# Вашему мастеру, в ответ мастер освободит шину и арбитр отдаст ее мосту "ЦП-PCI" который собственно и выполнит чтение регистра в Вашем тагете. Далее, шина опять освободится, и ее могут отдать опять Вашему мастеру для "солирования".
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- qwqw   pci master/target interrupt   Nov 23 2005, 23:48
- - line   Цитата(qwqw @ Nov 24 2005, 02:48) Собстве...   Nov 24 2005, 03:12
- - line   Цитата(qwqw @ Nov 25 2005, 00:10) Предпол...   Nov 25 2005, 03:16
- - qwqw   2line: ЦитатаКак то не бло проблем с этим... И ско...   Nov 27 2005, 21:51
|- - line   Цитата(qwqw @ Nov 28 2005, 00:51) 2line: ...   Nov 28 2005, 03:26
- - Tosha   ЦитатаVslavX: примерно так я себе и представляю с ...   Nov 28 2005, 07:01
- - qwqw   Да, насчет арбитра - я невнимательно прочитал спец...   Dec 3 2005, 19:01
- - qwqw   еще такой вопрос: В новых материнских платах в био...   Dec 5 2005, 14:34
- - VslavX   ИМХО, не совсем так. Latency Timer в BIOS - это па...   Dec 5 2005, 16:08
- - qwqw   читая регистры конфигурационного пространства свое...   Dec 9 2005, 08:15
- - One   Да ... и материнка A8N на чипсете nForce4 - это об...   Apr 21 2006, 10:03
- - vladec   Еще одно замечание. Если мы говорим об одной пачке...   Apr 21 2006, 14:12
- - qwqw   Я позже разобрался в проблеме прерываний: некоррек...   Apr 25 2006, 12:27


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

 


RSS Текстовая версия Сейчас: 14th August 2025 - 08:23
Рейтинг@Mail.ru


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