1

我在这里有一个简单的类 UNIX 内核:= http://www.oxkernel.com/download.html

我们尝试向它添加 LWIP TCP/IP 堆栈。我正在尝试在 Linux 下的 QEMU 中运行它。

这是 QEMU 的命令行:=

emu-system-i386 -fda vmox.img -net nic,model=ne2k_isa -net user -net dump -redir tcp:7777::7777

这运行并到达 TCP 堆栈说它已建立连接的地步。但是,它实际上阻止了等待响应。

我尝试在该端口(7777)和主机操作系统上运行一个简单的客户端,并且能够捕获数据包。

tcpdump 具有以下输出:=

tcpdump -nnxr qemu-vlan0.pcap reading from file qemu-vlan0.pcap, link-type EN10MB (Ethernet) 05:04:20.600573 ARP, Request who-has 10.0.2.15 tell 10.0.2.2, length 28 0x0000: 0001 0800 0604 0001 5255 0a00 0202 0a00 0x0010: 0202 0000 0000 0000 0a00 020f 05:04:26.572629 ARP, Request who-has 10.0.2.15 tell 10.0.2.2, length 28 0x0000: 0001 0800 0604 0001 5255 0a00 0202 0a00 0x0010: 0202 0000 0000 0000 0a00 020f

但是,我们永远不会摆脱连接建立等待(它等待信号量完成,这仅在有正确的 TCP 输入时才会发生)。

我相信 ne2000 驱动程序没有从网卡获取任何数据。

我将 iobase 设置为 0xC000,并且在除 PIT IRQ 之外的每个 IRQ 上都注册了驱动程序。我仍然没有得到任何数据。我什至从计时器调用 isr 并对其进行轮询,但我仍然没有得到任何数据。

我尝试了 ne2k_pci 和 ne2k_isa 设备,但仍然没有数据。ne2k 驱动程序基于此代码 :=

https://github.com/dreamcat4/lwip/blob/master/contrib/ports/old/ti_c6711/netif/ne2kif.c

有人可以帮我吗 ?谢谢

4

0 回答 0