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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Xilinx 7 Series PCIe
Alexey_Rostov
сообщение Jul 1 2015, 16:24
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312



Цитата(doom13 @ Jul 1 2015, 17:10) *
Немного не то. Имел ввиду (просто интересно) возможно ли задачу переброса данных переложить на железо компьютера или это будет сложнее и менее производительно? Что-то типа драйвера управляющего DMA центрального процессора который и отвечает за переброс данных по PCIe. Или доступ к чужому железу не получить?

Такая идея была, но вариант со внешним dma вполне устраивает)
Go to the top of the page
 
+Quote Post
doom13
сообщение Jul 21 2015, 17:25
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Приветствую.
Нужно ещё пояснение по поводу BAR-ов. Может ли PCIe:BAR0 отличаться по размеру от AXI:BAR0? Как понял, это независимые адресные пространства, но проект для разных их размеров собираться не захотел.

Пока собрал систему с GPIO (светодиод), прикрутил его к PCIe:BAR0 и сделал простенький драйвер под Linux, который при запуске зажигает светодиод, при удалении - гасит. Счас хочу добавить прерывание (от таймера), но не пойму, как это прикрутить к мосту PCIe?
У таймера есть выход interrupt, у моста - вход intx_msi_request. Достаточно ли их соединить и запустить таймер, чтоб мост начал генерить прерывания от таймера?
Go to the top of the page
 
+Quote Post
doom13
сообщение Jul 22 2015, 14:05
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Таймер запустил, выход таймера interrupt повесил на вход моста intx_msi_request. На порт моста msi_vector_num[4:0] повесил константу 0. В Jungo Windriver собрал драйвер для системы, при запуске Listen Interrupt считает прерывания, но показывает Interrupt Number = 7. За что тогда отвечает msi_vector_num?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
doom13
сообщение Jul 24 2015, 05:59
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Вопрос, что всё же подаётся на порт моста msi_vector_num[4:0]? Если 0, то Windriver видит прерывание от моста. Пробовал поменять (поставил 24) Windriver не видит прерывание, но таймер его постоянно генерит.
Go to the top of the page
 
+Quote Post
Alexey_Rostov
сообщение Jul 24 2015, 06:22
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312



Цитата(doom13 @ Jul 21 2015, 20:25) *
Приветствую.
Нужно ещё пояснение по поводу BAR-ов. Может ли PCIe:BAR0 отличаться по размеру от AXI:BAR0? Как понял, это независимые адресные пространства, но проект для разных их размеров собираться не захотел.

У меня размеры разные. Все работает.

Цитата
Пока собрал систему с GPIO (светодиод), прикрутил его к PCIe:BAR0 и сделал простенький драйвер под Linux, который при запуске зажигает светодиод, при удалении - гасит. Счас хочу добавить прерывание (от таймера), но не пойму, как это прикрутить к мосту PCIe?
У таймера есть выход interrupt, у моста - вход intx_msi_request. Достаточно ли их соединить и запустить таймер, чтоб мост начал генерить прерывания от таймера?

intx_msi_request (в данном случае legacy интерапт, по импульсу) на этот вход я подаю импульс как только закончена транзакция через pcie в PC (в физ память ПК)


Цитата(doom13 @ Jul 22 2015, 17:05) *
За что тогда отвечает msi_vector_num?

Событийные прерывания. Помимо прерывания еще и указывают, чем это прерывание вызвано. В датащите есть расшифровка
Go to the top of the page
 
+Quote Post
doom13
сообщение Jul 24 2015, 06:42
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Счас ядро сгенерено с опциями (см. рисунок).
Означает ли это, что по импульсу на intx_msi_request ядро выдаст прерывание только если msi_vector_num[4:0] = 0?
Т.е. может генерить один вектор и его номер 0. Если хочу использовать №24, то надо выбрать опцию "32 vectors" для Multiple Message Capability и тогда msi_vector_num[4:0] = 24?

