10.1 EDK  –  LLTEMAC没有明显原因停止接收数据包-Altera-Intel社区-FPGA CPLD-ChipDebug

10.1 EDK – LLTEMAC没有明显原因停止接收数据包

问题描述

如果应用程序为每个RX数据包设置多个缓冲区描述符(BD),则在接收到一定数量的数据包后,数据包接收可能会停止工作。

解决/修复方法

LLDMA驱动程序应清除RX数据包上的SOP和EOP位。在将BD提供给DMA RX通道之前,LLDMA驱动程序清除那些BD标志可以解决问题。

下面的解决方案提供了解决方法:

在$ XILINX / EDK / sw / XilinxProcessorIPLib / drivers / lldma_v1_00_a / src / xlldma_bdring.c中替换712 – 715和747 – 750行。

if(RingPtr-> IsRxChannel){

XLlDma_mBdWrite(CurBdPtr,XLLDMA_USERIP_APPWORD_OFFSET,

XLLDMA_USERIP_APPWORD_INITVALUE);

}

有:

if(RingPtr-> IsRxChannel){

XLlDma_mBdWrite(CurBdPtr,XLLDMA_USERIP_APPWORD_OFFSET,

XLLDMA_USERIP_APPWORD_INITVALUE);

/ *可以设置EOP标志,清除它* /

XLlDma_mBdWrite(CurBdPtr,XLLDMA_BD_STSCTRL_USR0_OFFSET,

(BdStsCr&〜(XLLDMA_BD_STSCTRL_SOP_MASK | XLLDMA_BD_STSCTRL_EOP_MASK)));

}

该补丁计划在11.1中成为主流。

请登录后发表评论

    没有回复内容