Airy_brn 0 20 сентября, 2011 Опубликовано 20 сентября, 2011 · Жалоба Здравствуйте! Реализую PCI Express на стандартном Endpoint ядре Spartan 6 (LX45T). При не очень большом потоке данных все замечательно - DMA передачи ходят в обоих направлениях. Однако при увеличении потока происходит очень странная ситуация - само ядро (Integrated Endpoint Block) начинает глючить: количество свободных буферов (trn_tbuf_av) не увеличивается, хотя пакеты из блока в машину уходят (этот вывод я сделала из того, что Flow Control Credit буфера возвращаются к значениям, которые были до передачи). В Errata на Spartan 6 LX45T описана ошибка, которая очень может приводить к таким последствиям. А именно - "if the endpoint block for PCIe® receives multiple Packet Not Accepted DLLPs (NAKs) while also having small TLPs in the queue, the transmitter can lock up". Но это для ревизии 1, а у меня JTAG'ом опряделяется ревизия 3. В других Errata на Spartan 6 рассматриваются сразу и LX, и LXT семейства, и там вообще нет ничего про PCI Express и GTP трансиверы. Может, кто сталкивался с этим? Это все-таки аппаратный глюк или пытаться дальше копать свой проект? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dsmv 0 20 сентября, 2011 Опубликовано 20 сентября, 2011 · Жалоба количество свободных буферов (trn_tbuf_av) не увеличивается, Посмотри мой проект для SP605 http://ds-dev.ru/projects/ds-dma/files Передача пакетов реализована в файле core64_tx_engine_m4.vhd Передачу по DMA я начинаю только если есть четыре или более свободных буферов. Ответ на чтение происходит если есть хотя бы один свободный буфер. Этот вариант работает с макмимальной скоростью. Проект тестировал Kuzmi4, скорость ввода 215 Мбайт/с. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Airy_brn 0 25 октября, 2011 Опубликовано 25 октября, 2011 · Жалоба ...пришлось надолго отвлечься от задачи, но проблема никуда не делась... dsmv, спасибо за пример, но выяснилось, что передача у меня организована таким же образом... Смогла выяснить, что "зависание" происходит после следующей ситуации: я пишу некоторое количество пакетов в PCIe блок, количество свободных буферов и Flow Control TX Credit уменьшаются. Потом количество свободных буферов увеличивается на 2, хотя Flow Control TX Credit остается без изменений. После этого Flow Control TX Credit возвращаются к первоначальному значению, а trn_tbuf_av уже не изменяется. Проблема эта скорее всего не железная, т.к. на кристалле LX100T ситуация точно такая же. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dsmv 0 27 октября, 2011 Опубликовано 27 октября, 2011 · Жалоба Проблема эта скорее всего не железная, т.к. на кристалле LX100T ситуация точно такая же. А вот это похоже на неправильное формирование пакета. Я сталкивался с таким на модели, когда не совпадал размер пакета и поле Lenght в заголовке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Airy_brn 0 27 октября, 2011 Опубликовано 27 октября, 2011 · Жалоба А проблема оказалась вообще не там, где искали! На моей материнке есть разъемы PCI-Express, подключенные напрямую к южному мосту, а есть подключенные через свитч. Плата стояла в разъеме, который через свитч и конфигурировалась после сброса слегка криво. В другом разъеме все заработало! И на других машинах тоже. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dsmv 0 27 октября, 2011 Опубликовано 27 октября, 2011 · Жалоба А это особенно интересно. Наверное другие PCIE устройства в этом слоте работают. И в чём заключается кривизна конфигурирования ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Airy_brn 0 30 октября, 2011 Опубликовано 30 октября, 2011 · Жалоба Плата с мостом от Gennum работает. А кривость заключалась в том, что нулевой бит выхода cfg_dstatus (Correctable Error Detected) через пару секунд после сброса становился 1 и MAX_PAYLOAD_SIZE записывался 256 байт, хотя в нормальном режиме на моей материнке это 128 байт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться