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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Прерывания PCI.
Methane
сообщение Sep 10 2010, 04:00
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Народ. Кто-то делал? Не могу понять. В двух проводах запутался. Из альтеровской корки идут два провода. Я устанавливаю первый в 1, получаю ACK по второму. Устанавливаю первый в 0, получаю ACK по второму. Система реагирует в обоих случаях одинакого. Вешается. После генерации прерывания. Что я еще не сделал?
Go to the top of the page
 
+Quote Post
Victor®
сообщение Sep 10 2010, 06:07
Сообщение #2


Lazy
******

Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76



Цитата(Methane @ Sep 10 2010, 07:00) *
Народ. Кто-то делал? Не могу понять. В двух проводах запутался. Из альтеровской корки идут два провода. Я устанавливаю первый в 1, получаю ACK по второму. Устанавливаю первый в 0, получаю ACK по второму. Система реагирует в обоих случаях одинакого. Вешается. После генерации прерывания. Что я еще не сделал?


Что-то не понял... что за "провода"?
Это Вы про INTA# и INTB#?
Если 2 прерывания - то у Ваc девайс должен быть "multifunction".
Это так?


--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
Go to the top of the page
 
+Quote Post
Methane
сообщение Sep 10 2010, 06:16
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(Victor® @ Sep 10 2010, 09:07) *
Что-то не понял... что за "провода"?
Это Вы про INTA# и INTB#?
Если 2 прерывания - то у Ваc девайс должен быть "multifunction".
Это так?

В корке квартуса есть app_int_sts, который подключен к виртуальному INTA, и app_int_ack , который поднимается на такт когда сингнал доходит до INTA. Я поднимаю app_int_sts (тоесть делаю Assert_INTA) потом жду единицы на app_int_ack, и опускаю app_int_sts (делаю Deassert_INTA) итог - жесткий клин системы при попытки что-то прочитать из карточки.
Go to the top of the page
 
+Quote Post
Victor®
сообщение Sep 10 2010, 06:48
Сообщение #4


Lazy
******

Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76



Цитата(Methane @ Sep 10 2010, 09:16) *
В корке квартуса есть app_int_sts, который подключен к виртуальному INTA, и app_int_ack , который поднимается на такт когда сингнал доходит до INTA. Я поднимаю app_int_sts (тоесть делаю Assert_INTA) потом жду единицы на app_int_ack, и опускаю app_int_sts (делаю Deassert_INTA) итог - жесткий клин системы при попытки что-то прочитать из карточки.


К сожалению - не помогу. Думал вопрос Ваш касается другого.
С Альтеровской дела не имел. Делал на Xilinx.


--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
Go to the top of the page
 
+Quote Post
Methane
сообщение Sep 10 2010, 06:51
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(Victor® @ Sep 10 2010, 09:48) *
К сожалению - не помогу. Думал вопрос Ваш касается другого.
С Альтеровской дела не имел. Делал на Xilinx.

У меня какая-то лажа с PCIe. Чтобы прерывание сгенерировать что-то еще нужно?
Go to the top of the page
 
+Quote Post
Methane
сообщение Sep 10 2010, 08:31
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Стабильно генерит 1 прерывание и клин. Чует мое сердце что еще что-то нужно сделать. PC должен же как-то сказать плате, что обработка прерывания уже началась.
Go to the top of the page
 
+Quote Post
DS
сообщение Sep 10 2010, 08:44
Сообщение #7


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Цитата(Methane @ Sep 10 2010, 12:31) *
Стабильно генерит 1 прерывание и клин. Чует мое сердце что еще что-то нужно сделать. PC должен же как-то сказать плате, что обработка прерывания уже началась.


Это обычно делается в пользовательской части. Например, считывается регистр состояния, или данные, что автоматически приводит к сбросу запроса на прерывание.
Ну или нужен бит запрета прерывания, который Вы будете устанавливать сразу по входу в обработчик.

Общий алгоритм такой - вход в прерывание - выясняете Ваше - не Ваше, если нет - отдаете управление, если Ваше, то сбрасываете запрос как можно быстрей, делаете необходимые действия, выходите из обработчика.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Methane
сообщение Sep 10 2010, 08:56
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(DS @ Sep 10 2010, 11:44) *
Это обычно делается в пользовательской части. Например, считывается регистр состояния, или данные, что автоматически приводит к сбросу запроса на прерывание.
Ну или нужен бит запрета прерывания, который Вы будете устанавливать сразу по входу в обработчик.

Общий алгоритм такой - вход в прерывание - выясняете Ваше - не Ваше, если нет - отдаете управление, если Ваше, то сбрасываете запрос как можно быстрей, делаете необходимые действия, выходите из обработчика.

Алгоритм я знаю. Я не могу понять почему у меня железка виснет после первого прерывания. Причем MSI-x прерывания работают совершенно нормально. Хотя сейчас попробую вставить чтение из железки, может войдя в обработчик я обязан хоть что-то из железки прочитать. Хотя бред.
Go to the top of the page
 
+Quote Post
DS
сообщение Sep 10 2010, 08:59
Сообщение #9


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Цитата(Methane @ Sep 10 2010, 12:56) *
Алгоритм я знаю. Я не могу понять почему у меня железка виснет после первого прерывания. Причем MSI-x прерывания работают совершенно нормально. Хотя сейчас попробую вставить чтение из железки, может войдя в обработчик я обязан хоть что-то из железки прочитать. Хотя бред.


А запрос - то сбрасывается ? Вы обязаны сбросить запрос по входу, а уж чтением или каким другим действием - не важно.
Еще бывают зависоны, если нераспознано, что прерывание от чужого устройства, и вместо отдачи управления - попытка что-то делать, которая, естетственно, не сбрасывает и не может сбросить чужой запрос.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Methane
сообщение Sep 10 2010, 09:15
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(DS @ Sep 10 2010, 11:59) *
А запрос - то сбрасывается ? Вы обязаны сбросить запрос по входу, а уж чтением или каким другим действием - не важно.
Еще бывают зависоны, если нераспознано, что прерывание от чужого устройства, и вместо отдачи управления - попытка что-то делать, которая, естетственно, не сбрасывает и не может сбросить чужой запрос.

Я сразу сбрасываю запрос. Поднимаю INTA, дожидаюсь ACK и опускаю INTA. Или я должен опустить INTA из обработчика прерывания? Тоесть Deassert_INTA должен случиться уже из обработчика? В общем сейчас попробую.
Go to the top of the page
 
+Quote Post
DS
сообщение Sep 10 2010, 09:22
Сообщение #11


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Цитата(Methane @ Sep 10 2010, 13:15) *
Или я должен опустить INTA из обработчика прерывания? Тоесть Deassert_INTA должен случиться уже из обработчика? В общем сейчас попробую.


Да.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Methane
сообщение Sep 10 2010, 13:25
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(DS @ Sep 10 2010, 12:22) *
Да.

Не пашет. По событию поднимаю INTA, в обработчике прерывания делаю запись по адресу, чем сбрасываю INTA.
Go to the top of the page
 
+Quote Post
DS
сообщение Sep 10 2010, 13:31
Сообщение #13


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Цитата(Methane @ Sep 10 2010, 17:25) *
Не пашет. По событию поднимаю INTA, в обработчике прерывания делаю запись по адресу, чем сбрасываю INTA.


Осциллографом проверяли, что INTA падает ?

Обработчик возвращает TRUE ? (если винда, конечно).


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Methane
сообщение Sep 10 2010, 13:36
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(DS @ Sep 10 2010, 16:31) *
Осциллографом проверяли, что INTA падает ?

У меня PCIe, INTA виртуальное. Проверял SignalTapом. Падает.

Цитата
Обработчик возвращает TRUE ? (если винда, конечно).

У меня линух, обработчик, точно такой же как и для прерываний MSI, которые бегают. IRQ_HANDLED возвращаю.
Go to the top of the page
 
+Quote Post
DS
сообщение Sep 10 2010, 13:41
Сообщение #15


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Нет клина прерывания (после выхода обработчик вызывается снова и так до бесконечности) ? Проверьте как-нибудь. Если этого нет, то проблема с самой шиной скорее всего. Без прерываний обмен работает ?


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 26th July 2025 - 01:54
Рейтинг@Mail.ru


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