교육과 연구를 위해 범용 부품으로 제작한 오픈소스 ESP32 기반 쿼드콥터 비행 제어 펌웨어 및 하드웨어 설계입니다.
cakehonolulu/pciem
실제 하드웨어 없이 사용자 공간에서 가상 PCIe 장치를 만들어 호스트 드라이버를 테스트하는 Linux 커널 프레임워크입니다.
- 스타
- 375
- 포크
- 19
- 열린 이슈
- 0
- 마지막 커밋
- 19일 전
어떤 프로젝트인가요?
PCIem은 호스트 Linux 커널이 실제 PCI 장치로 인식하는 가상 PCIe 장치를 만듭니다. QEMU나 vfio-user를 통해 게스트 VM에 에뮬레이션된 하드웨어를 제공하는 방식과 달리, 장치가 호스트의 PCIe 버스에 직접 나타나므로 실제 커널 드라이버를 연결해 같은 머신에서 실행할 수 있습니다.
장치 로직은 사용자 공간에서 작성하며, /dev/pciem 디바이스 파일을 통해 커널 프레임워크와 통신합니다. 프레임워크는 MMIO 접근 추적을 지원하는 BAR 생성, legacy·MSI·MSI-X 인터럽트 주입, PCI capability 프레임워크, 커널과 사용자 공간 장치 간 IOMMU 인식 DMA를 제공합니다. 피어 투 피어 DMA는 허용 목록 기반 접근 제어를 적용한 초기 기능으로 사용할 수 있습니다.
이 프로젝트는 gcc-12로 빌드하며, amd64, i386, aarch64, riscv에서 Linux 6.6 이상을 지원합니다. 예제 장치로는 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은(는) 무엇인가요?
- 실제 하드웨어 없이 사용자 공간에서 가상 PCIe 장치를 만들어 호스트 드라이버를 테스트하는 Linux 커널 프레임워크입니다. 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에서 실행하는 앱