1.主机ping通板卡,板卡ping不通主机
通过抓包发现,主机回了arp请求了。但板卡再发的话,主机没回icmp包
于是我加了arpLib组件
通过arpShow来查看是否记住主机的mac地址
发现板卡记住主机的了
但是在主机这边,arp -a没发现板卡的mac地址
所以这是原因所在
2.解决原因
查了半天,是电平触发方式导致的
另外netJobAdd调用任务来处理Rx任务
3.大包ping不通
是因为接收中断不能大于1508导致的
4.主机ping板卡的过程
当我的主机ping板卡时,首先发个arp包
若板卡回应,我主机开始发数据,同时板卡回相同大小的数据
5.主机ping板卡网速调试
刚开始主机ping板卡 time=230ms。
当我将接收函数的logMsg去掉后,发现速度变成了130ms。于是我觉得问题原因在于串口信息的打印
可是当我去掉接收函数的printf时,竟然ping不通了,让我很诧异
后来我分析下,发现是发送时需要延时,要不然它的上一个包还没发完,下一个包就接着发。
于是我内部用了一个for循环来延时,此时我发现ping通了,时间也缩短为4ms。
6.ping 60000大包
发现发送延时大一些才可以
7.调试难点
注意字节对齐,很重要
8.当两个网卡公用一个中断时板卡总是重启
rx buffer overflow需要复位fpga
9.fpga复位操作
首先关所有中断,复位fpga,初始化mac,打开所有中断