FPGA - 프로세서 그리고 데이터의 이동/PCIe

FPGA의 PCIe에 접근에 필요한 file descriptor는 무엇인가?

망고토마토 2024. 2. 5. 11:12
반응형

 

컴퓨터의 dev 폴더에 있는 xdma라는 이름이 붙여진 file descriptor를 이용하여, 컴퓨터는 FPGA1, 2보드의 pcie에 데이터를 주고 받는다.

2가지의 file descriptor가 존재한다.

/dev/xdma0_user : FPGAregister에 데이터를 쓰거나 읽을 때 사용

/dev/xdma0_c2h_0 : 컴퓨터가 DMA를 이용하여 FPGA에서 데이터를 load할 때 사용

 file descriptor를 사용하기 위한 초기화를 수행한다.

컴퓨터가 PCIe slot에 꽂힌 FPGA 카드를 인식하고, xdma 드라이버를 정상적으로 load하였다면, dev 폴더에 위와 같은 file descriptor가 검색이 된다.

 

컴퓨터가 FPGA에 데이터를 쓰거나 읽기 위해서는 dev에 검색된 file descriptor에 접근해야 한다. File descriptor 접근을 위한 초기화 절차는 다음과 같다.  

 

mFDDma0Bar0 = GetFileDescriptor(FILE_DESC_DMA0_BAR0,O_RDWR | O_SYNC);

mDma0Bar0Mem = mmap(0, REG_MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, mFDDma0Bar0, 0);

mFDDma0C2H = GetFileDescriptor(FILE_DESC_DMA0_C2H,O_RDWR);

posix_memalign((void **)&mDma0C2HBuffer, 4096 /*alignment */ , DMA_MEM_SIZE)

 

mDma0Bar0Mem : FPGA의 레지스터에 데이터를 쓰고 읽을 때 사용된다.

mFDDma0C2H : DMA를 이용하여 FPGA에서 데이터 load, 경로 구분에 사용된다.

mDma0C2HBuffer : FPGA에서 DMA로 데이터를 가져오고, 이것을 컴퓨터 메모리에 저장한다. 이 때 컴퓨터 메모리의 위치

 

 

    mmap "메모리 매핑" 나타내는 Unix Unix 계열 운영 체제에서 사용되는 시스템 호출입니다. 기능은 파일이나 기타 I/O 장치를 메모리에 매핑하여 파일의 내용을 메모리에 직접 읽고 있게 합니다. 이는 파일을 읽고 쓰는 효율적이며, 파일을 메모리에 로드하는 사용되는 시간과 메모리 사용량을 줄일 있습니다

    posix_memalign POSIX 표준 함수로, 메모리 할당을 위해 사용됩니다. 함수는 특정 정렬 조건을 충족하는 메모리 블록을 할당합니다. 일반적으로 메모리 할당을 요청할 malloc 같은 표준 함수를 사용하지만, 이러한 함수들은 메모리 블록을 특정 크기의 정렬된 주소에 배치하지 않습니다.

반응형