Цитата(farbius @ Jul 24 2015, 09:22) *
У меня размеры разные. Все работает.

Спасибо, проверим ещё раз.

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Alexey_Rostov
сообщение Jul 24 2015, 06:55
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312



Цитата(doom13 @ Jul 24 2015, 09:42) *
Означает ли это, что по импульсу на intx_msi_request ядро выдаст прерывание только если msi_vector_num[4:0] = 0?


я вообще не задействовал msi_vector_num. Прерывания работают, windrive их видит
Go to the top of the page
 
+Quote Post
doom13
сообщение Jul 24 2015, 07:00
Сообщение #23


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(farbius @ Jul 24 2015, 09:55) *
я вообще не задействовал msi_vector_num. Прерывания работают, windrive их видит

Надо затянуть это прерывание в Linux. Пока не понимаю, как это вообще будет выглядеть и как ему назначить какой-либо номер. Посмотрел, что в системе №24 вроде свободен, поэтому и хочу его назначить.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jul 27 2015, 12:54
Сообщение #24


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



PCI Configuration Space Header содержит поле Intr Line.
1) Кто его заполняет и как возможно его изменить (счас он 11, Linux и Win7 показывают одинаковый номер)?
2) Обработчик прерывания со стороны драйвера привязывается к лини прерывания с данным номером?
Go to the top of the page
 
+Quote Post
doom13
сообщение Aug 4 2015, 05:45
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Не могу найти ответ на вопрос:
-как система (Linux) назначает номера линий прерывания для устройств? Моему устройству в системе назначается линия прерывания №16.
Go to the top of the page
 
+Quote Post
doom13
сообщение Oct 15 2015, 06:45
Сообщение #26


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(farbius @ Jul 1 2015, 16:49) *
А поток с ПЛИС пишу через datamover.

Приветствую.
Подскажите, какую скорость передачи данных удалось получить на Вашей системе?
Go to the top of the page
 
+Quote Post
Alexey_Rostov
сообщение Oct 15 2015, 07:48
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312



Цитата(doom13 @ Oct 15 2015, 09:45) *
Приветствую.
Подскажите, какую скорость передачи данных удалось получить на Вашей системе?


В буфер ПСИе пишу поток со скоростью примерно 300-400 Мб/с. Можно и быстрее. Поясню: скорость шины с коркой псие 100 Мгц, датамувер кидает по 4 Мб в один из двух буферов отмапированных в памяти ПК. Скорость шины можно повысить до 200 МГц (виртекс 6 прекрасно работает на 200, проблемы начинаются от 250-300 Мгц, все это конечно условно). У меня необходимости в бОльшей скорости не возникало
Go to the top of the page
 
+Quote Post
doom13
сообщение Oct 15 2015, 08:37
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Спасибо, просто упёрся в потолок 8.5-8.7 Gbit/s для Gen2 x4, хотел сравнить c Вашим результатом.
Go to the top of the page
 
+Quote Post
EugeneS
сообщение Oct 20 2015, 07:56
Сообщение #29


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

Группа: Свой
Сообщений: 181
Регистрация: 28-08-04
Пользователь №: 557



QUOTE (doom13 @ Oct 15 2015, 11:37) *
Спасибо, просто упёрся в потолок 8.5-8.7 Gbit/s для Gen2 x4, хотел сравнить c Вашим результатом.


Для коммерческих не предел. Я для Kintex-7 в TRD мерял 12 Gbit/s, а с примером из Northwest Logic 14 Gbit/s.
Go to the top of the page
 
+Quote Post
SnowBuzz
сообщение Feb 10 2017, 14:23
Сообщение #30





Группа: Новичок
Сообщений: 2
Регистрация: 10-02-17
Пользователь №: 95 383



Цитата(farbius @ Jul 1 2015, 12:33) *
Я на начальном этапе делал так (работал в 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?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 02:00
Рейтинг@Mail.ru


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