|
Прерывание от PCI, раз через раз |
|
|
|
Aug 29 2007, 12:25
|
Участник

Группа: Новичок
Сообщений: 51
Регистрация: 15-10-05
Пользователь №: 9 699

|
Собстна трабл,
Плата PCI_33_32 на спартане2, при подаче команды через внешнюю шину, на девайс , PCI девайс выставляет прерывание, собстна все так и происходит но до перврого раза.... Пример...
С внешней шины пришла команда-> PCI выставил прерывание-> прерывание отработало, (не трогая мышку и клаву) пытаемся еще раз передать команду на устройство, но теперь все затыкается.... причем не виснет(прерывание на PCI разъеме стоит) такое ощущение что обработчик прерываний его просто напросто не видит.... и стоит дотронуться до мышки и о ЧУДО прерывание срабатывает(увидело, распознало что свое и сбросило))
Кто что может сказать??
|
|
|
|
|
 |
Ответов
|
Aug 29 2007, 13:39
|
Участник

Группа: Новичок
Сообщений: 51
Регистрация: 15-10-05
Пользователь №: 9 699

|
Цитата(line @ Aug 29 2007, 16:21)  Прерывание драйвер Вашего устройства должен сбрасывать в обработчике прерывания. как сбрасывать - см. доку на контроллер пси Вашего устройства. Контроллер своей разработки...(написал же вроде SPARTAN_2) драйвер просто не видит что выставленно прерывание...(сброс прерывания срабатывает.. исходя из того что первое прерывание отрабатывает..) стоит пошевелить мышкой и оно срабатывает...(причем тут мыша ума не приложу((м )
Сообщение отредактировал Mavric84 - Aug 29 2007, 13:41
|
|
|
|
|
Aug 29 2007, 13:58
|
Частый гость
 
Группа: Свой
Сообщений: 85
Регистрация: 27-06-05
Пользователь №: 6 331

|
Цитата(Mavric84 @ Aug 29 2007, 17:39)  Контроллер своей разработки...(написал же вроде SPARTAN_2) драйвер просто не видит что выставленно прерывание...(сброс прерывания срабатывает.. исходя из того что первое прерывание отрабатывает..) стоит пошевелить мышкой и оно срабатывает...(причем тут мыша ума не приложу((м ) Устройство пси ставит INTA низкий уровень, который так и стоит низкий до сброса обработчиком в драйвере этого устройства. Если прерывание формируется правильно (что сомнительно), то копайте в своем драйвере. Причем тут мышка - сложно сказать.
|
|
|
|
|
Aug 29 2007, 14:58
|
Участник

Группа: Новичок
Сообщений: 51
Регистрация: 15-10-05
Пользователь №: 9 699

|
Цитата(line @ Aug 29 2007, 16:58)  Устройство пси ставит INTA низкий уровень, который так и стоит низкий до сброса обработчиком в драйвере этого устройства. Если прерывание формируется правильно (что сомнительно), то копайте в своем драйвере. Причем тут мышка - сложно сказать. Да устройство первый раз поставило прерывание, драйвер увидел, прочитал доп. регистр, понял что свое прерыванием сбросил его. ВСЕ. но если опять повторить такое то прерывание выставиться и будет стоять до тех пор пока я не пошевелю мышкой(((.... при следующем разе опять все норм пройдет(без шевеления мышки)... след. раз опять будет висеть до мышиного шевеления(или нажатия на клаву) Цитата(I.S.A. @ Aug 29 2007, 17:03)  А что делает драйвер по приходу прерывания? Xilinx подключен шиной к х86 процессору? Читаете ли Вы какой либо регистр или область памяти в Xilinx по приходу прерывания или нет? (К сожалению не я пишу программу) вызывается обработчик прерывания... читатет регистр, понимает что его прерывание, сбрасывает его... на след раз что бы прокатило... нужно пошевелить мышкой... а еще через раз опять все норм... Xilinx является мостом шина ввода\вывода to PCI ) Получается так. 1 прерывание проходит, 2 не проходит, 3 проходит 4 не проходит и.т.п. но если сделать вот так 1-е прерывание проходит,(пошевелил мышкой) 2-е проходит, 3-е проходит, пошевелил мышкой, 4-е проходит
|
|
|
|
|
Aug 29 2007, 15:05
|

Частый гость
 
Группа: Участник
Сообщений: 95
Регистрация: 6-08-07
Из: Москва
Пользователь №: 29 583

|
Вы пользуетесь готовым контроллером PCI в Xilinx или сами писали? Вопрос - где косяк? В железе или в драйвере? Насколько я знаю, необходимо сделать чтения из Xilinx-а, что бы сбросить прерывание (Оно проходит?). Лучший способ - тест, типа чтения регистра по прерыванию. Осциллограф на шину, и каждые 2 сек генерить прерывание, а драйвер сбрасывает его. Тогда все видно будет (Мы лично так отлаживались).
А мышь - всего лишь событие (мне так кажется), которое заставляет софт шевелиться... Кто знает, что там в это время творится...
Сообщение отредактировал I.S.A. - Aug 29 2007, 15:08
--------------------
Зачем все делать просто, когда все можно усложнить?
|
|
|
|
|
Aug 29 2007, 15:23
|
Участник

Группа: Новичок
Сообщений: 51
Регистрация: 15-10-05
Пользователь №: 9 699

|
Цитата(I.S.A. @ Aug 29 2007, 18:05)  Вы пользуетесь готовым контроллером PCI в Xilinx или сами писали? Вопрос - где косяк? В железе или в драйвере? Насколько я знаю, необходимо сделать чтения из Xilinx-а, что бы сбросить прерывание (Оно проходит?). Лучший способ - тест, типа чтения регистра по прерыванию. Осциллограф на шину, и каждые 2 сек генерить прерывание, а драйвер сбрасывает его. Тогда все видно будет (Мы лично так отлаживались).
А мышь - всего лишь событие (мне так кажется), которое заставляет софт шевелиться... Кто знает, что там в это время творится... Писали сами, Простите но немного не понимаю про чтение из XILINX??? для чего чтение??? на втором разе даже в обработчик прерывания не попадает(в то время как прерывание выставлено) для отладки добавлены две строки, первая после обработчика( что бы видеть что увидели прерывание), а вторая после строчек чтения регистра(определения свое или не свое прерывание)
|
|
|
|
|
Aug 29 2007, 15:38
|

Частый гость
 
Группа: Участник
Сообщений: 95
Регистрация: 6-08-07
Из: Москва
Пользователь №: 29 583

|
Цитата(Mavric84 @ Aug 29 2007, 19:23)  Писали сами, .... А как определяется, что свое или нет? На Xilinx идет эксклюзивное прерывание (оно не шарится ни с одним внутренним прерыванием (Может как-раз они с мышью и шарятся))? Не выходит из обработчика говорите, а как девайс узнает, что его прерывание отработано? Для этого надо прочитать (записать) соответствующий регистр девайса PCI. Осциллографом смотрели, что на шине творится или нет? А еще лучше логический анализатор цепануть или на Xilinx-e его реализовать, если есть свободные выводы...
--------------------
Зачем все делать просто, когда все можно усложнить?
|
|
|
|
Сообщений в этой теме
Mavric84 Прерывание от PCI Aug 29 2007, 12:25       Mavric84 Цитата(I.S.A. @ Aug 29 2007, 18:38) А как... Aug 29 2007, 15:44    gab Цитата(Mavric84 @ Aug 29 2007, 18:58) Да ... Sep 12 2007, 02:21 I.S.A. А что делает драйвер по приходу прерывания? Xilinx... Aug 29 2007, 14:03 Mavric84 Исходя из большого количества вопросов, попробую о... Aug 29 2007, 19:04 Harbour Дык, уже было сказано что прерывание в данной сист... Aug 30 2007, 07:01 Mavric84 Цитата(Harbour @ Aug 30 2007, 11:01) Дык,... Aug 30 2007, 11:07  729 Цитата(Mavric84 @ Aug 30 2007, 15:07) Хм.... Aug 30 2007, 15:21   Mavric84 Цитата(729 @ Aug 30 2007, 18:21) Вообще-т... Aug 31 2007, 08:34 Mavric84 Хотелось бы услышать мысли,
В моем устройстве не ... Sep 3 2007, 19:31 Harbour Могу ошибаться - но эта команда до спины, нужна ес... Sep 4 2007, 05:18 yuri_d А как выполняется обработка прерывания? Особенно и... Sep 5 2007, 17:16 Mavric84 Цитата(yuri_d @ Sep 5 2007, 20:16) А как ... Sep 6 2007, 07:37
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|