无法从 FPGA 接收 UDP 数据包

Cannot receive UDP packet from FPGA

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

Wireshark snapshot

我尝试了两个用 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 看到数据包,似乎是应用程序问题。 Scapy 拥有出色的数据包操作工具。

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

#! /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)

注意它需要 运行 作为 root。