MMlpc2368でTINET動かしました。今回は昨年末に出たTINET 1.5を使ってみました。TINET 1.5からはTOPPERS/ASPにも対応したので、ASP用とJSP用で別々の配布ファイルが用意されています。イーサネットのドライバはInterface誌の2009年6月号にあったコードを元にして作成。イーサネットのリンクダウンとアップは、PHYからの割り込みで検出するようにしてみました。
動作確認にはTINETに付属する機能豊富なサンプルであるnservを使いたいところなのですが、多数のタスクが動くnservはSRAM領域もたくさん必要となり、連続するSRAM領域が32KBしかないLPC2368では簡単には動かせそうもありません。手をかけて、TINETの使用するバッファや各タスクの使用するスタックをUSBやEthernet用RAMに割り当て直せばなんとかなるかもないのですが、それでもかなり苦しそうです。そこで、機能は少ないけどメモリは喰わないminsvを動かしてみました。ビルドしてみたサイズは次のとおり。EthernetドライバがEthernet RAMを使用していますが、直接アクセスしており配列をとったりしてはいないので、そのサイズはBSSには表れていません。連続SRAM空間使用量は16KB以下に収まっています。
nserv/minsv はWWWサーバ機能を持っており、index.html と stat.htmlの2つのURLに対応するページを表示することができます。次の画面は、minsvにおけるこれら2つのページの表示内容です。
実際に使ってみてわかったのは、minsvではstat.htmlの表示に時間がかかること。しかも、なんだかカクカクと何段階かに分けて表示される感じ。最初に示した実行ログ画面からは、index.htmlの出力には379msしか要していないのに対し、stat.htmlの出力には2555msも要していることが読み取れます。調べてみたところ、TINETのコンフィギュレーションと関係がありそうです。minsvは、メモリの消費量を極力抑えるようにTINETのパラメータを調整してコンフィグしてあります。その一例が USE_TCP_MSS_SEGの使用であり、これによりTCPのセグメントサイズが512オクテットに制約されるようです。使用するバッファメモリを小さくできますが、その代りに一定量のデータを送出するのに、何度もパケットを送受する必要が生じます。ACK待ち回数も増えて、その結果、時間がかかっているようです。
そこで、minsvのMakefieをちょっと修正。上述したUSE_TCP_MSS_SEGの指定を外してみました。すると、消費されるBSSサイズは20KBを超えました。
しかし、stat.htmlの送出時間は942msと、一気に倍以上の速度になりました。
このように、TINETにおいては消費メモリ量と、TCPの転送処理速度には密接な関係があることがわかります。性能を犠牲にすれば、32KBのメモリもそれなりに使いでがありますが、性能を求めてバッファを大きくするとすぐに使い切りそうなサイズという感じです。やっぱ、LPC2388の64KBは使いでがあるなぁ。
動作確認にはTINETに付属する機能豊富なサンプルであるnservを使いたいところなのですが、多数のタスクが動くnservはSRAM領域もたくさん必要となり、連続するSRAM領域が32KBしかないLPC2368では簡単には動かせそうもありません。手をかけて、TINETの使用するバッファや各タスクの使用するスタックをUSBやEthernet用RAMに割り当て直せばなんとかなるかもないのですが、それでもかなり苦しそうです。そこで、機能は少ないけどメモリは喰わないminsvを動かしてみました。ビルドしてみたサイズは次のとおり。EthernetドライバがEthernet RAMを使用していますが、直接アクセスしており配列をとったりしてはいないので、そのサイズはBSSには表れていません。連続SRAM空間使用量は16KB以下に収まっています。
nserv/minsv はWWWサーバ機能を持っており、index.html と stat.htmlの2つのURLに対応するページを表示することができます。次の画面は、minsvにおけるこれら2つのページの表示内容です。
実際に使ってみてわかったのは、minsvではstat.htmlの表示に時間がかかること。しかも、なんだかカクカクと何段階かに分けて表示される感じ。最初に示した実行ログ画面からは、index.htmlの出力には379msしか要していないのに対し、stat.htmlの出力には2555msも要していることが読み取れます。調べてみたところ、TINETのコンフィギュレーションと関係がありそうです。minsvは、メモリの消費量を極力抑えるようにTINETのパラメータを調整してコンフィグしてあります。その一例が USE_TCP_MSS_SEGの使用であり、これによりTCPのセグメントサイズが512オクテットに制約されるようです。使用するバッファメモリを小さくできますが、その代りに一定量のデータを送出するのに、何度もパケットを送受する必要が生じます。ACK待ち回数も増えて、その結果、時間がかかっているようです。
そこで、minsvのMakefieをちょっと修正。上述したUSE_TCP_MSS_SEGの指定を外してみました。すると、消費されるBSSサイズは20KBを超えました。
しかし、stat.htmlの送出時間は942msと、一気に倍以上の速度になりました。
このように、TINETにおいては消費メモリ量と、TCPの転送処理速度には密接な関係があることがわかります。性能を犠牲にすれば、32KBのメモリもそれなりに使いでがありますが、性能を求めてバッファを大きくするとすぐに使い切りそうなサイズという感じです。やっぱ、LPC2388の64KBは使いでがあるなぁ。