|
Разработка PCIe, на чем поднять PCIe |
|
|
|
Jun 20 2015, 06:30
|
Местный
  
Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312

|
Цитата(NikSave @ Jun 20 2015, 09:15)  Что использовать ПЛИС или готовый контроллер? Если ПЛИС, то нужны ли какие либо покупные ядра? Делал на ПЛИС, ml605 board. Использовал стандартное ядро. На ПК работал с крякнутым windrive.
|
|
|
|
|
Jun 20 2015, 06:49
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 26-05-09
Пользователь №: 49 592

|
Цитата(farbius @ Jun 20 2015, 09:30)  Делал на ПЛИС, ml605 board. Использовал стандартное ядро. На ПК работал с крякнутым windrive. что за стандартное ядро? В ИСЕ вроде ядра конечных точек платные? или к данной плате было бесплатным?
|
|
|
|
|
Jun 20 2015, 07:44
|
Местный
  
Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312

|
Цитата(NikSave @ Jun 20 2015, 09:49)  что за стандартное ядро? В ИСЕ вроде ядра конечных точек платные? или к данной плате было бесплатным? Собирал в XPS. А потом добавлял в PLAN ahead. У меня задача была обмен данными плата-пк
|
|
|
|
|
Jun 20 2015, 10:54
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 26-05-09
Пользователь №: 49 592

|
Цитата(farbius @ Jun 20 2015, 10:44)  Собирал в XPS. А потом добавлял в PLAN ahead. У меня задача была обмен данными плата-пк Впринципе у меня та же задача. Записать в регистр, прочитать из регистра. Как по Вашему? Было геморойно разобраться? Может стоит сделать на какой либо микросхеме контроллере?
|
|
|
|
|
Jun 20 2015, 14:01
|
Местный
  
Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312

|
Цитата(NikSave @ Jun 20 2015, 13:54)  Впринципе у меня та же задача. Записать в регистр, прочитать из регистра. Как по Вашему? Было геморойно разобраться? Может стоит сделать на какой либо микросхеме контроллере? В XPS все довольно просто: собирается проект где мастер pcie, слейв например leds. Мапировал leds на bar pcie. На ПК запускал программу pcie tree , с её помощью зажигал диоды на плате. Посмотрите форум, я выкладывал даже скриншот проекта
|
|
|
|
|
Jun 20 2015, 17:20
|
Знающий
   
Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088

|
Цитата(NikSave @ Jun 20 2015, 10:15)  Есть желание сделать устройство управляемое по PCIExpress. А отсуда возникает ряд вопросов: Что использовать ПЛИС или готовый контроллер? Посмотрите в сторону мостов с PCIe на что-либо более "удобоваримое" (PCIe bridge), на PCI или Local Bus. А уж PCI Target много проще поднять, да и ПЛИС для PCI нужна куда более дешевая, чем для PCIe, какой-нибудь Spartan-2 вполне потянет.
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
Jun 21 2015, 06:28
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 26-05-09
Пользователь №: 49 592

|
Цитата(gerber @ Jun 20 2015, 20:20)  Посмотрите в сторону мостов с PCIe на что-либо более "удобоваримое" (PCIe bridge), на PCI или Local Bus. А уж PCI Target много проще поднять, да и ПЛИС для PCI нужна куда более дешевая, чем для PCIe, какой-нибудь Spartan-2 вполне потянет. PCI не нужен. Именно PCIe. Кстати какой мост порекомендуете? (название микросхемы, чтобы было от чего отталкиваться).
|
|
|
|
|
Jun 21 2015, 10:35
|
Знающий
   
Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088

|
Цитата(NikSave @ Jun 21 2015, 10:28)  PCI не нужен. Именно PCIe. Кстати какой мост порекомендуете? (название микросхемы, чтобы было от чего отталкиваться). Я использовал XIO2001 от Texas Instruments, это PCIe-PCI мост, далее ставил Spartan-2 с простейшим PCI Target, и через регистры PCI уже можно делать, что нужно. Если нет огромных потоков данных в PC, требующих мастер-режима от PCI устройства, то достаточно более чем.
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
Jun 21 2015, 13:06
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 26-05-09
Пользователь №: 49 592

