无法从FPGA接收UDP数据包

无法从FPGA接收UDP数据包,udp,fpga,ethernet,Udp,Fpga,Ethernet,我想从FPGA设备向计算机发送消息。我不知道如何使用SOC和编写linux驱动程序,所以我在不使用操作系统的情况下打包UDP帧。我的IP地址固定为192.168.0.1,掩码为255.255.255.0,MAC地址为10-C3-7B-44-FA-8A。我发现wireshark可以识别我的UDP数据包,并显示IP地址和端口正常,但我的应用程序无法识别 我尝试了两个用python和matlab编写的应用程序,如下所示: python: s = socket.socket(socket.AF_INE

我想从FPGA设备向计算机发送消息。我不知道如何使用SOC和编写linux驱动程序,所以我在不使用操作系统的情况下打包UDP帧。我的IP地址固定为192.168.0.1,掩码为255.255.255.0,MAC地址为10-C3-7B-44-FA-8A。我发现wireshark可以识别我的UDP数据包,并显示IP地址和端口正常,但我的应用程序无法识别

我尝试了两个用python和matlab编写的应用程序,如下所示:

python:

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
s.bind((192.168.0.1, 4096))
buf=s.recvfrom(65536)
Matlab:

u = udp('192.168.0.2',4096,'LocalPort',4096,'LocalHost','192.168.0.1');
fopen(u)
buf=fread(u,1000)
这两个应用程序在执行最后一行代码后都会提示超时


有什么问题吗?

因为您可以通过Wireshark看到数据包,这似乎是应用程序的问题。拥有优秀的数据包操作工具

下面的python代码应该打印目标IP为192.168.0.1的数据包(基于)


请注意,它需要以root用户身份运行。

因为您可以使用Wireshark查看数据包,这似乎是应用程序的问题。拥有优秀的数据包操作工具

下面的python代码应该打印目标IP为192.168.0.1的数据包(基于)


请注意,它需要以root用户身份运行。

您的FPGA的IP是多少?您有过这样的工作吗?如果不是,你应该发布一个小的Wireshark登录.pcap或.pcapng格式,而不是屏幕截图。从屏幕截图上可以看到,它非常接近于工作状态——物理层和MAC看起来很好,这是很多硬的东西。FPGA的IP是192.168.0.2。它永远不起作用。平台已经改变了,所以我不得不花一些时间来恢复它,并像你说的那样获取.pcap文件。你的FPGA的IP是多少?你有没有工作过?如果不是,你应该发布一个小的Wireshark登录.pcap或.pcapng格式,而不是屏幕截图。从屏幕截图上可以看到,它非常接近于工作状态——物理层和MAC看起来很好,这是很多硬的东西。FPGA的IP是192.168.0.2。它永远不起作用。平台已更改,因此我必须花费一些时间来恢复它,并按照您所说的获取.pcap文件。谢谢。最后我发现了我的问题,现在我的板可以发送udp数据包到我的MATLAB。我的IP数据包头部的校验和错误,现在我已经更正了。谢谢。最后我发现了我的问题,现在我的板可以发送udp数据包到我的MATLAB。我在IP数据包头部的校验和是错误的,现在我已经纠正了它。
#! /usr/bin/env python
from scapy.all import *

def monitor_cb(pkt):
    if IP in pkt and pkt[IP].dst == '192.168.0.1':
        return pkt.show()

sniff(prn=monitor_cb, store=0)