Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Altera CV PCIe: не приходят completion-транзакции
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > ISA/PCI/PCI-X/PCI Express
Safronov
Доброго времени суток.

Прошу помощи и совета! Имеется 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
А вы корку используете как streaming или как memory mapped?

Если как стриминг, то соответсвтенно сами формируете заголовок pcie пакета. Обратите внимание какой request id проставляете в запросе. Там нужно ставить номер шины, номер функции и т.п. хоста. Если на одной машине плата засунута в один слот, то номер шины у нее может быть скажем 2. А на другой машине плата засунута в другой слот и номер шины будет уже 1. Можно посмотреть с помощью команды lspci, на какой шине сидит ваша плата (под линуксом).

Вон у вас в логе bus 02 device 00 function 00. А на картинке request id 000:00:0.
Safronov
Да, Вы правы - в результате ошибки устройство в Requester ID заголовка всегда выставляло номер шины 0x01. После исправления все успешно заработало, спасибо Вам!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.