Aleksei_Rostov 0 1 июля, 2015 Опубликовано 1 июля, 2015 · Жалоба Немного не то. Имел ввиду (просто интересно) возможно ли задачу переброса данных переложить на железо компьютера или это будет сложнее и менее производительно? Что-то типа драйвера управляющего DMA центрального процессора который и отвечает за переброс данных по PCIe. Или доступ к чужому железу не получить? Такая идея была, но вариант со внешним dma вполне устраивает) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 21 июля, 2015 Опубликовано 21 июля, 2015 · Жалоба Приветствую. Нужно ещё пояснение по поводу BAR-ов. Может ли PCIe:BAR0 отличаться по размеру от AXI:BAR0? Как понял, это независимые адресные пространства, но проект для разных их размеров собираться не захотел. Пока собрал систему с GPIO (светодиод), прикрутил его к PCIe:BAR0 и сделал простенький драйвер под Linux, который при запуске зажигает светодиод, при удалении - гасит. Счас хочу добавить прерывание (от таймера), но не пойму, как это прикрутить к мосту PCIe? У таймера есть выход interrupt, у моста - вход intx_msi_request. Достаточно ли их соединить и запустить таймер, чтоб мост начал генерить прерывания от таймера? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 22 июля, 2015 Опубликовано 22 июля, 2015 · Жалоба Таймер запустил, выход таймера interrupt повесил на вход моста intx_msi_request. На порт моста msi_vector_num[4:0] повесил константу 0. В Jungo Windriver собрал драйвер для системы, при запуске Listen Interrupt считает прерывания, но показывает Interrupt Number = 7. За что тогда отвечает msi_vector_num? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 24 июля, 2015 Опубликовано 24 июля, 2015 · Жалоба Вопрос, что всё же подаётся на порт моста msi_vector_num[4:0]? Если 0, то Windriver видит прерывание от моста. Пробовал поменять (поставил 24) Windriver не видит прерывание, но таймер его постоянно генерит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksei_Rostov 0 24 июля, 2015 Опубликовано 24 июля, 2015 · Жалоба Приветствую. Нужно ещё пояснение по поводу BAR-ов. Может ли PCIe:BAR0 отличаться по размеру от AXI:BAR0? Как понял, это независимые адресные пространства, но проект для разных их размеров собираться не захотел. У меня размеры разные. Все работает. Пока собрал систему с GPIO (светодиод), прикрутил его к PCIe:BAR0 и сделал простенький драйвер под Linux, который при запуске зажигает светодиод, при удалении - гасит. Счас хочу добавить прерывание (от таймера), но не пойму, как это прикрутить к мосту PCIe? У таймера есть выход interrupt, у моста - вход intx_msi_request. Достаточно ли их соединить и запустить таймер, чтоб мост начал генерить прерывания от таймера? intx_msi_request (в данном случае legacy интерапт, по импульсу) на этот вход я подаю импульс как только закончена транзакция через pcie в PC (в физ память ПК) За что тогда отвечает msi_vector_num? Событийные прерывания. Помимо прерывания еще и указывают, чем это прерывание вызвано. В датащите есть расшифровка Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 24 июля, 2015 Опубликовано 24 июля, 2015 · Жалоба Счас ядро сгенерено с опциями (см. рисунок). Означает ли это, что по импульсу на intx_msi_request ядро выдаст прерывание только если msi_vector_num[4:0] = 0? Т.е. может генерить один вектор и его номер 0. Если хочу использовать №24, то надо выбрать опцию "32 vectors" для Multiple Message Capability и тогда msi_vector_num[4:0] = 24? У меня размеры разные. Все работает. Спасибо, проверим ещё раз. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksei_Rostov 0 24 июля, 2015 Опубликовано 24 июля, 2015 · Жалоба Означает ли это, что по импульсу на intx_msi_request ядро выдаст прерывание только если msi_vector_num[4:0] = 0? я вообще не задействовал msi_vector_num. Прерывания работают, windrive их видит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 24 июля, 2015 Опубликовано 24 июля, 2015 · Жалоба я вообще не задействовал msi_vector_num. Прерывания работают, windrive их видит Надо затянуть это прерывание в Linux. Пока не понимаю, как это вообще будет выглядеть и как ему назначить какой-либо номер. Посмотрел, что в системе №24 вроде свободен, поэтому и хочу его назначить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 27 июля, 2015 Опубликовано 27 июля, 2015 · Жалоба PCI Configuration Space Header содержит поле Intr Line. 1) Кто его заполняет и как возможно его изменить (счас он 11, Linux и Win7 показывают одинаковый номер)? 2) Обработчик прерывания со стороны драйвера привязывается к лини прерывания с данным номером? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 4 августа, 2015 Опубликовано 4 августа, 2015 · Жалоба Не могу найти ответ на вопрос: -как система (Linux) назначает номера линий прерывания для устройств? Моему устройству в системе назначается линия прерывания №16. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 15 октября, 2015 Опубликовано 15 октября, 2015 · Жалоба А поток с ПЛИС пишу через datamover. Приветствую. Подскажите, какую скорость передачи данных удалось получить на Вашей системе? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksei_Rostov 0 15 октября, 2015 Опубликовано 15 октября, 2015 · Жалоба Приветствую. Подскажите, какую скорость передачи данных удалось получить на Вашей системе? В буфер ПСИе пишу поток со скоростью примерно 300-400 Мб/с. Можно и быстрее. Поясню: скорость шины с коркой псие 100 Мгц, датамувер кидает по 4 Мб в один из двух буферов отмапированных в памяти ПК. Скорость шины можно повысить до 200 МГц (виртекс 6 прекрасно работает на 200, проблемы начинаются от 250-300 Мгц, все это конечно условно). У меня необходимости в бОльшей скорости не возникало Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 15 октября, 2015 Опубликовано 15 октября, 2015 · Жалоба Спасибо, просто упёрся в потолок 8.5-8.7 Gbit/s для Gen2 x4, хотел сравнить c Вашим результатом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EugeneS 0 20 октября, 2015 Опубликовано 20 октября, 2015 · Жалоба Спасибо, просто упёрся в потолок 8.5-8.7 Gbit/s для Gen2 x4, хотел сравнить c Вашим результатом. Для коммерческих не предел. Я для Kintex-7 в TRD мерял 12 Gbit/s, а с примером из Northwest Logic 14 Gbit/s. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SnowBuzz 0 10 февраля, 2017 Опубликовано 10 февраля, 2017 · Жалоба Я на начальном этапе делал так (работал в XPS 14.7 для ml605.) Собрал проект: только pcie корка с дма (можно и без) и светодиоды. У меня на 32 р системе программа pcietree. Pcie Bars брал только bar 0, задав его объем (у вас 32 килобайта). В pci2axi записал адрес своих leds (gpio) на шине (у вас там записано число 0х12340). Прошил, перезагрузил ПК. Открываю pcietree, вижу свою плату как контроллер памяти с BAR0. В bar 0 c ПК пишу число например c нулевым оффсетом, такая запись аналогична записи в регистр gpio корки также с нулевым офсетом. Так зажигаю светодиоды. Все. Систему можно собрать для axi4 без микроблейза, т.к. мастер у вас есть (pcie) и слейв (gpio) Расскажите как получилось собрать систему без микроблейза? Я так понимаю как то удалось использовать исходники из XSP и собрать свой проект для pci-to-AXI? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться