由于 Linux-socfPGA 内核版本 4.1.22-ltsi 中的 Synopsys® 以太网 MAC 的 Linux 驱动程序出现问题,如果 HPS 子系统内的流量增加,以太网接口可能会失效。
出现此问题时,HPS EMAC DMA 状态寄存器将显示以下状态:
i_emac__dmagrp_status:
rs(接收到流程状态):0x5:RUNCLOSE:运行:关闭接收描述符
可能仍然存在以下寄存器状态
tu(传输缓冲区不可用):0x1:传输描述符不可用
ovf(接收溢出):0x1:接收缓冲区溢出
https://github.com/altera-opensource 已修复了 linux-socfPGA 4.1.33-ltsi 内核的问题
提交 ID:9a8bc214cc13bb318f403b("stmmac:dwmac100 和 dwmac1000"之间的共享重置功能)
提交 ID:b0db4ee2b475f0b7ac1e36 ("stmmac:返工 DMA 总线设置并引入新的平台 AXI 结构")
要在较早的内核版本中解决此问题,编辑 EMAC DMA 控制寄存器设置axi_bus_mode rd_osr_lmt,并将wr_osr_lmt寄存器设置为0xF。 此设置允许在 EMAC DMA AXI 主接口上进行大量未处理的 AXI 交易。