Открытая прошивка и аппаратная часть полётного контроллера квадрокоптера на ESP32 из доступных компонентов для обучения и исследований.
cakehonolulu/pciem
Фреймворк для ядра Linux, позволяющий создавать виртуальные PCIe-устройства в userspace и тестировать на них драйверы хоста без реального оборудования.
- Звёзды
- 375
- Форки
- 19
- Открытые issues
- 0
- Последний коммит
- 20 дней назад
Что это?
PCIem создает синтетические PCIe-устройства, которые ядро Linux хоста видит как полноценные PCI-устройства. В отличие от решений, предоставляющих эмулируемое оборудование гостевой VM через QEMU или vfio-user, устройство напрямую появляется на шине PCIe хоста, поэтому к нему может подключиться настоящий драйвер ядра и работать на той же машине.
Логика устройства реализуется в userspace и взаимодействует с фреймворком ядра через файл устройства /dev/pciem. Фреймворк поддерживает создание BAR с трассировкой обращений MMIO, генерацию прерываний legacy, MSI и MSI-X, фреймворк PCI capabilities и DMA с учетом IOMMU между ядром и устройством в userspace. Peer-to-peer DMA доступен в предварительной реализации с контролем доступа на основе whitelist.
Проект рассчитан на Linux 6.6 и новее, собирается с помощью gcc-12 и поддерживает amd64, i386, aarch64 и riscv. Среди примеров устройств — видеокарта Bochs BGA, контроллер NVMe, аудиокарта Intel HDA и сетевая карта E1000.
Ключевые возможности
- 01Создает PCI BAR, позволяя отслеживать чтение и запись MMIO из userspace.
- 02Генерирует на хосте прерывания legacy, MSI и MSI-X.
- 03Предоставляет фреймворк PCI capabilities для настройки устройства.
- 04Выполняет DMA с учетом IOMMU между ядром и устройством в userspace.
- 05Работает целиком в userspace и предоставляет устройство через /dev/pciem.
Сценарии использования
- Разработка и тестирование драйверов PCIe-устройств без физического оборудования.
- Создание прототипа модели PCI-устройства и проверка поведения настоящего драйвера ядра при работе с ней.
- Эксперименты с драйверами NVMe, аудиоустройств, сетевых карт и дисплеев на эмулируемых устройствах.
Что важно знать
- Для сборки требуется Linux kernel 6.6 или новее и gcc-12.
- Поддержка DMA между узлами пока находится на предварительной стадии.
- Компоненты ядра распространяются по лицензии GPLv2 — лицензии с копилефтом.
Темы
Частые вопросы
- Что такое pciem?
- Фреймворк для ядра Linux, позволяющий создавать виртуальные PCIe-устройства в userspace и тестировать на них драйверы хоста без реального оборудования. PCIem создает синтетические PCIe-устройства, которые ядро Linux хоста видит как полноценные PCI-устройства. В отличие от решений, предоставляющих эмулируемое оборудование гостевой VM через QEMU или vfio-user, устройство напрямую появляется на шине PCIe хоста, поэтому к нему может подключиться настоящий драйвер ядра и работать на той же машине.
- pciem можно использовать бесплатно? Какая у него лицензия?
- pciem распространяется с открытым исходным кодом под лицензией GPL-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- pciem всё ещё поддерживается?
- Активно поддерживается. Последний коммит в pciem — 30 сент. 2026 г..
- Для чего можно использовать pciem?
- Разработка и тестирование драйверов PCIe-устройств без физического оборудования. Создание прототипа модели PCI-устройства и проверка поведения настоящего драйвера ядра при работе с ней. Эксперименты с драйверами NVMe, аудиоустройств, сетевых карт и дисплеев на эмулируемых устройствах.
- Где скачать pciem?
- Исходный код и инструкции по установке — на GitHub: https://github.com/cakehonolulu/pciem
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
SDK с открытым исходным кодом и прошивки для создания собственных гаджетов Muse на платах ESP32 и устройствах под Linux, например Raspberry Pi.
Настольный дисплей на ESP32 показывает лимиты использования Claude Code, анимационный маскот реагирует на запросы и сообщает, когда сессии требуется ваше внимание.
Эмулятор ESP32 с открытым исходным кодом на Rust: запускает настоящую прошивку на компьютере или в браузере, без платы.
Полнофункциональный системный эмулятор и хост виртуальных машин для iOS, macOS и visionOS на базе QEMU — для запуска Windows, Linux и других систем.
Android-приложение для запуска игр из библиотек Steam, Epic, GOG и Amazon на телефоне с облачной синхронизацией сохранений с ПК.