Artikel-ID: 000083942 Inhaltstyp: Fehlerbehebung Letzte Überprüfung: 26.07.2020

Poll(Interrupt)-Timeout

Umgebung

  • Intel® Quartus® Prime Pro Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Beschreibung

    Wenn mit dem Intel® FPGA Programmable Acceleration Card N3000 Factory Image gleichzeitig mehrere DMA-Handles geöffnet werden, können Poll(Interrupt)-Timeout-Fehler auftreten.

    Die Timeout-Fehler sind darauf zurückzuführen, dass das Werkbilddesign vier DMA-Blöcke aufweist, die einen Interrupt teilen.

    Lösung

    Wenn Ihre Anwendung mehrere offene DMA-Handles erfordert, passen Sie dann das AFU RTL-Design und den Softwarecode wie unten aufgeführt an:

    1. RTL-Design:

    In der Standard-afu.sv datei, Zeile 257, wird dma_irq an irq[0] des avmm_ccip_host_wr Moduls gesendet.

    .irq({3'b000, dma_irq}),

    Passen Sie Ihr Design so an, dass jedes IRQ von DMA-Blöcken zu einem anderen Bit abzubilden ist.

    2. Softwarecode:

    In fpga_dma.c-Datei, Zeile 701~702, verwendet die fpgaRegisterEvent-Funktion 0 als feste Vektor-ID.

    res = fpgaRegisterEvent(dma_h->fpga_h, FPGA_EVENT_INTERRUPT, dma_h->eh, 0 /*vector id */);

    Registrieren Sie verschiedene IDS für Ihre DMA-Handles, die den IRQ-Bits im RTL-Design zugeordnet sind.

    Um beispielsweise auf DDRA und DDRB mit zwei dma-Handles zusammen zuzugreifen, können Sie Ihren RTL-Code anpassen, um dma_irq in afu_dma_0_inst für DDRA zu irq[0] zu mapen und dma_irq zu irq[1] in afu_dma_1_inst für DDRB zu mapen. Verwenden Sie im Softwarecode Vektor-ID 0 für dMA-Handle 0, um auf DDRA zuzugreifen, und verwenden Sie Vektor-ID 1 für DMA-Handle 1, um in der fpgaRegisterEvent-Funktion auf DDRB zuzugreifen.

    Zugehörige Produkte

    Dieser Artikel bezieht sich auf 2 Produkte

    Intel® Arria® 10 FPGAs und SoC FPGAs
    Intel® FPGA PAC N3000

    Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte eine Diskrepanz zwischen der englischsprachigen Version dieser Seite und der Übersetzung auftreten, gilt die englische Version. Englische Version dieser Seite anzeigen.