[ :Yana: Index ]

:Yana:YanaKernel: YanaKernel0 Prototype + uIP (2011-01-11)

概要 (2011-01-11)

YanaKernel0の試作品に、(TCP/IPを使用できる)uIPを組み合わせています。

とりあえず、MIPSに続いて、ARMについても、サンプルを実行できました。

なお、YanaKernel0を使用するuIPに続いて、YanaKernel0を使用しないuIPについても、割り込みを使用しない場合のサンプルを実行できました。

ダウンロード (2011-01-11)

次のアーカイブ・ファイルは、責任や保証を求めずに、個人的に用いてください。

次の差分ファイルは、ファイル「minix_source_3_1_1_complete.tar.bz2」のライセンスなどを確認して、同じように用いてください。

次の差分ファイルは、ファイル「uip-1.0.tar.gz」のライセンスなどを確認して、同じように用いてください。

uIP1.0の実行例 (2011-01-11)

次のような環境で、サンプルを実行できました。

サンプルのビルドについては、まず、次のようにファイルを用意します。

yana@cygwin ~
$ tar xjf minix_source_3_1_1_complete.tar.bz2

yana@cygwin ~
$ rm src/include/stdarg.h

yana@cygwin ~
$ patch -dsrc -p1 <yanakernel0prototypeuip20091111minix.txt
patching file include/stdio.h

yana@cygwin ~
$ tar xzf uip-1.0.tar.gz

yana@cygwin ~
$ mkdir uip-1.0/testarm

yana@cygwin ~
$ cp -p uip-1.0/unix/*.h uip-1.0/unix/main.c uip-1.0/testarm

yana@cygwin ~
$ cp -pr uip-1.0/testarm uip-1.0/testmips

yana@cygwin ~
$ patch -p0 <yanakernel0prototypeuip20110111uip.txt
patching file uip-1.0/apps/resolv/resolv.c
patching file uip-1.0/apps/webclient/webclient.c
patching file uip-1.0/uip/uip.c
patching file uip-1.0/testarm/main.c
patching file uip-1.0/testarm/uip-conf.h
patching file uip-1.0/testmips/main.c
patching file uip-1.0/testmips/uip-conf.h

yana@cygwin ~
$ unzip -q yanakernel0prototypeuip20110111.zip

yana@cygwin ~
$ cp -pr yanakernel0prototypeuip/enable/* uip-1.0

yana@cygwin ~
$ unzip -q yanakernel0prototype20100311.zip

yana@cygwin ~
$

次に、ARMの場合は、DNSサーバとWWWサーバについて、ファイル「uip-1.0/testarm/main.c」を変更して、ディレクトリ「uip-1.0/testarm」で、次のようにビルドします。

uIP1.0のARMの場合のビルド
割り込みを使用しない場合
CC="arm-elf-gcc -D_EM_WSIZE=4 -fpack-struct -Os" make
割り込みを使用する場合
CC="arm-elf-gcc -D_EM_WSIZE=4 -fpack-struct -Os -DENABLE_INTERRUPT" make

また、MIPSの場合は、DNSサーバとWWWサーバについて、ファイル「uip-1.0/testmips/main.c」を変更して、ディレクトリ「uip-1.0/testmips」で、次のようにビルドします。

uIP1.0のMIPSの場合のビルド
割り込みを使用しない場合
CC="mips-elf-gcc -D_EM_WSIZE=4 -fpack-struct -Os" make
割り込みを使用する場合
CC="mips-elf-gcc -D_EM_WSIZE=4 -fpack-struct -Os -DENABLE_INTERRUPT" make

サンプルの実行については、まず、ARMの場合は、割り込みを使用しない場合でも、割り込みを使用する場合でも、次のように出力します。

yana@cygwin ~/uip-1.0/testarm
$ gxemul -q -E testarm main

NOTE: This is a LEGACY emulation mode.

Found name 'yana.jp' = 60.32.201.105
Webclient: connected, waiting for data...
Webclient: got 1166 bytes of data.
Webclient: got 1400 bytes of data.
Webclient: got 77 bytes of data.
Webclient: got 0 bytes of data.
uIP log message: tcp: got reset, aborting connection.
Webclient: connection aborted

次に、MIPSの場合は、割り込みを使用しない場合でも、割り込みを使用する場合でも、次のように出力します。

yana@cygwin ~/uip-1.0/testmips
$ gxemul -q -E oldtestmips -C 4kc main

NOTE: This is a LEGACY emulation mode.

Found name 'yana.jp' = 60.32.201.105
Webclient: connected, waiting for data...
Webclient: got 1166 bytes of data.
Webclient: got 1400 bytes of data.
Webclient: got 77 bytes of data.
Webclient: got 0 bytes of data.
uIP log message: tcp: got reset, aborting connection.
Webclient: connection aborted

検討事項 (2010-01-11)

サンプルを実行すると、「uIP log message: tcp: got reset, aborting connection.」と出力しますが、TCPのコネクションの切断に関係する不具合(もしくは制限)があるようです。

補足 (2010-05-11)

次の差分ファイルは、ファイル「gxemul-0.4.7.2.tar.gz」を変更するために作成しましたが、メーリング・リスト「gxemul-devel」に連絡したところ、ファイル「gxemul-0.6.0.tar.gz」には反映されました。

Credit

(C) 2009-2011 Yana

Direction: Yana
HTML: Yana
Program: Yana

ChangeLog

2011-01-11 release 3
2010-05-11 release 2
2010-01-11 release 1
2009-11-11 release 0

[ :Yana: Index ]
(C) 2009-2011 Yana
このサイトについて