我在这里有一个简单的类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,我在每个IRQ上注册了驱动程序 除了PIT IRQ。我仍然没有数据。我甚至打电话给 isr来自计时器并轮询它,我仍然没有数据。
我尝试使用ne2k_pci和ne2k_isa设备,但仍然没有数据。 ne2k驱动程序基于以下代码:=
https://github.com/dreamcat4/lwip/blob/master/contrib/ports/old/ti_c6711/netif/ne2kif.c
有人可以帮帮我吗? 感谢