Safronov 0 28 октября, 2015 Опубликовано 28 октября, 2015 · Жалоба Доброго времени суток. Прошу помощи и совета! Имеется PCIe x1 1.0 устройство на базе Altera Cyclone V GX (Hard IP PCIe endpoint). Данное устройство успешно конфигурируется/отображается на шине и предоставляет работу с внутренними регистрами (чтение/запись), однако в определенных слотах различных мат. плат на MemRd-запрос устройства (EP) от rootport'а не приходит completion-транзакция с данными. Имеется трасса PCIe обменов (PETracer.jpg): RP успешно читает (MRd 52866, ACK 82868 и Cpl 52869) и записывает (MWr 52871, ACK 52872) в регистры устройства, однако RP не отвечает данными на запрос чтения (MRd 52874, ACK 52875) от EP. Данная проблема встречается не на всех платах. Так же имеется PCIe конфигурация устройства: ----------------------------------------------------------- PCI bus 02 device 00 function 00: Header Type 'non-bridge' (single-func) Vendor: 1172 ??? Device: F016 ??? Class: 02 network Revision: 00 SubClass: 00 Ethernet ProgramI/F: 00 CommandReg: 0006 = mem-on busmstr Status Reg: 0010 = CapList (fast) CacheLine: 01 Latency: 00 BIST: 00 SubsysVendor: 0000 SubsysDevice: 0000 Base Addresses: (0) FBBFF000 = mem base=FBBFF000 len=128 CardBus: 00000000 ExpansionROM: 00000000 (no ROM) INTline: 0A INTpin: 01 MinGrant: 00 MaxLatency: 00 Device-Specific Data: 40: 00000000 02006160 00000000 00000000 00847805 00000000 58: 00000000 00000000 00000000 00000000 00007811 00000000 70: 00000000 00000000 00038001 00000000 00020010 07E88000 88: 00002810 01406011 10110000 00000000 00000000 00000000 A0: 00000000 0000001F 00000000 00000000 00010001 00000000 B8: 00000000 00000000 00000000 00000000 00000000 00000000 D0: 00000000 00000000 00000000 00000000 00000000 00000000 E8: 00000000 00000000 00000000 00000000 00000000 00000000 Capabilities List: ID @50 = 05 Message Signaled Interrupt (MSI) ----------------------------------------------------------- Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novartis 0 28 октября, 2015 Опубликовано 28 октября, 2015 · Жалоба А вы корку используете как streaming или как memory mapped? Если как стриминг, то соответсвтенно сами формируете заголовок pcie пакета. Обратите внимание какой request id проставляете в запросе. Там нужно ставить номер шины, номер функции и т.п. хоста. Если на одной машине плата засунута в один слот, то номер шины у нее может быть скажем 2. А на другой машине плата засунута в другой слот и номер шины будет уже 1. Можно посмотреть с помощью команды lspci, на какой шине сидит ваша плата (под линуксом). Вон у вас в логе bus 02 device 00 function 00. А на картинке request id 000:00:0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Safronov 0 29 октября, 2015 Опубликовано 29 октября, 2015 · Жалоба Да, Вы правы - в результате ошибки устройство в Requester ID заголовка всегда выставляло номер шины 0x01. После исправления все успешно заработало, спасибо Вам! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться