winpcap丢包该如何解决呢?
最近在利用千兆以太网实现电路板与计算机之间的海量数据传输,遇到了一些棘手的问题。我的具体做法是:
利用FPGA的mac核与外置的PHY芯片实现千兆以太网,PHY与MAC之间的接口采用RGMII接口。计算机向板子发送控制命令,然后开始连续接收板子发送来的数据,利用Winpcap工具包在VC环境下开发的抓包工具获取并存储数据到硬盘。
遇到的问题:
1.计算机有丢包的现象。当开辟大的内核缓存(64MB),而一次发送30MB的数据时也丢包,应该不是内核缓存满了而丢包吧。
2.计算机向板子发送控制帧,有时并不被FPGA的MAC接受,经常是发送了帧,而板子没反应,既不认为是goodframe,也不认为是badframe,而是直接丢弃。(难道是RGMII接口的问题?)
tcp/ip协议在fpga上实现起来就复杂,而且效率又不见得高。我觉得在链路层用winpcap抓包是效率较高的做法了,而计算机存储的速度赶不上板子发来数据的速度。
谁有好的建议能确保不丢包呢?