Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Драйвер для PCIe
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Anton1990
Всем добрый день.
Разработан контроллер PCIe на xilinx virtex6. А как собственно решается вопрос с драйвером для работы с девайсом. На сайте ничего внятного не нашел. Интересует драйвер под win7, но и под младшие винды пойдет. А вообще xilinx какойнибудь драйвер предлагает с библиотекой для работы с ним? Или только своими руками?
Заранее спасибо за ответы.
Maverick
Цитата(Anton1990 @ Jun 13 2016, 19:41) *
Всем добрый день.
Разработан контроллер PCIe на xilinx virtex6. А как собственно решается вопрос с драйвером для работы с девайсом. На сайте ничего внятного не нашел. Интересует драйвер под win7, но и под младшие винды пойдет. А вообще xilinx какойнибудь драйвер предлагает с библиотекой для работы с ним? Или только своими руками?
Заранее спасибо за ответы.


Jungo WinDriver Вам в помощь
Anton1990
Цитата(Maverick @ Jun 13 2016, 19:53) *
Jungo WinDriver Вам в помощь

Так это все своими ручками. Но нутром чую что должен быть фирменный драйвер от Xilinx с которым нужно научиться работать в программе верхнего уровня.
gosha-z
А откуда Xilinx знает, что вы там наворотили в PCIe? Сами, голубчик, сами.
Anton1990
Цитата(gosha-z @ Jun 14 2016, 19:20) *
А откуда Xilinx знает, что вы там наворотили в PCIe? Сами, голубчик, сами.


А что значит наворотили? Корка от Xilinxa, а значит должна поддерживаться стандартным драйвером (банальные операции записи в регистр, чтение регистра).
krux
Цитата(Anton1990 @ Jun 15 2016, 18:49) *
А что значит наворотили? Корка от Xilinxa, а значит должна поддерживаться стандартным драйвером (банальные операции записи в регистр, чтение регистра).

никто вам ничего не должен.

то, про что вы пишете - это запись/чтение слэйвом, без использования bus master dma.
скорость обмена данными с устройством в таком режиме не превышает 1(один) Мбайт/сек.
вот такой вот "стандартный драйвер".
vladec
Вам же порекомендовали WinDriver, очень хорошая и удобная прога, в особенности для "писать в регистры", а для более сложных случаев избавляет от трудностей программирования в "Нулевом кольце".
Anton1990
Цитата(vladec @ Jun 16 2016, 10:40) *
Вам же порекомендовали WinDriver, очень хорошая и удобная прога, в особенности для "писать в регистры", а для более сложных случаев избавляет от трудностей программирования в "Нулевом кольце".


А драйверок под win7 x64 на WinDriver получится? Слыхал с этим вообще большие проблемы.
vladec
Там вся драйверная часть в самом WinDriver-е, Вам надо будет программировать в верхнем кольце просто вызывая соответствующие функции.
novartis
Раз речь зашла про WinDriver, может кто подскажет, как для пересылок из ПЛИС в ПК выделить буфер больше 4МБайт на стороне ПК?
Использую функцию WDC_DMAContigBufLock():

WDC_DMAContigBufLock(m_hDev, ppBuf, DMA_FROM_DEVICE | DMA_ALLOW_64BIT_ADDRESS | DMA_LARGE_BUFFER, MEM_SIZE, &m_pFpgaDma->pDma)

Если MEM_SIZE задать больше 4 МБайт, то функция возвращает ошибку, что не может выделить такой буфер.
4Мбайта может, но тоже не всегда.
1МБайт стабильно возвращает.

Использую WinDriver 10.10, скачал его с трекера.
Читал, что в версии WinDriver 11.7 как раз добавили возможность работы с большими объемами памяти.
На самом сайте jungo можно скачать только самую последнюю версию.
Скачал 12.2, установил, но она не запускается, какая то ошибка.

Вообщем, подскажите, можно ли в WiDriver 10.10 выделить буфер больше 4 МБайт?
Или нужно 11.7 искать?
dmitry-tomsk
Цитата(novartis @ Jun 19 2016, 20:45) *
Раз речь зашла про WinDriver, может кто подскажет, как для пересылок из ПЛИС в ПК выделить буфер больше 4МБайт на стороне ПК?
Использую функцию WDC_DMAContigBufLock():

WDC_DMAContigBufLock(m_hDev, ppBuf, DMA_FROM_DEVICE | DMA_ALLOW_64BIT_ADDRESS | DMA_LARGE_BUFFER, MEM_SIZE, &m_pFpgaDma->pDma)

Если MEM_SIZE задать больше 4 МБайт, то функция возвращает ошибку, что не может выделить такой буфер.
4Мбайта может, но тоже не всегда.
1МБайт стабильно возвращает.

Использую WinDriver 10.10, скачал его с трекера.
Читал, что в версии WinDriver 11.7 как раз добавили возможность работы с большими объемами памяти.
На самом сайте jungo можно скачать только самую последнюю версию.
Скачал 12.2, установил, но она не запускается, какая то ошибка.

Вообщем, подскажите, можно ли в WiDriver 10.10 выделить буфер больше 4 МБайт?
Или нужно 11.7 искать?


Это не windriver - это ограничение ос. Используйте scatter-gather, благо сейчас мосты в плис для pcie это всё умеют.
novartis
Хотел ведь написать, что scatter-gather использовать не будем, но подумал, зачем усложнять....

scatter-gather использовать не будем, нельзя!
Боролся с этой же проблемой под линуксом, там победил, перекомпилив ядро линукса с определенными опциями.
http://electronix.ru/forum/index.php?showtopic=133258

Но сейчас нужно перейти под виндоус.

Вот в WinDriver Release Notes Version 11.4.0 пункт есть:
PCI on Windows: Added support for preallocating bidirectional contiguous DMA buffers (DMA_TO_FROM_DEVICE) using INF-file configuration.
То есть с помощью драйвера производится преаллокация буфера.
Точно также в линуксе пришлось делать преаллокацию буфера.
Думаю, что новая версия может помочь, вот бы кто подтвердил.



Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.