Jump to content

    

Разработка PCIe

После переустановки Windows ситуация не изменилась. Windriver устанавливает INF-файл, в системе появляется созданное устройство, но при попытке выполнить для данного INF-файла uninstall комп виснет.

Share this post


Link to post
Share on other sites
После переустановки Windows ситуация не изменилась. Windriver устанавливает INF-файл, в системе появляется созданное устройство, но при попытке выполнить для данного INF-файла uninstall комп виснет.

Пересоберите проект, проверьте параметры ядра

Share this post


Link to post
Share on other sites

А как это поможет? Заливаю один и тот же бинарник. После перезаливки FPGA драйвер перестаёт писать/читать память FPGA. Перезагружаю комп и работает. Вот комп каждый раз перезагружать не хочется, поэтому удаляю установленный драйвер, создаю и устанавливаю новый и работаю дальше (раньше именно так работало, пока не сломал и не переустановил систему). Сейчас при удалении драйвера комп всё время виснет, уже переставил систему, но не помогло. Т.е. если менять прошивку FPGA, то дальнейшая работа возможна только с перезагрузкой компа. Хочется как-то исправить это.

Share this post


Link to post
Share on other sites
А как это поможет? Заливаю один и тот же бинарник. После перезаливки FPGA драйвер перестаёт писать/читать память FPGA. Перезагружаю комп и работает. Вот комп каждый раз перезагружать не хочется, поэтому удаляю установленный драйвер, создаю и устанавливаю новый и работаю дальше (раньше именно так работало, пока не сломал и не переустановил систему). Сейчас при удалении драйвера комп всё время виснет, уже переставил систему, но не помогло. Т.е. если менять прошивку FPGA, то дальнейшая работа возможна только с перезагрузкой компа. Хочется как-то исправить это.

После смены прошивки стирается конфиг пространство PCIE - прописывает его windows при загрузке, так что придётся каждый раз перезагружать

Share this post


Link to post
Share on other sites

может удалять драйвер до прошивки FPGA поможет? Ну и если уж совсем беда, я бы попробовал виртуальную машину, ее куда легче передернуть....

Share this post


Link to post
Share on other sites
После смены прошивки стирается конфиг пространство PCIE - прописывает его windows при загрузке, так что придётся каждый раз перезагружать

Это 100%?

Хорошо, тогда ситуация такая - всё происходит в первый раз. Залили FPGA, драйвера в системе ещё нет. Запускаем Windriver-wizard, создаём и устанавливаем драйвер. Система видит новое устройство и может по PCIe писать/читать адресное пространство в ПЛИС.

Пару дней назад после перепрошивки FPGA помогал снос старого и создание/установка нового драйвера. Что-то изменилось и теперь так не работает (при сносе драйвера ОС виснет). Уже начинаю сомневаться, работало ли оно вообще по этому принципу (тогда только-только всё запустил и проверил, что пишет/читает данные в ПЛИС), но работало.

 

может удалять драйвер до прошивки FPGA поможет? Ну и если уж совсем беда, я бы попробовал виртуальную машину, ее куда легче передернуть....

Хорошо, счас ещё раз всё с нуля установлю и попробую. А по поводу виртуальной машины, что-то мне кажется, что там будет ещё больше проблем (с доступом к PCIe).

 

Share this post


Link to post
Share on other sites
может удалять драйвер до прошивки FPGA поможет? Ну и если уж совсем беда, я бы попробовал виртуальную машину, ее куда легче передернуть....

Такой способ также не проходит. Windows чистая, пока поставил только Vivado и Jungo Windriver.

 

Share this post


Link to post
Share on other sites

Нашёл волшебную последовательность действий при которой всё работает:

1. Удаляем установленное PCIe устройство в менеджере устройств (ставим галку Delete the driver software for this device).

2. Перезаливаем прошивку FPGA.

3. Обновляем конфигурацию оборудования в менеджере устройств.

4. Запускаем Jungo WinDriver (Driver Wizard), создаём и устанавливаем драйвер для нового устройства.

5. Получаем рабочую систему без перезапуска ПК (установленный драйвер пишет/читает память в FPGA).

Share this post


Link to post
Share on other sites

Делал на Spartan6, у которого аппаратный Endpoint. Поддержку прерываний и DMA контроллер писал сам, правда DMA только в одну сторону - от устройства в систему. Драйвер сделал в Jungo Windriver. Если интересно, схемку вышлю, опытом поделюсь.

 

Нашёл волшебную последовательность действий при которой всё работает:

...

 

Тоже с таким приходится сталкиваться. Win7 помнит все что в нее втыкали, поэтому иногда приходится делать так:

 

1) Запустить командную строку командой cmd

2) В командной строке выполнить команду set devmgr_show_nonpresent_devices=1

3) затем start devmgmt.msc и запустить Диспетчер устройств

4) В Диспетчере устройств в меню Вид поставить галку Показать скрытые устройства

5) Раскрыть нужную ветку, найти отсутсвующее устройство (оно будет затемненным) и удалить его.

 

Можно в батник оформить.

 

Еще бывает полезно включить Write filter, чтобы ничего не приходилось чистить.

 

Share this post


Link to post
Share on other sites

здравствуйте. Если AXI4 to PCIe bridge в использовании проще, чем Gen3 Integrated Block for PCI Express , в котором требуется разбирать транзакции, то объясните пожалуйста, в чем наглядное преимущество  Integrated Block?  Cкорости достигаются больше?

Edited by shide_3

Share this post


Link to post
Share on other sites

Приветствую!

7 minutes ago, shide_3 said:

здравствуйте. Если AXI4 to PCIe bridge в использовании проще, чем Gen3 Integrated Block for PCI Express , в котором требуется разбирать транзакции, то объясните пожалуйста, в чем наглядное преимущество  Integrated Block?  Cкорости достигаются больше?

AXI4 to PCIe bridge проще только в использовании конечным юзером,  а в конструкции сложнее так как bridge в своем составе содержит в том числе и  Gen3 Integrated Block for PCI Express. Если функционал или параметры работы обеспечиваемые AXI4 to PCIe bridge вас не устраивают вы можете навернуть свою обвязку вокруг Gen3 Integrated Block for PCI Express. Может и получите и скорости чуть повыше, и интерфейс чуть поудобнее. 

Удачи! Rob.

Share this post


Link to post
Share on other sites
17 hours ago, RobFPGA said:

Приветствую!

AXI4 to PCIe bridge проще только в использовании конечным юзером,  а в конструкции сложнее так как bridge в своем составе содержит в том числе и  Gen3 Integrated Block for PCI Express. Если функционал или параметры работы обеспечиваемые AXI4 to PCIe bridge вас не устраивают вы можете навернуть свою обвязку вокруг Gen3 Integrated Block for PCI Express. Может и получите и скорости чуть повыше, и интерфейс чуть поудобнее. 

Удачи! Rob.

ну, задача в общем то не замудренная - передавать блоки по 2к с загрузкой примерно 10 Мбайт/сек. Насколько целесообразно юзать "чистый" аппаратный блок ?

Share this post


Link to post
Share on other sites
1 час назад, shide_3 сказал:

ну, задача в общем то не замудренная - передавать блоки по 2к с загрузкой примерно 10 Мбайт/сек. Насколько целесообразно юзать "чистый" аппаратный блок ?

Это только вам решать. Сколько времени потратите на разработку своей обвязки, сколько ошибок там сделаете и какой прирост получите в скорости - зависит от вас.

Приведу пример - когда Altera/Intel только ввела поддержку AMBA AXI - их переходник с амбы на авалон был ужасен и я написал свой. Выигрыш огромен был по скорости работы. А вот обогнать их вариант DMA удалось лишь по размеру IP блока - а ведь я тратил время на разработку и деньги моего работодателя.

Share this post


Link to post
Share on other sites
1 hour ago, shide_3 said:

передавать блоки по 2к с загрузкой примерно 10 Мбайт/сек

Это ни о чем.

Share this post


Link to post
Share on other sites

Приветствую!

1 hour ago, shide_3 said:

ну, задача в общем то не замудренная - передавать блоки по 2к с загрузкой примерно 10 Мбайт/сек. Насколько целесообразно юзать "чистый" аппаратный блок ?

Чистый аппаратный блок имеет интерфейс TLP layer.  Соответственно вам придется делать обвязку которая будет формировать/парсить правильные пакеты TLP в соответствии с протоколом PCIe. И если передача данных в направлении из FPGA в PC еще не столь сложна то в обратном направлении  придется попотеть чтобы правильно  выстроить цепочку запрос/ответ.  

Делать свою обвязку для PCIe IP  есть смысл если вам скучно на работе и ближайшие пол-года  вам нечем более заняться :whistle3: Тогда есть смысл потратить это время на изучение потрохов PCIe. 

Удачи! Rob.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this