ARM とAlteraの推奨は、AXI 転送が完了する前に DMA コントローラーが割り込みをシグナリングしないように、DMASEV 命令を CPU に指示する前にメモリー・障壁命令を挿入することです。
HWlibs DMA ドライバー alt_dma.c は、以下のように DMASEV 命令の前にメモリー障壁命令を追加して更新されています。
if (send_evt)
{
if (status == ALT_E_SUCCESS)
{
status = alt_dma_program_DMAWMB(program);
}
if (status == ALT_E_SUCCESS)
{
dprintf ("DMA[M->M] イベントの追加 ...\n")
status = alt_dma_program_DMASEV (プログラム、evt);
}
}
HWlibs DMA ドライバーの更新バージョンは、SoC EDS の次のリリースで利用可能になる予定です。