|
Цитата(dmitry-tomsk @ Jun 21 2015, 09:54)  Всё от плис зависит, какая плис то? Впринципе любая от xilinx. Ориентировочно виртекс7. Только я непонял причем здесь плис если рассматривается вариант внешней микоросхемы моста. Или вы рекомендуете сделать контроллер на плис? Цитата(gerber @ Jun 21 2015, 13:35)  Я использовал XIO2001 от Texas Instruments, это PCIe-PCI мост, далее ставил Spartan-2 с простейшим PCI Target, и через регистры PCI уже можно делать, что нужно. Если нет огромных потоков данных в PC, требующих мастер-режима от PCI устройства, то достаточно более чем. А с драйвером как дела особенно под win? Имеются?
|
|
|
|
|
Jun 21 2015, 22:08
|
Знающий
   
Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088

|
Цитата(NikSave @ Jun 21 2015, 17:06)  А с драйвером как дела особенно под win? Имеются? Для моста особый драйвер не нужен, его регистры стандартизованы спецификацией и поэтому типовой драйвер подходит. А для своего устройства за мостом, безусловно, драйверок написать придется.
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
Jun 22 2015, 18:33
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(farbius @ Jun 20 2015, 17:01)  В XPS все довольно просто: собирается проект где мастер pcie, слейв например leds. Мапировал leds на bar pcie. На ПК запускал программу pcie tree , с её помощью зажигал диоды на плате. А pcie tree будет работать только под 32-х разрядной системой? Цитата(dmitry-tomsk @ Jun 21 2015, 16:23)  На Xilinx 7-й серии всё просто, ip-ядро моста + axi central dma controller. Есть xapp по этому поводу. Там только драйвер писать надо. Зато скорость любая. Есть задача, данные приходят по 10G Ethernet (используется Virtex 7) и надо их запихнуть в ПК (скорее всего под управлением Linux). Для ядра 10G Ethernet user-интерфейс - это AXI4 Stream. Что лучше в данном случае использовать: ядро AXI4 to PCIe bridge или "голое" ядро Gen3 Integrated Block for PCI Express, где интерфейсы AXI4 Stream? Пока только начинаю разбираться, буду рад совету.
|
|
|
|
|
Jun 22 2015, 19:45
|
Местный
  
Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312

|
Цитата(doom13 @ Jun 22 2015, 21:33)  А pcie tree будет работать только под 32-х разрядной системой? pcie tree только для 32-х разрядной системы. Данную программу использовал исключительно для отладки PCIe моста на ПЛИС, чтобы программист мог начать работать с winDrive. Цитата(doom13 @ Jun 22 2015, 21:33)  Есть задача, данные приходят по 10G Ethernet (используется Virtex 7) и надо их запихнуть в ПК (скорее всего под управлением Linux). Для ядра 10G Ethernet user-интерфейс - это AXI4 Stream. Что лучше в данном случае использовать: ядро AXI4 to PCIe bridge или "голое" ядро Gen3 Integrated Block for PCI Express, где интерфейсы AXI4 Stream? Для bridge PCIe вам необходимо будет делать переход из stream в memory mapped. Data mover вам в помощь. По поводу Gen3 Integrated Block for PCI Express сказать ничего не могу.
|
|
|
|
|
Jun 22 2015, 20:15
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(farbius @ Jun 22 2015, 22:45)  pcie tree только для 32-х разрядной системы. Данную программу использовал исключительно для отладки PCIe моста на ПЛИС, чтобы программист мог начать работать с winDrive. Спасибо, думал у Вас какой-то другой pcie tree. Цитата(farbius @ Jun 22 2015, 22:45)  Для bridge PCIe вам необходимо будет делать переход из stream в memory mapped. Data mover вам в помощь. По поводу Gen3 Integrated Block for PCI Express сказать ничего не могу. Спасибо. Пока читаю про AXI4 to PCIe bridge, но, возможно, Gen3 Integrated Block for PCI Express для моего случая подойдёт больше?
|
|
|
|
|
Jun 23 2015, 05:33
|
Знающий
   
Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741

|
Цитата(doom13 @ Jun 22 2015, 23:15)  Спасибо, думал у Вас какой-то другой pcie tree.
Спасибо. Пока читаю про AXI4 to PCIe bridge, но, возможно, Gen3 Integrated Block for PCI Express для моего случая подойдёт больше? Не подойдёт, там уровень транзакций, надо пакеты формировать, чем мост и занимается. Мост к тому же мастером работает, удобно управление делать через регистры на AXI4Lite
|
|
|
|
|
Jun 24 2015, 07:58
|
Местный
  
Группа: Свой
Сообщений: 372
Регистрация: 14-02-06
Пользователь №: 14 339

|
Цитата(doom13 @ Jun 24 2015, 10:13)  Подскажите номер этого xapp. xapp1171-pcie-central-dma-subsystem.pdf
|
|
|
|
|
Jun 24 2015, 12:30
|
Частый гость
 
Группа: Свой
Сообщений: 181
Регистрация: 28-08-04
Пользователь №: 557

|
QUOTE (toshas @ Jun 24 2015, 10:58)  xapp1171-pcie-central-dma-subsystem.pdf Немного дегтя: "To test this targeted design platform in hardware, you need a host machine capable of PCI Express Gen1 x4, and the appropriate drivers and software that allow you to initiate PCI Express traffic to the FPGA endpoint. The drivers and software are not provided with this application note, and must be custom developed." И скорость похоже не меряли.
|
|
|
|
|
Jun 30 2015, 08:14
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(dmitry-tomsk @ Jun 30 2015, 08:45)  Поставьте jungo windriver, мастер там всё за Вас сделает. Спасибо попробуем. Может кто пояснит правило задания параметров для PCIe:BARs и AXI:BARs для ядра AXI to PCIe bridge? Что-то никак не могу понять, как это правильно делается. Как понимаю, для PCIe:BARs надо ещё память в системе создать, куда ядро будет писать данные полученные по PCIe или читать по запросу PCIe. Но как адрес и размер данной памяти увязать с параметрами PCIe:BARs?
|
|
|
|
|
Jul 7 2015, 07:54
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(dmitry-tomsk @ Jun 30 2015, 08:45)  Поставьте jungo windriver, мастер там всё за Вас сделает. Немного  . Вопрос по работе с jungo windriver. Скачал версию 10.10 + кейген и всё класно работало. После перепрошивки FPGA создавал и устанавливал свой драйвер всё работало. Если заливалась новая прошивка в ПЛИС, то сносил созданный ранее драйвер, создавал и устанавливал новый и можно было работать. Т.е. перезагрузка ПК не требовалась. Сейчас пришлось переустановить Windows 7 и всё работает как-то совсем не так. Плата вставлена в слот PCIe, заливаю прошивку в FPGA, создаю и устанавливаю драйвер - всё работает. Если перепрошить FPGA то при чтении получаю все FFFF (т.е. ничего не читается и не пишется). Если перезагрузить комп, то всё вернётся в работоспособное состояние. Пробую снести ранее установленный драйвер, он удаляется и комп виснет (пробовал сносить из менегера устройств и windriver-визарда, виснет в обоих случаях). После ресета и создания/переустановки драйвера опять могу писать/читать память в FPGA. Может посоветуете, что тут можно поправить, чтоб работало без перезагрузки компа? Думаю сносить и переустанавливать систему, не понятно, как раньше работало.
|
|
|
|
|
Jul 7 2015, 08:54
|
Местный
  
Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312

|
Цитата(doom13 @ Jun 30 2015, 11:14)  Может кто пояснит правило задания параметров для PCIe:BARs и AXI:BARs для ядра AXI to PCIe bridge? Что-то никак не могу понять, как это правильно делается. Я все параметры оставил по умолчанию, за исключением адресов. Для axi:bar все просто. В параметрах для адреса прописываете адреса мапируемых областей вашей axi системы (Вы так делали на скриншотах). Цитата Как понимаю, для PCIe:BARs надо ещё память в системе создать, куда ядро будет писать данные полученные по PCIe или читать по запросу PCIe. Но как адрес и размер данной памяти увязать с параметрами PCIe:BARs? Создаете память физическую с начальным адресом например AddrPhys (адрес возвращает функция из драйвера windrive). Далее в соответствующие контрольные регистры моста пишете адрес следующий AddrPhys & (Buffersize - 1), где Buffersize - размер выделяемого буфера. Если необходимо читать из PCIe:BARs с помощью ДМА, то в регистр источника ДМА пишете адрес PCIe:BAR в системе с axi + AddrPhys & (Buffersize - 1)
|
|
|
|
|
Jul 7 2015, 09:27
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(farbius @ Jul 7 2015, 11:54)  Спасибо, тут я более-менее разобрался. С PCIe:BARs уже всё понятно и уже затестил, как работает. Остаётся проверить работу AXI:BARs, но тут, как понял, без написания драйвера не прокатит (драйвер должен выделить адреса и размеры для буферов на которые ссылаются AXI:BARs + прописать эти параметры в настройки моста). Сейчас наиболее актуально Цитата(doom13 @ Jul 7 2015, 10:54)  Немного  . Вопрос по работе с jungo windriver. Скачал версию 10.10 + кейген и всё класно работало. После перепрошивки FPGA создавал и устанавливал свой драйвер всё работало. Если заливалась новая прошивка в ПЛИС, то сносил созданный ранее драйвер, создавал и устанавливал новый и можно было работать. Т.е. перезагрузка ПК не требовалась. Сейчас пришлось переустановить Windows 7 и всё работает как-то совсем не так. Плата вставлена в слот PCIe, заливаю прошивку в FPGA, создаю и устанавливаю драйвер - всё работает. Если перепрошить FPGA то при чтении получаю все FFFF (т.е. ничего не читается и не пишется). Если перезагрузить комп, то всё вернётся в работоспособное состояние. Пробую снести ранее установленный драйвер, он удаляется и комп виснет (пробовал сносить из менегера устройств и windriver-визарда, виснет в обоих случаях). После ресета и создания/переустановки драйвера опять могу писать/читать память в FPGA. Может посоветуете, что тут можно поправить, чтоб работало без перезагрузки компа? Думаю сносить и переустанавливать систему, не понятно, как раньше работало. Не знаю что делать, то ли сносить Windows и пробовать всё переустановить?
|
|
|
|
|
Jul 8 2015, 06:22
|
Местный
  
Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312

|
Цитата(doom13 @ Jul 8 2015, 09:01)  После переустановки Windows ситуация не изменилась. Windriver устанавливает INF-файл, в системе появляется созданное устройство, но при попытке выполнить для данного INF-файла uninstall комп виснет. Пересоберите проект, проверьте параметры ядра
|
|
|
|
|
Jul 8 2015, 07:41
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(dmitry-tomsk @ Jul 8 2015, 10:19)  После смены прошивки стирается конфиг пространство PCIE - прописывает его windows при загрузке, так что придётся каждый раз перезагружать Это 100%? Хорошо, тогда ситуация такая - всё происходит в первый раз. Залили FPGA, драйвера в системе ещё нет. Запускаем Windriver-wizard, создаём и устанавливаем драйвер. Система видит новое устройство и может по PCIe писать/читать адресное пространство в ПЛИС. Пару дней назад после перепрошивки FPGA помогал снос старого и создание/установка нового драйвера. Что-то изменилось и теперь так не работает (при сносе драйвера ОС виснет). Уже начинаю сомневаться, работало ли оно вообще по этому принципу (тогда только-только всё запустил и проверил, что пишет/читает данные в ПЛИС), но работало. Цитата(Golikov A. @ Jul 8 2015, 10:33)  может удалять драйвер до прошивки FPGA поможет? Ну и если уж совсем беда, я бы попробовал виртуальную машину, ее куда легче передернуть.... Хорошо, счас ещё раз всё с нуля установлю и попробую. А по поводу виртуальной машины, что-то мне кажется, что там будет ещё больше проблем (с доступом к PCIe).
|
|
|
|
|
Jul 20 2015, 06:34
|
Участник

Группа: Свой
Сообщений: 62
Регистрация: 22-09-06
Из: Новосибирск
Пользователь №: 20 585

|
Делал на Spartan6, у которого аппаратный Endpoint. Поддержку прерываний и DMA контроллер писал сам, правда DMA только в одну сторону - от устройства в систему. Драйвер сделал в Jungo Windriver. Если интересно, схемку вышлю, опытом поделюсь. Цитата(doom13 @ Jul 8 2015, 16:45)  Нашёл волшебную последовательность действий при которой всё работает: ... Тоже с таким приходится сталкиваться. Win7 помнит все что в нее втыкали, поэтому иногда приходится делать так: 1) Запустить командную строку командой cmd 2) В командной строке выполнить команду set devmgr_show_nonpresent_devices=1 3) затем start devmgmt.msc и запустить Диспетчер устройств 4) В Диспетчере устройств в меню Вид поставить галку Показать скрытые устройства 5) Раскрыть нужную ветку, найти отсутсвующее устройство (оно будет затемненным) и удалить его. Можно в батник оформить. Еще бывает полезно включить Write filter, чтобы ничего не приходилось чистить.
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|