#navi(Toppers) #counter #contents -[[TOPPERS本家:http://www.toppers.jp/index.html]] -[[ITRON TCP/IPの仕様書:http://www.ertl.jp/ITRON/SPEC/tcpip-j.html]] * TINET [#h6199ed4] *おしらせ [#dab84bdf] -TOPPERS-MLより TOPPERS ユーザの皆様 苫小牧高専、情報工学科の阿部です。 TINET リリース 1.2 に、重要な問題が発見されました。影響するのは リトルエンディアンのプロセッサです。このため、 TOPPERS プロジェクトと、宮城県産業技術センター様の ホームページから、TINET リリース 1.2.1 の配布を開始させていただきます。 URL は、 TINETとは(TOPPERS プロジェクト) http://www.toppers.jp/tinet.html ダウンロード(TOPPERS プロジェクト) http://www.toppers.jp/tinet-download.html ダウンロード(宮城県産業技術センター様) http://www.mit.pref.miyagi.jp/embedded/consortium/ となっております。 変更点等は、それぞれのドキュメントを参照してください。 皆様から、問題点だけではなく、ご要望もお待ちしております。 それでは、よろしくお願いいたします。 -- .\" 苫小牧工業高等専門学校 情報工学科 教授 阿部 司 .\" E-mail: abe@jo.tomakomai-ct.ac.jp TEL/FAX: 0144-67-8937 //================================================ ---- *TINET概論 [#u26240dd] **はじめに [#d692f07a] -ユーティリティ関数/マクロ |UW htonl(UW hl);|ホスト32ビットをネットワークオーダに変換| |UH htons(UH hs);|ホスト16ビットをネットワークオーダに変換| |UW ntohl(UW nl);|ネットワーク32ビットをホストオーダに変換| |UH ntohs(UH ns);|ネットワーク16ビットをホストオーダに変換| -エラーコード取り出し関数/マクロ |ER mainercd(ER ercd);|エラーコードからメインエラーコードを取り出す| |ER subercd(ER ercd);|エラーコードからサブエラーコードを取り出す| **TCPのAPI [#bee1b86b] |>|LEFT:~TCPのAPI| |TCP_CRE_REP(ID repid, {ATR repatr, {UW myipaddr, UH myportno}});|TCP受付口の静的API| |TCP_CRE_CEP(ID cepid, {ATR cepatr, VP sbuf, INT sbufsz, VP rbuf, INT rbufsz, FP callback});|TCP通信端点の静的API| |ER tcp_acp_cep(ID cepid, ID repid, T_IPV4EP *p_dstaddr, TMO tmout);|接続要求待ち(受動オープン)| |ER tcp_con_cep(ID cepid, T_IPV4EP *p_myaddr, T_IPV4EP *p_dstaddr, TMO tmout);|接続要求待ち(能動オープン)| |ER tcp_sht_cep(ID cepid);|データ送信の終了(FINが送出される)| |ER tcp_cls_cep(ID cepid, TMO tmout);|通信端点のクローズ(本当にクローズするのを待つ)| |ER tcp_snd_dat(ID cepid, VP data, INT len, TMO tmout);|データの送信| |ER tcp_rcv_dat(ID cepid, VP data, INT len, TMO tmout);|データの受信| |ER tcp_get_buf(ID cepid, VP *p_buf, TMO tmout);|送信バッファの取得(省コピーAPI)| |ER tcp_snd_buf(ID cepid, INT len);|バッファ内のデータの送信(省コピーAPI)| |ER tcp_rcv_buf(ID cepid, VP *p_buf, TMO tmout);|受信データのバッファ取得(省コピーAPI)| |ER tcp_rel_buf(ID cepid, INT len);|受信用バッファの開放(省コピーAPI)| |ER tcp_can_cep(ID cepid, FN fncd);|ペンディングしている処理のキャンセル| |ER callback(ID cepid, FN fncd, VP p_parblk);|コールバックルーチン| **UDPのAPI [#i9a2a2c9] |>|LEFT:~UDPのAPI| |UDP_CRE_CEP(ID repid, {ATR cepatr, {UW myipaddr, UH myportno}, FP callback});|UDP通信端点の静的API| **TINET独自API [#za004c36] |>|LEFT:~TINET独自API| |ER in4_add_ifaddr(T_IN4_ADDR addr, T_IN4_ADDR mask);|インターフェースにIPv4アドレスを設定| |ER in4_add_route(int index, T_IN4_ADDR target, T_IN4_ADDR mask, T_IN4_ADDR gateway);|静的経路表にエントリ設定| |extern UB *ip2str(UB *buf, const T_IN4_ADDR *ipaddr);|IPv4アドレスを文字列に変換| |const char *in_strtfn(FN fncd);|機能コードを文字列に変換| |extern UB *mac2str(UB *buf, UB *macaddr);|MACアドレスを文字列に変換| -BOOL arp_callback_duplicated(UB *short);コールバック関数が必要~ IPv4アドレスの重複検出時の処理 //==================================================== ---- *アプリケーションの作り方 [#he56a494] **用意する(される)ファイル [#x918397e] |~ファイル名|~作成方法|~備考| |config/$(CPU)/tinet_cpu_config.h|新規作成|プロセッサ依存。tinet_config.txt参照| |config/$(CPU)/$(SYS)/tinet_sys_config.h|新規作成|システム依存。tinet_config.txt参照| |$(APP_DIR)/tinet_app_config.h|新規作成|アプリ依存。tinet_config.txt参照| |tinet/netdev/$(NIC)/tinet_nic_config.h|新規作成|インターフェース依存| |config/$(CPU)/tinet_cpu_defs.h|新規作成|プロセッサ依存定義。tinet_defs.txt参照| |tinet/netdev/$(NIC)/tinet_nic_defs.h|新規作成|インターフェース定義。tinet_defs.txt参照| |$(APP_DIR)/tinet_$(UNAME).cfg|新規作成|コンフィギュレーションファイル| |$(APP_DIR)/route_cfg.c|新規作成|静的ルーティング。nserv/route_cfg.c流用可| |$(APP_DIR)/$(UNAME).c|変更|includeの追加(下記)| |$(APP_DIR)/$(UNAME).cfg|変更|TINETのインクルード(下記)| |$(APP_DIR)/Makefile|変更|TINETの追加(下記)| |$(APP_DIR)/tinet_cfg.c|自動生成|TINETのcfg| |$(APP_DIR)/tinet_kern.cfg|自動生成|TINETのカーネル| |$(APP_DIR)/tinet_id.h|自動生成|TINETのIDファイル| -$(APP_DIR)/$(UNAME).cへのincludeの追加 #include "tinet_id.h" #include <netinet/in.h> #include <netinet/in_itron.h> -$(APP_DIR)/$(UNAME).cfgへのincludeの追加 #include "../tinet/tinet.cfg" -$(APP_DIR)/Makefileの変更点~ 「ソースファイルのディレクトリの定義」の後に、 以下の行を追加する。 # # ネットワークサービスの定義 # # ネットワークインタフェースの選択、何れか一つ選択する。 #NET_IF = loop #NET_IF = ppp NET_IF = ether #PPP_CFG_MODEM = true # PPP で、モデム接続の場合 # ネットワーク層の選択、何れか一つ選択する。 SUPPORT_INET4 = true #SUPPORT_INET6 = true # トランスポート層の選択 SUPPORT_TCP = true #SUPPORT_UDP = true # # TINET の Makefile.config のインクルード # include $(SRCDIR)/tinet/Makefile.config **ルーティングの設定 [#g3670ce7] -nserv/route_cfg.cを流用する