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

 
 
> PCI под Win XP SP1 и SP2.
Zwerg_nase
сообщение Mar 1 2006, 07:46
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 14-10-05
Из: г. Москва
Пользователь №: 9 641



Какая может быть разница в работе PCI под Win XP Service Pack 1 и Service Pack 2?
Есть PCI девайс, сделанный на корке Altera pci_mt32. Девайс выполняет Burst Master Memory Writes по 8 DWORDов, после передачи буфера 28 К девайс выставляет прерывание INTA. Драйвер девайса обрабатывает прерывание и посылает команду девайсу снять INTA.
Так вот, под Win XP SP1 это работает, а под SP2 это почти сразу зависает. Менял размер буфера: такая же хрень, только виснет чуть позже.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 7)
Tosha
сообщение Mar 3 2006, 09:03
Сообщение #2


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

Группа: Свой
Сообщений: 97
Регистрация: 10-09-04
Пользователь №: 633



Скорее всего проблема в том, что прерывание не снимается. Если прерывание не снять, винда 100% виснет. Почему это происходит именно в SP2 непонятно. Проверьте, что на PCI прерывание точно снимается, на лампочку напривер его выведите. Каком драйвером пользуетесь, самодельным?
Go to the top of the page
 
+Quote Post
Zwerg_nase
сообщение Mar 3 2006, 11:19
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 14-10-05
Из: г. Москва
Пользователь №: 9 641



Драйвер самодельный, сделан в DDK. Прерывание не успевает выставляться (соответствующая лампочка имеется), т.е. зависание происходит до того, как передан весь буфер.
Go to the top of the page
 
+Quote Post
Tosha
сообщение Mar 3 2006, 12:48
Сообщение #4


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

Группа: Свой
Сообщений: 97
Регистрация: 10-09-04
Пользователь №: 633



Попробуйте подключить SignalTap анализатор и посмотреть им может быть не по тем адресам записывается.
Еще посмотрите, может к вам чужие прервания приходят, от другого устройства. Правильно ли они обрабатываются?
Можно вообще отключить прерывания и проверить без них на зависания.
Go to the top of the page
 
+Quote Post
Zwerg_nase
сообщение Mar 30 2006, 10:02
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 14-10-05
Из: г. Москва
Пользователь №: 9 641



Подключил SignalTap (см. приаттаченный stp_res.stp). При зависании target (в моём случае это системная память) плохо себя ведёт: заканчивает транзакцию, поднимая в "1" TRDYN, а DEVSELN оставляет в "0", STOPN остаётся в "1". Альтеровская корка считает, что фаза данных всё еще продолжается и она остаётся в ней навсегда. Из альтеры мне написали, что "The target’s abnormal behavior in your environment violates the PCI specification. Master(PCI core) must wait for the target(system memory) to deassert devseln or assert stopn to terminate current transaction according to the PCI specification. So there’s no means to terminate the transaction from local side of PCI core."
Однако, когда я увеличиваю паузу между своими пакетными передачами, зависание прекращается. Скорость передачи при этом правда заметно снижается. Удалось получить где-то 15 МБайт/с на 33 МГц 32 бита.
Прикрепленные файлы
Прикрепленный файл  stp_res.txt ( 336.49 килобайт ) Кол-во скачиваний: 88
 
Go to the top of the page
 
+Quote Post
Tosha
сообщение Apr 3 2006, 10:27
Сообщение #6


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

Группа: Свой
Сообщений: 97
Регистрация: 10-09-04
Пользователь №: 633



А компьютер навсегда зависает в ситуации на STP? Просто у меня тоже были подобные когда тестировал PCI. Правда комп при этом не вис. Однако в подобных случаях, pci все-таки прочухивался и мог выдавать разрешение через ~8000 тактов!!! При этом внутренный буфер у меня переполнялся. Такие эффекты могут возникать, если CPU начинает очень активно работать с памятью. Например RightMark Memory Analyzer.
У вас не показан сигнал stop, он не устанавливается при зависании?
Для увеличения производительности попробуйте передавать по 32слова за раз. Тогда и скорость увеличится и задержки.
Go to the top of the page
 
+Quote Post
Zwerg_nase
сообщение Apr 5 2006, 05:28
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 14-10-05
Из: г. Москва
Пользователь №: 9 641



STOPn остаётся в "1" (см. stp_res2.stp).
Да, сейчас пробую менять размер пакетов и длительность паузы между ними.
CPU с памятью работает как обычно.
Вообще, могу добиться, чтобы комп не зависал: для этого надо отключить сетевую плату. Но обмен по PCI на моей плате всё равно умирает, как показано в *.stp.
Со включённой сетевой платой комп зависает намертво, приходится выключать питание.
Ещё, скорость обмена, при которой зависает обмен, зависит от чипсета материнской платы. На некоторых платах удаётся разогнать PCI побыстрее.
Прикрепленные файлы
Прикрепленный файл  stp_res_2.txt ( 375.66 килобайт ) Кол-во скачиваний: 81
 
Go to the top of the page
 
+Quote Post
Tosha
сообщение Apr 6 2006, 10:38
Сообщение #8


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

Группа: Свой
Сообщений: 97
Регистрация: 10-09-04
Пользователь №: 633



Даже не знаю что тут сказать. Как-будто виноват чипсет, мастер действительно должен дождаться ответа таргета. Но это конечно странно как-то.
Go to the top of the page
 
+Quote Post

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

 


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


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