#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を流用する


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS