Перейти к содержанию
    

Чтение Config Space PCIe Rootport Altera

Добрый день!

 

Пытаюсь прочесть конфиг. пространство PCIe RootPort из NiosII. Просмотрел исходники Linux, использую функции для общения через интерфейс TLP на шине CRA.

К рутпорту цепляю endpoint - система переходит в L0 и DataLinkLayer работает.

 

Используемая функция:

pcie-altera.c

 

static int tlp_cfg_dword_read(struct altera_pcie *pcie, u8 bus, u32 devfn,

int where, u8 byte_en, u32 *value)

{

u32 headers[TLP_HDR_SIZE];

 

 

if (bus == pcie->root_bus_nr)

headers[0] = TLP_CFG_DW0(TLP_FMTTYPE_CFGRD0);

else

headers[0] = TLP_CFG_DW0(TLP_FMTTYPE_CFGRD1);

 

 

headers[1] = TLP_CFG_DW1(TLP_REQ_ID(pcie->root_bus_nr, RP_DEVFN),

TLP_READ_TAG, byte_en);

headers[2] = TLP_CFG_DW2(bus, devfn, where);

 

 

tlp_write_packet(pcie, headers, 0, false);

 

 

return tlp_read_packet(pcie, value);

}

 

 

Посылаю конф.запрос type 0 на чтение шины 0, dev 0, func 0 (на что должен откликнуться Rootport).

Т.е. это самая первая операция которую я делаю до енумерации.

 

Заголовок TLP header:

 

[0] 0x04000001

[1] 0x00001D0F

[2] 0x00000000

 

Функция возвращает PCIBIOS_DEVICE_NOT_FOUND.

 

Корректен ли мой отправляемый рутпорту запрос/пакет?

 

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По делу подсказать, увы, не могу, однако есть ли возможность вклиниться (добавить прозрачного посредника) на шину отправки и приема сообщений, чтобы собрать какие пакеты пересылаются и принимаются?

Стоит задача реализовать работу PCI-E без ОС Linux и без драйверов и тому подобного?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По делу подсказать, увы, не могу, однако есть ли возможность вклиниться (добавить прозрачного посредника) на шину отправки и приема сообщений, чтобы собрать какие пакеты пересылаются и принимаются?

Стоит задача реализовать работу PCI-E без ОС Linux и без драйверов и тому подобного?

 

Да, для начала надо поднять шину без ОС. Напрямую с ниоса. В принципе ничего сложного быть не должно. Т.е. читай конфиг пространство и прописывай туда индексы шин. Но при попытки прочитать что-то из ConfigSpace своего RootPort на котором сидит ниос - в ответ тишина.

 

Через Avalon я не могу посмотреть ConfigSpace. Может надо в HIP PCIe что-то еще включить чтоб можно было отправлять и принимать TLP?

 

Т.е. какая последовательность обращений к своему RP должна быть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...