defparam/BAR-Tender
요약
BAR-Tender는 UMDF2 드라이버 기반의 물리적 FPGA I/O 장치로, PCIe BAR을 통해 메모리 읽기/쓰기를 서비스합니다. 이 프로젝트는 Python 프레임워크와 Ctypes를 활용하여 다양한 언어에서 접근 가능한 인터페이스를 제공하며, PicoEVB 하드웨어 플랫폼을 사용합니다.
핵심 포인트
- 물리적 FPGA I/O 장치로, UMDF2 드라이버 기반입니다.
- Python 3.5용 프레임워크와 Ctypes WinAPI 인터페이스가 제공됩니다.
- PCIe BAR 접근 및 메모리 읽기/쓰기 기능을 지원합니다.
- PicoEVB 하드웨어 플랫폼을 사용하여 구현되었습니다.
BAR-Tender
모두 환영합니다! BAR-Tender는 UMDF2 드라이버를 통해 물리적 메모리 읽기/쓰기를 서비스하는 물리적 FPGA I/O 장치입니다. 이 프로젝트는 pciworm의 후속작이며 훨씬 더 많은 기능으로 향상되었습니다.
Features:
- 포크하기 완벽한 Windows FPGA UMDF2 드라이버 예제
- MSI 인터럽트를 활용하여 FPGA 작업 완료 알림
- Python 3.5용 프레임워크 및 예제 작성 (Ctypes WinAPI Interface)
- WinAPI를 사용하여 다른 언어에서도 적응 가능한 드라이버 인터페이스
- 수많은 메모리 함수 및 커널 접근 기능
- 그리고 더 많은 것...
Limitations:
- 몇 가지... Windows 10 x64만 대상
High Level Architecture
<center>  </center>Python APIs
| Function | Arguments | Description |
|---|---|---|
| BARTender.fpgaRead64(addr) | addr = FPGA의 PCIe BAR에 있는 물리적 주소<br>Return = 64비트 데이터 | FPGA MMIO 읽기 |
| ... |
Driver APIs
BARTender.py를 살펴보고 Ctypes를 사용하여 드라이버와 통신하는 방법을 확인해 보세요. 또한 public.h와 MsgProcessor.cpp를 살펴보면 IOCTL을 통해 드라이버 메시지가 어떻게 전달되는지 이해할 수 있습니다.
Install
이 프로젝트는 완전히 오픈 소스이므로 Vivado와 Visual Studio를 설치하여 자체 바이너리를 컴파일하는 것을 자유롭게 시도해 보세요. 하지만 기존 바이너리를 빠르게 사용하고 싶은 분들을 위해, /release 영역에 FPGA 비트스트림/드라이버/테스트 인증서를 배포했습니다.
- PicoEVB를 받으면 BAR-Tender.bit 파일을 장치에 로드해야 합니다. 이를 수행하는 방법에 대한 많은 가이드가 존재합니다.
- UMDF2 드라이버를 설치하려면 테스트 인증서를 로드한 다음, 마우스 오른쪽 버튼을 클릭하고 '설치'를 선택하여 inf 파일을 설치해야 합니다.
- 인증서와 바이너리를 신뢰하지 않는 경우, 소스에서 컴파일하는 것을 자유롭게 시도하세요!
성공적으로 완료되면 장치 관리자에서 BAR-Tender 장치가 다음과 같이 보여야 합니다:

하드웨어
본 프로젝트에 사용된 FPGA 플랫폼은 PicoEVB입니다. PicoEVB는 M.2 A+E 슬롯에 장착되는 비교적 저렴한 FPGA PCIe 카드입니다. 사용자들은 $219 달러로 자체 PicoEVB를 구매할 수 있습니다. 하드웨어 사양은 다음과 같습니다:
<center>| 기능 | 사양 |
|---|---|
| FPGA | Xilinx Artix XC7A50T-2CSG325C |
| ... | |
![]() |
예제 - test1.py
이 예제는 호스트에서 FPGA로의 읽기 및 쓰기, FPGA에서 호스트로의 읽기 및 쓰기를 테스트하며 (호스트가 시작), 물리적 호스트 메모리의 처음 0x180 바이트를 덤프합니다.

예제 - test2.py
이 예제는 커널 메모리 구조체를 검색하고 모든 EPROCESS 구조체를 덤프합니다.

예제 - test3.py
이 예제는 BAR-Tender를 사용하여 PTE 포인터 스왑을 수행하는 방법을 보여줍니다.

AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub ML Hardware의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기