教育・研究向けに汎用部品で構成された、ESP32ベースのオープンソース・クアッドコプター用フライトコントローラーのファームウェアとハードウェア設計。
cakehonolulu/pciem
Linuxカーネル向けフレームワーク。ユーザー空間で仮想PCIeデバイスを構築し、実機なしでホストドライバーをテストできます。
- スター
- 375
- フォーク
- 19
- 未解決の Issue
- 0
- 最終コミット
- 20 日前
これは何?
PCIemは、ホストのLinuxカーネルから正規のPCIデバイスとして認識される、合成PCIeデバイスを作成します。QEMUやvfio-userを通じてエミュレートしたハードウェアをゲストVMに公開する方式とは異なり、このデバイスはホストのPCIeバスに直接現れるため、実際のカーネルドライバーをバインドし、同じマシン上で動作させられます。
デバイスのロジックはユーザー空間で実装し、/dev/pciemデバイスファイルを介してカーネルフレームワークと通信します。フレームワークは、MMIOアクセスのトレースに対応したBARの作成、legacy・MSI・MSI-X割り込みの注入、PCI capabilityフレームワーク、カーネルとユーザー空間デバイス間のIOMMU対応DMAを提供します。ピアツーピアDMAは、ホワイトリストベースのアクセス制御を備えた初期段階の機能として利用できます。
このプロジェクトは、gcc-12でビルドするLinux 6.6以降を対象としており、amd64、i386、aarch64、riscvに対応しています。サンプルデバイスには、Bochs BGAディスプレイカード、NVMeコントローラー、Intel HDAオーディオカード、E1000ネットワークカードがあります。
主な機能
- 01ユーザー空間からMMIOの読み書きを監視できるPCI BARを作成します。
- 02ホストにlegacy・MSI・MSI-X割り込みを注入します。
- 03デバイス構成用のPCI capabilityフレームワークを提供します。
- 04カーネルとユーザー空間デバイス間で、IOMMU対応DMAを行います。
- 05すべてユーザー空間で動作し、/dev/pciemを介してデバイスを公開します。
ユースケース
- 物理ハードウェアなしでPCIeデバイスドライバーを開発・テストする。
- 新しいPCIデバイスモデルを試作し、実際のカーネルドライバーの動作を確認する。
- エミュレートしたデバイスを使って、NVMe、オーディオ、ネットワーク、ディスプレイドライバーを試す。
使う前に知っておきたいこと
- ビルドには Linux カーネル 6.6 以降と gcc-12 が必要です。
- ピアツーピア DMA のサポートは暫定的なものです。
- カーネルコンポーネントはコピーレフトライセンスである GPLv2 の下で提供されています。
トピック
よくある質問
- pciem とは?
- Linuxカーネル向けフレームワーク。ユーザー空間で仮想PCIeデバイスを構築し、実機なしでホストドライバーをテストできます。 PCIemは、ホストのLinuxカーネルから正規のPCIデバイスとして認識される、合成PCIeデバイスを作成します。QEMUやvfio-userを通じてエミュレートしたハードウェアをゲストVMに公開する方式とは異なり、このデバイスはホストのPCIeバスに直接現れるため、実際のカーネルドライバーをバインドし、同じマシン上で動作させられます。
- pciem は無料で使えますか?ライセンスは?
- pciem は GPL-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- pciem は今もメンテナンスされていますか?
- 活発にメンテナンス中。pciem の最終コミットは 2026年9月30日 です。
- pciem は何に使えますか?
- 物理ハードウェアなしでPCIeデバイスドライバーを開発・テストする。 新しいPCIデバイスモデルを試作し、実際のカーネルドライバーの動作を確認する。 エミュレートしたデバイスを使って、NVMe、オーディオ、ネットワーク、ディスプレイドライバーを試す。
- pciem はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/cakehonolulu/pciem
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
ESP32ボードやRaspberry PiなどのLinuxデバイスでMuseガジェットを作るためのオープンソースSDKとファームウェア。
Claude Codeの使用量制限を表示し、プロンプトに反応するアニメーションマスコットや、セッションで入力が必要なときの通知機能を備えたESP32デスクトップディスプレイ。
QEMUをベースに、iOS、macOS、visionOSでWindowsやLinuxなどを実行できる、多機能なシステムエミュレーター兼仮想マシンホストです。
Steam、Epic、GOG、AmazonのPCゲームを端末上で遊べるAndroidアプリ