Zigor 0 19 декабря, 2016 Опубликовано 19 декабря, 2016 · Жалоба Добрый день! Пытаюсь прочесть конфиг. пространство 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. Корректен ли мой отправляемый рутпорту запрос/пакет? Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 20 декабря, 2016 Опубликовано 20 декабря, 2016 · Жалоба По делу подсказать, увы, не могу, однако есть ли возможность вклиниться (добавить прозрачного посредника) на шину отправки и приема сообщений, чтобы собрать какие пакеты пересылаются и принимаются? Стоит задача реализовать работу PCI-E без ОС Linux и без драйверов и тому подобного? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zigor 0 20 декабря, 2016 Опубликовано 20 декабря, 2016 · Жалоба По делу подсказать, увы, не могу, однако есть ли возможность вклиниться (добавить прозрачного посредника) на шину отправки и приема сообщений, чтобы собрать какие пакеты пересылаются и принимаются? Стоит задача реализовать работу PCI-E без ОС Linux и без драйверов и тому подобного? Да, для начала надо поднять шину без ОС. Напрямую с ниоса. В принципе ничего сложного быть не должно. Т.е. читай конфиг пространство и прописывай туда индексы шин. Но при попытки прочитать что-то из ConfigSpace своего RootPort на котором сидит ниос - в ответ тишина. Через Avalon я не могу посмотреть ConfigSpace. Может надо в HIP PCIe что-то еще включить чтоб можно было отправлять и принимать TLP? Т.е. какая последовательность обращений к своему RP должна быть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться