(toppers-users 2821) Re: TINETをM32Cで動作させようとしていますがnservが途中でとまります

市川 義裕 ichikawa @ elektroflex.co.jp
2008年 10月 20日 (月) 10:33:25 JST


阿部さま

エレクトロフレックス 市川です。

省コピー機能を使用せず動作確認を行ってみました。

具体的には
USE_COPYSAVE_API
TCP_CFG_RWBUF_CSAVE
TCP_CFG_SWBUF_CSAVE
を未定義にした所、PPPを使用しWWWサーバから表示データが取得できました。
但し、使用メモリ量が増えた為、アプリを減らす必要が出てクライアント機能を
組み込まない状態で動作確認が出来ました。

省メモリ機能は使用したい所なので追い追い調べて行きたいと思います。
どうもありがとうございました。


----- Original Message ----- 
From: "ABE Tsukasa" <abe @ jo.tomakomai-ct.ac.jp>
To: <users @ toppers.jp>
Sent: Wednesday, October 08, 2008 11:48 AM
Subject: (toppers-users 2814) Re: TINETをM32Cで動作させようとしていますがnservが途中でとまります


> エレクトロフレックス 市川様
> 
> 苫小牧高専、情報工学科の阿部です。
> 
>>現在JSP-1.4.3+TINET-1.4をM32C/87(ルネサスのスタータキット)にてPPPで
>>動作させようとしています。
>>何点か変更の後、WWWでの通信の確認を行っていますがうまく行きません。
>>どのあたりを確認すればよろしいのでしょうか。
>>なお、コンパイラはHEWの物を使用しています。
> 
> まず、申し訳ありませんが、一応 PPP をサポートはしていますが、
> テスト環境を、うまく構築できなかった関係で、TINET-1.4 では、
> PPP の試験ができませんでした。
> 
>>ハードウェアはLinuxのPPPサーバとM32Cマイコンボードをシリアル直接接続しています。
>>
>>現象としては
>>tinet_cpu_config.h において NUM_MPF_NET_BUF_IF_PDU 2 の時コンソール上は
>>
>>PPP/IPCP] up, Local IP Addr: 192.168.1.21, Remote IP Addr: 192.168.1.31.
>>[WWW:04]     connected:       8, from: 21.1.168.192.53890
>>
>>でとまっていてブラウザに変化はありません。パケットは
>>
>>PC  →syn    →M32C
>>M32C→ack,syn→PC
>>PC  →ack    →M32C
>>PC  →ack    →M32C  GET /〜
>>PC  →ack    →M32C  =0.5CRLFAccept-〜
>>M32C→ack    →PC    GET /〜のack(=0.5CRLFAccept-〜受信中に送信)
>>PC  →ack    →M32C  =0.5CRLFAccept-〜
>>M32C→ack    →PC    =0.5CRLFAccept-〜のack
>>
>>でPPP通信が終わってしまいます。但しLCPのエコーのREQ、ACKは継続しています。
>>この状態のときM32CからのTCPのウインドウが最後以外が0200hで最後が016dhと
>>変化しています。
> 
> H8/3048F(16MHz)で、テストしていたときと、似ていますね。
> H8/3048F の割り込み応答が遅いのが原因と思われるのですが、
> フレームの CRC エラーが頻繁に発生していました。
> このため、再送セグメントがうまく届かないようです。
> 
>>tinet_cpu_config.h において NUM_MPF_NET_BUF_IF_PDU 3〜6 ですと
>>1回はindex.htmlがPC上に送られるのですが、2回目にindex.htmlを表示させようとすると
>>
>>[PPP/IPCP] up, Local IP Addr: 192.168.1.21, Remote IP Addr: 192.168.1.31.
>>[WWW:04]     connected:       5, from: 21.1.168.192.35963            ←1回目
>>[WWW:04]     send:               index.html, len: 1227, time: 2 [ms]
>>[WWW:04]     finished:        5
>>[WWW:04]     connected:       6, from: 192.168.1.31.35964            ←2回目
>>[WWW:04]     send:               index.html, len: 1227, time: 1 [ms]
>>20 messages are lost.
>>[NET BUF] E_ID, ID=185.
>>E_ID reported by `rel_net_buf(cep->rwbufq)' in line 877 of `tcp_subr_cs.c'.
>>[NET BUF] E_ID, ID=86.
>>E_ID reported by `rel_net_buf(cep->rwbufq)' in line 877 of `tcp_subr_cs.c'.
>>[NET BUF] E_ID, ID=192.
>>E_ID reported by `rel_net_buf(cep->rwbufq)' in line 877 of `tcp_subr_cs.c'.
>>[NET BUF] E_ID, ID=192.
>>E_ID reported by `rel_net_buf(cep->rwbufq)' in line 877 of `tcp_subr_cs.c'.
>>[NET BUF] E_ID, ID=168.
>>E_ID reported by `rel_net_buf(cep->rwbufq)' in line 877 of `tcp_subr_cs.c'.
>>[NET BUF] E_PAR, ID=1.
>>E_PAR reported by `rel_net_buf(cep->rwbufq)' in line 877 of `tcp_subr_cs.c'.
>>[NET BUF] E_ID, ID=31.
>>
>>のようになります。(2回目のsend:以降はいつも同じでは有りません)
> 
> ネットワークバッファの ID 部分を破壊しているようで、
> TINET の内部処理問題のようです。
> 
> なお、ウィンドバッファの省コピー機能を使っているようですが、
> この場合、ネットワークバッファを多く使います。
> 使わないように設定して、テストはできるでしょうか?
> 
>>1回目のパケットは異常なく2回目のパケットではindex.hlmlのメッセージを含む
>>パケットの送信元アドレスが間違ったものになっており、PCは受信できず、
>>M32Cもackが帰ってこないので待ったまま(FIN_WAIT1)になります。
>>メモリーの内容が壊れているようですが何処から見て行けば良いのか判らない状況です。
>>
>>以上ですがアドバイスを頂けないでしょうか。
>>よろしくお願いします。
>>
>>なお以下のような変更も行っています。
>>
>>ppp_hdlc.cのHDLC_putoctet (UB octet){}では
>>// if ((octet < 0x20 && ((1 << octet) & lcp_remote_ack_cfg.ACCM)) ||
>> if ((octet < 0x20 && (((UW)1 << octet) & lcp_remote_ack_cfg.ACCM)) ||
>>とキャストしないと必要な長さのシフトが行われませんでした。
>>
>>ppp_fsm.c、ppp_lcp.c、ppp_upap.cではヘッダ長さのバイトオーダが逆で
>>長さチェックの部分で引っかかり、
>>たとえば
>>  hdr = GET_PPP_CP_HDR(input);
>>    hdr->len = (hdr->len >> 8) + ((hdr->len & 0x00ff) << 8); // 追加
>>のようにしてとりあえず動かしています。
> 
> int のサイズ問題と、バイトオーダ問題ですね。
> こちらでも変更しておきます。
> 
> あまり参考にならないようですが、
> よろしくお願いいたします。
> 
> --
> .\" 苫小牧工業高等専門学校 情報工学科 教授 阿部 司
> .\" 〒059-1275 北海道苫小牧市字錦岡443番地
> .\" E-mail: abe @ jo.tomakomai-ct.ac.jp  TEL/FAX: 0144-67-8937
> 
> 
> 
>