M3S-T4-Tinyについて その2

毎回皆様にはお世話になっております。
なっとうです。

シェルティ様 SAK様には前回大変お世話になりました。

M3S-T4-Tinyをなんとか組み込む事ができました。
(まだwebサーバーの確認はできていませんが、ファイルシステムを組み込む所まではできているかと思います。)

前回のお話の中で、送信したい時にtcp_can_cepを送るとの事で、受信をキャンセルして送信をする事ができました。

その後確かに送る事も受信する事もできましたが、以下の問題で悩んでおります。

wiresharkで確認をしていると、どういったタイミングで起こる事象なのか把握できておりませんが、
送信->ACK受信がきているのに、
Retransmissionが発生し、それの応答としてDuplicate ACKが返ってきます。

その後何事も無く動作できれば良いのですが、
その状態から次の送信に移ることができなく困っております。

もしかしたらこのサイトの趣旨と少しかけ離れているのかもしれませんが、ご教授いただけたらと思います。

前提条件は前回と同じです。
使用マイコンはRX63N
開発環境はCubeSuite+ V2.01.00

サンプルプログラムはパッチプログラムを入れて動かしております。
ソースはtcp_nonblocking_sampleを使用しております。

以上よろしくお願いいたします。


Parents
  • シェルティ様

    お世話になります。
    なっとうです。
    何度もご尽力頂き感謝いたします。

    ①tcp_can_cep()の第2引数は何でしょうか?
    TFN_TCP_RCV_DATのみです。

    ②wiresharkのログ(*pcap\,*pcapng)を貼っていただけますか?
    現在システムに組み込んでしまっているので、貼れないのですが、
    イメージとしまして、下記状況です。

    192.168.1.1がマイコン(サーバー)
    192.168.1.1がPC(クライアント)

    Source:192.168.1.1 Destination:192.168.1.2
    50000>50001 [PSY ACK] seq=242256 ACK=361 Win=1460 Len=30

    Source:192.168.1.2 Destination:192.168.1.1
    50001>50000 [ACK] seq=361 ACK=242286 Win=1460 Len=0

    ここで上記のACKが取れて無い様で、
    TCP Retransmission
    Source:192.168.1.1 Destination:192.168.1.2
    50000>50001 [PSY ACK] seq=242256 ACK=361 Win=1460 Len=30

    Source:192.168.1.2 Destination:192.168.1.1
    TCP DUP ACK
    50001>50000 [ACK] seq=361 ACK=242286 Win=1460 Len=0




    となり、2秒→4秒→8秒毎に同様の状態が続きます。
    現在はタイムアウトを持たせてlan_close()、tcpudp_close()して、
    再度オープンをして対応をしています。

    ③tcpudp_open()に渡すワーク領域は十分でしょうか?
    こちらはサンプル通りで問題ありません。

    ④tcp_snd_dat()の送信データ長にゼロを指定していませんか?
    ゼロ指定はありません。

    ⑤スタックは十分でしょうか?
    スタックは十分とってあります。

    後もう一点(webサーバーについてですが。)
    私も内臓ROMだけでサーバーを動かしたく思っております。
    構成としては、画面一枚あればよく、
    接続時は現在の設定データを表示し、
    設定を変更して、ボタンを押したら、
    ゲットメソッドで受けたデータを反映して、
    再度表示させる程度を考えております。

    前回のお話の中で、file_open()とfile_read()の変更、実装との事でしたが、
    よろしければ、もう少しご指南を頂けたらと存じます。

    以上よろしくお願いいたします。




Reply
  • シェルティ様

    お世話になります。
    なっとうです。
    何度もご尽力頂き感謝いたします。

    ①tcp_can_cep()の第2引数は何でしょうか?
    TFN_TCP_RCV_DATのみです。

    ②wiresharkのログ(*pcap\,*pcapng)を貼っていただけますか?
    現在システムに組み込んでしまっているので、貼れないのですが、
    イメージとしまして、下記状況です。

    192.168.1.1がマイコン(サーバー)
    192.168.1.1がPC(クライアント)

    Source:192.168.1.1 Destination:192.168.1.2
    50000>50001 [PSY ACK] seq=242256 ACK=361 Win=1460 Len=30

    Source:192.168.1.2 Destination:192.168.1.1
    50001>50000 [ACK] seq=361 ACK=242286 Win=1460 Len=0

    ここで上記のACKが取れて無い様で、
    TCP Retransmission
    Source:192.168.1.1 Destination:192.168.1.2
    50000>50001 [PSY ACK] seq=242256 ACK=361 Win=1460 Len=30

    Source:192.168.1.2 Destination:192.168.1.1
    TCP DUP ACK
    50001>50000 [ACK] seq=361 ACK=242286 Win=1460 Len=0




    となり、2秒→4秒→8秒毎に同様の状態が続きます。
    現在はタイムアウトを持たせてlan_close()、tcpudp_close()して、
    再度オープンをして対応をしています。

    ③tcpudp_open()に渡すワーク領域は十分でしょうか?
    こちらはサンプル通りで問題ありません。

    ④tcp_snd_dat()の送信データ長にゼロを指定していませんか?
    ゼロ指定はありません。

    ⑤スタックは十分でしょうか?
    スタックは十分とってあります。

    後もう一点(webサーバーについてですが。)
    私も内臓ROMだけでサーバーを動かしたく思っております。
    構成としては、画面一枚あればよく、
    接続時は現在の設定データを表示し、
    設定を変更して、ボタンを押したら、
    ゲットメソッドで受けたデータを反映して、
    再度表示させる程度を考えております。

    前回のお話の中で、file_open()とfile_read()の変更、実装との事でしたが、
    よろしければ、もう少しご指南を頂けたらと存じます。

    以上よろしくお願いいたします。




Children
No Data