인텔® FPGA 프로그래밍 가능 가속 카드 N3000 공장 이미지와 동시에 여러 DMA 핸들을 열면 Poll(인터럽트) 시간 초과 오류가 발생할 수 있습니다.
시간 제한 오류는 4개의 DMA 블록이 하나의 인터럽트 공유를 갖는 공장 이미지 디자인 때문입니다.
응용 프로그램에 여러 개의 개방형 DMA 핸들이 필요한 경우 아래 나열된 대로 AFU RTL 설계 및 소프트웨어 코드를 사용자 정의하십시오.
1. RTL 설계:
기본 afu.sv 파일인 줄 257에서 dma_irq avmm_ccip_host_wr 모듈의 irq[0]로 전송됩니다.
.irq({3'b000, dma_irq}),
DMA 블록에서 다른 비트로 각 irq를 매핑하도록 설계를 사용자 정의합니다.
2. 소프트웨어 코드:
fpga_dma.c 파일의 줄 701~702에서 fpgaRegisterEvent 함수는 0을 고정된 벡터 ID로 사용합니다.
res = fpgaRegisterEvent(dma_h->fpga_h, FPGA_EVENT_INTERRUPT, dma_h->eh, 0 /*vector id */);
RTL 디자인의 irq 비트에 매핑된 dma 핸들에 대해 다른 ID를 등록하십시오.
예를 들어, DDRA 및 DDRB에 두 개의 dma 핸들이 함께 있는 DDRA 및 DDRB에 액세스하려면 RTL 코드를 사용자 정의하여 DDRA용 afu_dma_0_inst dma_irq irq[0]으로 매핑하고 dma_irq DDRB용 afu_dma_1_inst irq[1]로 매핑할 수 있습니다. 소프트웨어 코드에서 dma 핸들 0에 벡터 ID 0을 사용하여 DDRA에 액세스하고, dma 핸들 1의 벡터 ID 1을 사용하여 fpgaRegisterEvent 기능에서 DDRB에 액세스하십시오.