본문 바로가기
임베디드 개발/임베디드 리눅스

Linux PCIe Driver 학습 프로젝트

by eteo 2026. 6. 21.
반응형

 

 

다음은 QEMU 가상환경에서 커스텀 PCI 장치를 직접 만들고, 그 장치를 제어하는 리눅스 커널 드라이버와 유저 애플리케이션을 작성하는 학습 프로젝트이다.

 

 

https://github.com/joeteo/pci-vip

 

GitHub - joeteo/pci-vip

Contribute to joeteo/pci-vip development by creating an account on GitHub.

github.com

 

 

 

2026.01.18 - [임베디드 개발/임베디드 리눅스] - Linux 호스트에서 QEMU 빌드

 

Linux 호스트에서 QEMU 빌드

대부분 리눅스 배포판 저장소에는 이미 QEMU 바이너리 패키지를 제공하기 때문에 sudo apt install qemu-system-arm 등으로 간단히 설치할 수 있다. 단, 저장소 버전보다 최신 버전을 사용하고 싶거나 커스

eteo.tistory.com

 

 

2026.01.18 - [임베디드 개발/임베디드 리눅스] - QEMU 기반 커스텀 PCIe 장치 에뮬레이션 - (1)

 

QEMU 기반 커스텀 PCIe 장치 에뮬레이션 - (1)

x86 리눅스 호스트 PC AArch32(ARMv7) 타겟을 대상으로 QEMU 기반 가상 개발환경을 만들고 커스텀 PCI 장치를 에뮬레이션하는 방법에 대해 정리한다. 준비물ARM 머신 에뮬레이션을 위한 QEMU크로스 컴파일

eteo.tistory.com

 

 

2026.01.26 - [임베디드 개발/임베디드 리눅스] - QEMU 기반 커스텀 PCIe 장치 에뮬레이션 - (2)

 

QEMU 기반 커스텀 PCIe 장치 에뮬레이션 - (2)

qemu 소스 설치 경로의 miscellaneous를 모아둔 hw/misc 경로로 이동하면 Custom PCI 장치를 만들 때 참고할만한 소스들이 있다. $ cd $ ls qemu/hw/misc/pci-testdev.c$ ls qemu/hw/misc/edu.c pci-testdev.c는 간단히 게스트 OS

eteo.tistory.com

 

 

2026.01.29 - [임베디드 개발/임베디드 리눅스] - QEMU 기반 커스텀 PCIe 장치 에뮬레이션 - (3)

 

QEMU 기반 커스텀 PCIe 장치 에뮬레이션 - (3)

커스텀 PCI 장치 설계QEMU에서 커스텀 디바이스를 에뮬레이션하려면 QOM(QEMU Object Model) 프레임워크에 맞춰 소스코드를 작성해야 한다. 처음부터 모든 구조를 직접 구현할 필요는 없고, qemu/hw/misc 안

eteo.tistory.com

 

 

2026.02.08 - [임베디드 개발/임베디드 리눅스] - LDD ] PCIe 디바이스 드라이버 작성하기 - Char with ioctl & mmap (1/2)

 

LDD ] PCIe 디바이스 드라이버 작성하기 - Char with ioctl & mmap (1/2)

이전 글에서 작성한 가상의 커스텀 PCI 장치를 다룰 디바이스 드라이버를 작성해본다. 설계 요건은 이렇다.캐릭터 디바이스(Character Device) 드라이버 형태로 구현한다.여러 장치를 동시에 지원할

eteo.tistory.com

 

 

2026.02.08 - [임베디드 개발/임베디드 리눅스] - LDD ] PCIe 디바이스 드라이버 작성하기 - Char with ioctl & mmap (2/2)

 

LDD ] PCIe 디바이스 드라이버 작성하기 - Char with ioctl & mmap (2/2)

테스트파일 준비테스트용 이미지 파일은 GPT한테 컬러풀한 코딩하는 펭귄 이미지 그려달라고 해서 준비했다. RAW 파일 생성과 뷰어로는 ffmpeg를 사용한다. # ffmpeg 설치$ sudo apt update && sudo apt install

eteo.tistory.com

 

 

2026.03.22 - [임베디드 개발/임베디드 리눅스] - QEMU 기반 커스텀 PCIe 장치 에뮬레이션 - (4) DMA + MSI

 

QEMU 기반 커스텀 PCIe 장치 에뮬레이션 - (4) DMA + MSI

이전 글에서 작성한 커스텀 PCIe 장치의 기본 구조와 기능은 유지한채로, 데이터 전송 방식과 인터럽트 방식을 변경하였다.데이터 전송 : 장치의 RAM을 BAR1 영역에 할당하던 방식에서 DMA(Direct Memory

eteo.tistory.com

 

 

2026.03.30 - [임베디드 개발/임베디드 리눅스] - LDD ] PCIe 디바이스 드라이버와 유저앱 작성하기 - DMA & MSI

 

LDD ] PCIe 디바이스 드라이버와 유저앱 작성하기 - DMA & MSI

이번엔 지난 글에서 다룬 PCI 장치를 제어하기 위한 드라이버와 유저 앱을 작성해 보겠다. 편의상 MMIO + INTx 방식의 장치를 v1, DMA + MSI 방식의 장치를 v2로 구분한다. 드라이버와 유저 앱을 설계할

eteo.tistory.com

 

 

 

 

 

반응형