alexPec 3 7 мая Опубликовано 7 мая · Жалоба Всем доброго дня. Надо стало реализовать хост для PCIe X1 на ксайлинксе. Читаю-читаю, до сих пор не сложилось понимание, что должен сделать хост с PCIe эндпоинтом? Где-то пишут что только инициализация физики - Detection, Polling, Configuration. Где-то пишут что нужен enumeration. Опять же что входит в enumeration? Четкого ответа не нашел. Давно уже работал с PCI, там есть стандартное пространство регистров конфигурации, из них можно прочитать что в устройстве есть (регистры, память, и сколько их), назначить адреса и писать-читать по этим адресам. В PCIe есть что-то такое же? И что должен хост сделать с эндпоинтом, не имея драйвера конкретного устройства, чтобы далее передать работу драйверу для инициализации непосредственно эндпоинта? Ну например, воткнул я неизвестную плату PCIe в комп, операционка опознала его (понимая, что для этого устройства нет драйвера) и сделала что? Назначила (как?) адреса? Прочитала какие размеры и виды IO (памяти,регистров - по аналогии с PCI) поддерживает эндпоинт, прочитала ID (прочитала откуда?). В описании на PCIe от ксалинкс у IP куча интерфейсов: Как понять что я хочу? 🙂 Т.е. как понять что из этого надо эндпоинту? В общем какая-то каша пока в голове, перемешиваю 🙂 . Подскажите пожалуйста что можно почитать доступное (от общего к частному). Есть конечно спецификация, но там, как мне кажется, слишком много того, что не нужно, а чего-то я подозреваю и нет (в частности, того что делает операционка при обнаружении устройства на шине). Но все равно, читаю пока, вникаю... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 198 7 мая Опубликовано 7 мая · Жалоба Опишите вашу задачу, что именно и для чего должен делать ваш хост. В общем случае порядок действий такой: ресет, подъём линка, энумерация, назначение базовых адресов, разрешение работы (настройка управляющих регистров в пространстве конфигурации), обмен данными (чтение/запись по адресам BAR и/или обмен в режиме DMA). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 8 мая Опубликовано 8 мая · Жалоба 7 часов назад, makc сказал: Опишите вашу задачу, что именно и для чего должен делать ваш хост. В общем случае порядок действий такой: ресет, подъём линка, энумерация, назначение базовых адресов, разрешение работы (настройка управляющих регистров в пространстве конфигурации), обмен данными (чтение/запись по адресам BAR и/или обмен в режиме DMA). Хочу запустить акселератор Coral AI. Исходники драйверов есть. Там, глядя по диагонали все необходимое можно найти. Теперь только надо понять что я должен сделать со стороны хоста до начала работы драйвера, т.е. что делает с эндпоинтом операционка до запуска драйвера. На компе вставил в PCIe - все работает как надо. Теперь вместо компа хочу прицепить это чудо к Zynq ultrascale+. Только у меня там операционок никаких нет, надо все руками делать. Интерфейс - PCIe. А эти этапы, которые Вы указали, подробно где-то расписаны? Даже по запросу PCIe enumeration в топе ничего внятного не вылазит. Или я как-то не так смотрю... Интересуют настройки эндпоинта PCIe со стороны хоста, которые для всех эндпоинтов должны выполняться, независимо от назначения и внутренней структуры. И если работали с IP PCIe ксайлинкса, что из этого IP делает автоматически, сам, а что нужно конфигурировать через интерфейсы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 198 8 мая Опубликовано 8 мая · Жалоба 2 часа назад, alexPec сказал: А эти этапы, которые Вы указали, подробно где-то расписаны? Даже по запросу PCIe enumeration в топе ничего внятного не вылазит. Или я как-то не так смотрю... Всё это описано в стандарте, но в разных его частях. Поэтому могу предложить вам почитать книгу, которая есть на местном FTP в /pub/DOC/STANDARDS/PCI/Whitepapers/Budruk R., Anderson D., Shanley T., PCI Express System Architecture(2003).pdf Начните с главы 21. 2 часа назад, alexPec сказал: И если работали с IP PCIe ксайлинкса, что из этого IP делает автоматически, сам, а что нужно конфигурировать через интерфейсы? Такой опыт есть, правда не на Zynq, а на Artix. Но в целом разницы нет, и там, и там Root Complex. Вы управляете ресетом, даёте ресет, IP поднимает линк, далее вы сами должны сформировать конфигурационные транзакции для поиска устройств (endpoint) на шине, записывает параметры в их регистры (назначает адреса, разрешает работу MEM/IO) и выполняет транзакции чтения/записи. В целом там нет ничего сложного, звучит это страшнее, чем есть на самом деле. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 8 мая Опубликовано 8 мая · Жалоба Спасибо! Продолжу погружаться в PCIe... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 198 8 мая Опубликовано 8 мая · Жалоба 20 минут назад, alexPec сказал: Спасибо! Продолжу погружаться в PCIe... Главное не забывайте, что с точки зрения логики энумерации PCIe это тот же PCI с дополнениями. Поэтому можно смело начинать читать, как это делалось/делается для PCI. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
litv 0 8 мая Опубликовано 8 мая · Жалоба "прицепить это чудо к Zynq ultrascale+. Только у меня там операционок никаких нет, надо все руками делать. Интерфейс - PCIe." А какая религия не позволяет работать с операционкой в ПЛИС? Там и PCI сразу готовый есть, ну разве что на на максимальной скорости (< 4Гбит). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 8 мая Опубликовано 8 мая · Жалоба 45 минут назад, litv сказал: А какая религия не позволяет работать с операционкой в ПЛИС? Там и PCI сразу готовый есть, ну разве что на на максимальной скорости (< 4Гбит). Моя личная. Мне нужен полный контроль над ядрами процессора. Иначе не успевает все работать как надо, плюс операционки себе забирают контроль над ядром, а то и над всеми (какие как). Стараюсь все в baremetal делать. Как мне кажется - так оно стабильнее работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться