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_ALL、TFN_TCP_RCV_DATのいずれかかと思いますが、TFN_TCP_ALLの場合、すべてキャンセルされてしまいますので、間違えて送信をキャンセルしていないかご確認ください。

    ②wiresharkのログ(*pcap\,*pcapng)を貼っていただけますか?

    ③tcpudp_open()に渡すワーク領域は十分でしょうか?サンプルのようにtcpudp_get_ramsize()で値の事前確認をしていれば問題ないと思います。

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

    ⑤スタックは十分でしょうか?
     Callwalkerを使ってスタックを見てください。
     \sample\rx63n_rsk\src\bsp\stacksct.h の、
    #pragma stacksize si=0x400
     で調整してください。

    ---

    別方向で解決を図るとしたら、通信端点を送信用受信用とで分けてキャンセルを使わない方法がありますね。
    こちらもご検討ください。

    以上よろしくお願いします
Reply
  • なっとうさん、お疲れ様です。

    返信遅くなりすみません。
    以下、教えていただけますか?

    ①tcp_can_cep()の第2引数は何でしょうか?
     →TFN_TCP_ALL、TFN_TCP_RCV_DATのいずれかかと思いますが、TFN_TCP_ALLの場合、すべてキャンセルされてしまいますので、間違えて送信をキャンセルしていないかご確認ください。

    ②wiresharkのログ(*pcap\,*pcapng)を貼っていただけますか?

    ③tcpudp_open()に渡すワーク領域は十分でしょうか?サンプルのようにtcpudp_get_ramsize()で値の事前確認をしていれば問題ないと思います。

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

    ⑤スタックは十分でしょうか?
     Callwalkerを使ってスタックを見てください。
     \sample\rx63n_rsk\src\bsp\stacksct.h の、
    #pragma stacksize si=0x400
     で調整してください。

    ---

    別方向で解決を図るとしたら、通信端点を送信用受信用とで分けてキャンセルを使わない方法がありますね。
    こちらもご検討ください。

    以上よろしくお願いします
Children
No Data