基于 ESP32 的开源四旋翼飞行器,从零开始设计的飞控固件与硬件方案,面向教育与科研。
cakehonolulu/pciem
一个 Linux 内核框架,可在用户空间实现虚拟 PCIe 设备,无需真实硬件即可开发和测试驱动。
- Star
- 375
- Fork
- 19
- 未关闭 Issue
- 0
- 最近提交
- 20天前
这是什么?
PCIem 可以在 Linux 内核中创建合成的 PCIe 设备,宿主机内核会将其识别为正常的 PCI 设备。它不同于通过 QEMU 或 vfio-user 把模拟硬件暴露给虚拟机的方案,设备直接挂在宿主机的 PCIe 总线上,真实的内核驱动可以在同一台机器上直接绑定并运行。
设备逻辑运行在用户空间,通过 /dev/pciem 设备文件与内核框架通信。框架支持创建 BAR 并追踪 MMIO 访问,支持传统中断、MSI 和 MSI-X 中断注入,提供 PCI capability 机制,并支持内核与用户空间设备之间感知 IOMMU 的 DMA 访问。点对点 DMA 目前仍处于预览阶段,并带有基于白名单的访问控制。
项目要求 Linux 6.6 及以上内核、gcc-12,支持 amd64、i386、aarch64 和 riscv 架构。示例设备包括 Bochs BGA 显示卡、NVMe 控制器、Intel HDA 声卡和 E1000 网卡。
核心功能
- 01创建 PCI BAR,并由用户空间监控 MMIO 读写。
- 02向宿主机注入传统中断、MSI 和 MSI-X 中断。
- 03提供 PCI capability 框架用于设备配置。
- 04在内核与用户空间设备之间进行感知 IOMMU 的 DMA 传输。
- 05设备完全在用户空间实现,通过 /dev/pciem 对外提供接口。
适用场景
- 在没有实际硬件的情况下开发和测试 PCIe 设备驱动。
- 原型验证新的 PCI 设备模型,观察真实内核驱动与其交互的表现。
- 基于模拟设备调试 NVMe、音频、网络或显示驱动。
使用前须知
- 需要 Linux 内核 6.6 或更新版本以及 gcc-12 才能构建。
- 点对点 DMA 支持仍处于初步阶段。
- 内核组件采用 GPLv2 许可证,属于 copyleft 许可。
标签
常见问题
- pciem 是什么?
- 一个 Linux 内核框架,可在用户空间实现虚拟 PCIe 设备,无需真实硬件即可开发和测试驱动。 PCIem 可以在 Linux 内核中创建合成的 PCIe 设备,宿主机内核会将其识别为正常的 PCI 设备。它不同于通过 QEMU 或 vfio-user 把模拟硬件暴露给虚拟机的方案,设备直接挂在宿主机的 PCIe 总线上,真实的内核驱动可以在同一台机器上直接绑定并运行。
- pciem 可以免费使用吗?用的什么许可证?
- pciem 以 GPL-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- pciem 还在维护吗?
- 活跃维护中。pciem 最近一次提交是在 2026年9月30日。
- pciem 适合用来做什么?
- 在没有实际硬件的情况下开发和测试 PCIe 设备驱动。 原型验证新的 PCI 设备模型,观察真实内核驱动与其交互的表现。 基于模拟设备调试 NVMe、音频、网络或显示驱动。
- 在哪里获取 pciem?
- 源代码和安装说明在 GitHub 上:https://github.com/cakehonolulu/pciem
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
2320347C++无许可证更新于 20天前
用于在 ESP32 开发板和 Raspberry Pi 等 Linux 设备上自制 Muse 小工具的开源 SDK 与固件。
2309491CApache-2.0更新于 6小时前
一款 ESP32 桌面显示屏,展示 Claude Code 用量限额,并在会话需要你处理时提醒。
2270386C无许可证更新于 19小时前
基于 QEMU 的 iOS、macOS 和 visionOS 系统模拟器与虚拟机应用,可运行 Windows、Linux 等系统。
3.6万1860SwiftApache-2.0更新于 昨天
在 Android 上本地运行你在 Steam、Epic、GOG 和 Amazon 库中拥有的 PC 游戏,并支持云存档。
1.1万472KotlinGPL-3.0更新于 昨天