Die Empfehlung von ARM und Altera besteht darin, vor der Ausgabe einer DMASEV-Anweisung an die CPU eine Speicherbarriere-Anweisung einzufügen, um zu vermeiden, dass ein DMA-Controller einen Interrupt signalisiert, bevor die AXI-Übertragung abgeschlossen ist.
Der HWlibs DMA-Treiber alt_dma.c wird mit einer Memory Barrier Instruction aktualisiert, die wie unten gezeigt vor der DMASEV-Anweisung hinzugefügt wurde.
wenn (send_evt)
{
if (status == ALT_E_SUCCESS)
{
status = alt_dma_program_DMAWMB(Programm);
}
if (status == ALT_E_SUCCESS)
{
dwordf("DMA[M->M]: Hinzufügen von Ereignis ...\n");
status = alt_dma_program_DMASEV (Programm, evt);
}
}
Die aktualisierte Version des HWlibs DMA-Treibers wird voraussichtlich in der nächsten Version von SoC EDS verfügbar sein.