реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Altera CV PCIe: не приходят completion-транзакции
Safronov
сообщение Oct 28 2015, 08:33
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 24-07-15
Пользователь №: 87 707



Доброго времени суток.

Прошу помощи и совета! Имеется 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)

-----------------------------------------------------------


Прикрепленное изображение
Go to the top of the page
 
+Quote Post
novartis
сообщение Oct 28 2015, 18:29
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 326
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



А вы корку используете как streaming или как memory mapped?

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

Вон у вас в логе bus 02 device 00 function 00. А на картинке request id 000:00:0.
Go to the top of the page
 
+Quote Post
Safronov
сообщение Oct 29 2015, 08:45
Сообщение #3





Группа: Новичок
Сообщений: 2
Регистрация: 24-07-15
Пользователь №: 87 707



Да, Вы правы - в результате ошибки устройство в Requester ID заголовка всегда выставляло номер шины 0x01. После исправления все успешно заработало, спасибо Вам!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th March 2017 - 16:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.05822 секунд с 7
ELECTRONIX ©2004-2016