Начал разбираться с PCIE и есть вопрос. Опиушу ситуацию: 1. Есть мат. плата на которой стоит процессорный модуль с LINUX. 2. На плате также стоит FPGA ARRIA2GX, которая связана с процессорным модулей по PCIE 3. Хочется реализовать простейший аппаратный цикл в данном случае MEMORY WRITE non posted 4. В FPGA используется HARD IP PCIE 5. В результате енумерации линукс увидел устройство с задаными ID . Увиделся выбранный BAR. 6. Делается запись в этот бар со стороны LINUX со смещением 0х0 значение 0х30. (32bit) 7. На анализаторе в FPGA видим реквест: (64 битные слова) 00Е0_000F-4000_0001 0000_0000_BC00_0000 0000_0030_0000_0030
FPGA формирует в ответ на это COMPLETION 0100_0000-0А00_0001 0000_0000-00Е0_0000
но после этого операционка вешается. Явно почему то не понравился этот комплешн...
8. Делаем запись в этот бар со стороны LINUX со смещением 0х8 значение 0хDEAD_BEEF (32bit) 9. На анализаторе в FPGA видим реквест: (64 битные слова) 00Е0_000F-4000_0001 0000_0000_BC00_0020 DEAD_BEEF_DEAD_BEEF
FPGA формирует в ответ на это COMPLETION 0100_0000-0А00_0001 0000_0000-00Е0_0000
Все ок...
Подскажите люди добрые, в чом собака порылась? В принципе проходят даже некоторые циклы чтения, но также иногда зависают.... Если нужна какая доп информация отвечу. Понимаю что вопрос чайниковский, но все же!
p.s. Не откажусь от грамотной консультации, могу перезвонить с вопросами и т.д. p.s.s. Понимаю что есть какая то мелочь но найти ее очень тяжело. p.s.s.s. Может просто кто проверит правильность формируемого комплешина? Может кто даст исходник какой посмотреть с примером простейшего чтения/записи слов без всяких DMA и усложнений? В качестве интерфейса к ALTERA HARD-IP используется AVALON-ST.
|