ARM和Altera的建议是在向CPU发出DMASEV指令之前插入存储器屏障指令,以避免DMA控制器在AXI传输完成之前发出中断信号。
解决/修复方法
正在更新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(program,evt);
}
}
HWlibs DMA驱动程序的更新版本计划在下一版SoC EDS中提供。
没有回复内容