ここに単純な 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) とホスト OS で単純なクライアントを実行してみましたが、パケットをキャプチャできました。
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
誰かが私を助けることができますか?ありがとう