シェルティさん
ftpで転送ができるようになりました、FFFTPでの表示では400KByte秒は行くようです、
これからt4ライブラリを主に使用したいと思います、
uIPに比べて格段に速度が速いです、いろいろ教えていただきありがとうございました。
IKUZOさん
こんにちは、シェルティです。
もうFTPの移植が完了したのですね、素晴らしいです。すごいですね。
通信速度も400KByte/secと十分実用に適用出来る速度ですね。
注意としてはT4は送信アルゴリズムが弱いため、ACKが返ってくるのが
遅い環境だと送信も合わせて遅くなる点です。
これは近いうちに直すと開発者から聞きましたが現在の最新版(V.2.00)では遅いままですね。
以下ご質問いただいた内容について回答です。
■ご質問①の回答:画像添付の方法
画像添付については「USE RICH FORMATTING」というリンクを押して
画像添付のアイコンをクリックしたら出来ました。
■ご質問②の回答:TIME_WAIT状態
以前別のスレッドで別の方から似たご質問が有りまして
そこで実施した回答が参考になると思います。
http://japan.renesasrulz.com/cafe_rene/f/69/p/2059/8911.aspx#8911
■ご質問③の回答:H8/300のライブラリ
作ってみます。 T4の最新版はソースコードが付いてて、RXマイコン用のライブラリビルド環境(HEW)も
付いているので、H8/300用に新規でビルド環境を起こして
Toolchainの設定を見ながら真似して設定してあげれば出来ると思います。
が、データの受け渡し方法が良い方法が無い気がしますね。
もしデータの受け渡し方法が見つからなければ、RXマイコン用のライブラリビルド環境を
H8/300用に改造する方法を説明したいと思います。
以上です
シェルティ さん
いつもお世話になっております、以前の投稿記事を拝見しました、_tcp_2mslはできるならそのままで、通信端点をRAMが許す限り多くすれば最大の転送速度になるということで納得しました
「T4の最新版はソースコードが付いてて」これはまたすばらしい
時間ができしだい、これもやりたいと思います、
新規開発ではRXになると思うのですが、H8が残留している基板もありまして
今回はt4で解決できたので、シェルティ さんに感謝しています。
ありがとうございました。
H8/300でT4ライブラリが作れるか、試してみました。結果OKでした。
以下手順です。
①T4ライブラリの最新版パッケージをダウンロード
RXファミリ 組み込み用TCP/IP M3S-T4-Tiny: 導入ガイドFirmware Integration TechnologyR20AN0051JJ0200
②T4ライブラリの最新版パッケージの中身のFITモジュールを解凍
\an_r20an0051jj0200_rx_t4_connectivity\FITModules\r_t4_rx_v2.00.zip
③FITモジュールの中のビルド環境を解凍
\r_t4_rx_v2.00\r_t4_rx\make_lib\make_lib.zip
④\make_lib\T4_Library\hew\T4_Library.hws でHEWを起動する
⑤画面左プロジェクトツリーの「T4_Library」で右クリックして、「プロジェクトの挿入」⇒「新規プロジェクト」を選択しOKボタン
⑥プロジェクトタイプを「Library」選択しプロジェクト名「T4_Library_h8300h_advance」とし、CPU種別に「H8S, H8/300」を選択
ツールチェインに「Hitachi H8S, H8/300 Standard」を選択し、OKボタン
⑦CPUシリーズに「H8/300H」を選択し「次へ」ボタン ※IKUZOさんのお持ちの環境に合わせてください
⑧動作モードに「Advanced」を選択し「完了」ボタン ※IKUZOさんのお持ちの環境に合わせてください
⑨以下ソースコードをプロジェクトツリーの「T4_Library_h8300h_advance」にドラッグアンドドロップ
\make_lib\T4_src
ether.c, ip.c, T4_Version.c, tcp.c, tcp_api.c, udp.c
⑩ビルド→H8S, H8/300 Standard Toolchainのコンパイラタブのオプション項目「インクルードファイルディレクトリ」でインクルードパスを以下追加
相対パス: Project directory
サブディレクトリ: ..\..\..\T4_src
⑪ビルド→H8S, H8/300 Standard Toolchainのコンパイラタブのオプション項目「マクロ定義」でマクロを以下追加
_TCP, _UDP, _TCP_DACK, _ETHER, _MULTI, _TEST_LIBRARY, _ICMP, far, _far
⑫T4_Version.c にH8/300H用のプリデファインマクロの切り分けが無いので以下を151行目に追加
#elif defined (__H8__) && defined(__300HA__)#define __TARGET_CPU__ "H8/300H Advanced mode"#define __COMPILER_VER__ __RENESAS_VERSION__
⑬チェックサム演算コードがRXマイコン用にアセンブラ化されていますが、H8/300用のコードは無いので、C言語で書いたコードを登録
※次投稿でコードを貼りつけます
これでビルドが通りました。お試しください。
r_t4_itcpip.h の冒頭にT4の対応マイコン表が書いてありますね。
ここに書いてある対応マイコンであれば上記と同等の手順でライブラリ生成環境が作れそうです。
#include <type.h>
uint16 _cksum(uchar *data, uint16 nbytes, uint16 sum0){ uint32 sum; uint16 *p_word, word, nwords;
if (nbytes == 0) { sum = sum0; } else { if (((uint32)data) & 0x1) { sum0 = ((sum0 >> 8) & 0x00ff) | (sum0 << 8);
p_word = (uint16 *)(data + 1); /* half word alignment */ nwords = (nbytes - 1) >> 1;
for (sum = sum0; nwords > 0; nwords--) sum += *p_word++;
/* if nbytes odd, add one byte of zero */ if (nbytes & 0x1) { word = 0; } else { /* add last byte */ word = net2hs(*p_word); word = word & 0xff00; /* clear lower 8bits */ } /* add first byte */ p_word = (uint16 *)(data - 1); word |= (net2hs(*p_word) & 0x00ff); /* clear upper 8 bits */ sum += hs2net(word);
sum = (sum >> 16) + (sum & 0xffff); /* add in carry */ sum = (sum >> 16) + (sum & 0xffff); /* maybe one more */ sum = ((sum >> 8) & 0x00ff) | (sum << 8); } else { p_word = (uint16 *)data; nwords = nbytes >> 1;
/* if nbytes odd, fill zero */ if (nbytes & 0x1) { word = net2hs(*p_word); word = (word >> 8) << 8; /* clear lower 8bits */ sum += hs2net(word); } sum = (sum >> 16) + (sum & 0xffff); /* add in carry */ sum = (sum >> 16) + (sum & 0xffff); /* maybe one more */ } }
sum = ~net2hs(sum);
return ((uint16)sum);}
いつもお世話になっています。
M3S-T4-Tiny でtelnetのサンプルなどはご存じないでしょうか?
telnetサンプルはないと思います。
telnetサーバ側でしょうか? クライアント側でしょうか?いずれもT4ライブラリのAPI(サーバ⇒tcp_acp_cep()、クライアント⇒tcp_con_cep())を使えばユーザアプリで実装できると思います。
サンプルで付属しているエコーサーバの待ち受けポートを23番に変更して、tcp_rcv_dat()で受信したデータをtcp_snd_dat()でオウム返ししているところを、受信データ解析して受信データに応じて処理してレスポンスをtcp_snd_dat()で送ることでtelnetサーバ的な動作を実現することはできると思います。
いつもありがとうございます、
「tcp_snd_dat()でオウム返ししているところを、受信データ解析して受信データに応じて処理」ということでやってみます。
R20AN0314JJ0100サンプルでhttpもやりたいのですがhttpとDNSが関係しているのですがhttpのみ取り出して
もうしわけありませんマニュアルを読む前ですが、
R_httpd();とhttp_callbackだけを手当てしてやればよいのでしょうか?DNSも含めないといけないのでしょうか?
FTPの場合はR_ftp_srv_open();があったのですが、httpは無いようなので。
FTPは調子が良いです。