Представлен проект PCIem для синтетической эмуляции устройств PCIe в user space Обложка: Skyread

Представлен проект PCIem для синтетической эмуляции устройств PCIe в user space

Новости
Главное:

  • Представлен открытый проект PCIem для синтетической эмуляции PCIe-устройств в пользовательском пространстве.
  • PCIem реализует виртуальные устройства PCIe в ядре Linux без необходимости реального оборудования.
  • Проект поддерживает управление BAR, прерывания, DMA, P2P DMA и позволяет создавать прототипы PCIe в пользовательском пространстве.

Разработчик Джойел Буэно анонсировал выход PCIem — открытого фреймворка для синтетической эмуляции устройств PCI Express (PCIe), полностью функционирующего в пользовательском пространстве Linux. Исходный код проекта написан на языке C и доступен на GitHub под лицензией MIT, что обеспечивает широкую доступность и возможность адаптации.

PCIem представляет собой инновационный инструмент для создания виртуальных PCIe-устройств посредством нескольких новых методик, позволяющих преобразовывать синтетические карты в полноценные PCI-устройства, распознаваемые хост-системой. При этом отсутствует необходимость использования физического оборудования, что открывает новые возможности для разработки и тестирования.

Ключевые технические возможности проекта включают поддержку Base Address Register (BAR) с функциями программной регистрации и управления, а также продвинутую архитектуру, основанную на точках наблюдения CPU для мониторинга доступа к устройствам. Кроме того, PCIem реализует полноценную поддержку разных типов прерываний — IRQ, MSI и MSI-X с динамическим запуском.

Архитектура проекта построена на модульной системе возможностей PCI, оформленной как связанный список, что облегчает расширение функционала. Важным аспектом является система прямого доступа к памяти (DMA), которая поддерживает IOMMU и атомарные операции, а также обеспечивает реализацию однорангового DMA между устройствами с контролем доступа через белые списки.

Одним из значимых преимуществ PCIem является возможность реализации собственных прототипов PCIe-устройств в произвольном пользовательском пространстве, что значительно упрощает разработку и эксперименты с аппаратным обеспечением без необходимости в дорогостоящем оборудовании.

Таким образом, PCIem выступает универсальным и удобным инструментом для разработчиков программного и аппаратного обеспечения, заинтересованных в быстрых и гибких методах эмуляции PCIe-устройств в Linux-средах, способствуя ускорению инноваций и снижению издержек на тестирование.

Tagged