(toppers-users 4009) Re: TINET ipv6 tcp/udpのコンフュグ方法について

阿部 司 abe @ jo.tomakomai-ct.ac.jp
2012年 7月 20日 (金) 09:50:47 JST


アライブビジョンソフトウエア 高橋様、皆様

苫小牧高専の阿部です。

いろいろとご迷惑をおかけしています。
申し訳ありません。

次のメール toppers-users 4008 が届いていますが、
toppers-users 4007 への返信です。
既に解決済みの項目もありますが、ご了承ください。

まず、情報が不足しています。
お知らせいただきたい情報は【<n>】でお知らせします。

【1】メールの内容から推測すると、JSP のようですが、正しいでしょうか?
     また、JSP のリリース番号をお知らせください。
【2】同様に、JSP 用 TINET のようですが、正しいでしょうか?
     また、TINET のリリース番号をお知らせください。
     なお、以下では JSP 用 TINET-1.5.2 を想定しています。
【3】ターゲットシステムをお知らせください。
     なお、こちらでテストできるターゲットシステムを以下に示します。

       秋月電子通商製 AKIH8/3069F-LAN
       北斗電子製 HSB7727ST、HSB7616IT 

     また、以下では、「秋月電子通商製 AKIH8/3069F-LAN」を
     ターゲットシステムとしています。 

> 阿部先生、MLの皆様お世話になります。
> アライブビジョンソフトウエアの高橋です。
>
> TINETでIPV6でTCPとUDPを使うプログラムを作成したいのですが、コンフィギュレーションの方法
> がわかりません。
>
> やってみたこと(概要)
> 1.サンプル nserv で、udpエコーサーバー以外は、無効にした。
>  --->コンパイルエラー(詳細は後述)

残念ながら、このケースのテストは行っていませんでした。

【4】tinet_jsp_configure の指定全てをお知らせください。

> 2.サンプル usrv6 で -s tcp/udp に変更した
>  ---> コンパイルエラー

usrv6 は UDP を使用したアプリケーションのため、TCP を指定すると
エラーになります。なお、-s udp では正常にコンパイルできました。

【5】tinet_jsp_configure の指定全てをお知らせください。

> それで、tinet.pdfを確認しましたが、自分ではこの内容では理解できません。
> みなさん御理解されているのでしょうか?
> 以下抜粋です。

文章力が貧弱で大変申し訳ありません。

>
> -------------------------------------------------------------------------------------
> 8. 2 ファイルの作成、設定
> アプリケーションプログラムの他に、変更・新規作成すべきファイルと TINET コンフィグレータで
> 生成されるファイルを以下に示す。全て TOPPERS/JSP ルートディレクトリからの相対パスであり、
> Makefile マクロの意味を以下に示す。
> --------------------------------------------------------------------------------------
> 8章に設定方法の説明かと思いますが、何をユーザーが用意して何がコンフィギュレータから
> 出力されるのかがわかりません。

まず、TINET の Makefile のマクロ $(CPU)、$(SYS)、$(APP_DIR)、$(UNAME) は、
JSP の Makefile と同じです。

8.2章では、

【新規作成】は、ユーザー様に新規に作成していただくファイルです。
【変更】は、ユーザー様に、既にあるファイルを変更していただくファイルです。
【自動生成】は、コンフィギュレータが生成するファイルです。

> まずアプリケーションプログラムをどこに置いておけばいいのでしょうか?

TINET のアプリケーションは、JSP のアプリケーションでもありますので、
JSP と同じで、JSP のカーネルのソースファイルを展開したディレクトリの下です。
JSP の user.txt の「7.4 サンプルプログラムの構築」を参照してください。
TINET サンプルプログラムの Makefile は、構築例の場所を想定しています。
もし、別の場所に置くのであれば、Makefile を変更してください。

> 8.2は、configuratorが出力するファイルを記述しているだけのように思えています。

8.2 章では、(12)、(13)、(14) だけが、コンフィギュレータが生成するファイ
ルです。

>
> ---------------------------------------------
> 上記の(nserv)サンプルでの詳細
> Makefileの修正
> #  ソースファイルのディレクトリの定義
> #
> SRCDIR = ..
> CONFIGDIR ?= $(SRCDIR)/config
>
> #  共通サーバプログラムの選択
>
> #USE_WWW_SRV = true
> USE_UDP_ECHO_SRV = true
> #USE_TCP_DISCARD_SRV = true
>
> #  TCP エコーサーバプログラムの選択、ただし、両方は選択できない。
> #    tcp_echo_srv1: 送受信タスク同一型
> #    tcp_echo_srv2: 送受信タスク分離型
>
> #TCP_ECHO_SRV = tcp_echo_srv1
> #TCP_ECHO_SRV = tcp_echo_srv2
>
> # シリアル経由のみ
> #USE_DBG_CONS = true
>
> # シリアルとネットワーク経由
> # ただし、ノンブロッキングコールを組込んだ時有効
> #USE_NET_CONS = true
>
> #  共通クライアントプログラムの選択
>
> #USE_TCP_ECHO_CLI = true
> #USE_UDP_ECHO_CLI = true
> #USE_TCP_DISCARD_CLI = true
> #USE_UDP_DISCARD_CLI = true
> #USE_PING = true
>
> #  共通サーバタスク数の選択
>
> #CDEFS := $(CDEFS) -DNUM_WWW_SRV_TASKS=1		# WWW サーバタスク数、最大 2
> #CDEFS := $(CDEFS) -DNUM_TCP_ECHO_SRV_TASKS=1	# TCP ECHO サーバタスク数、最大 8
>
> ---------------------------------------------------
> コンパイル結果
> --------------------------------------------------
> make dependの後 make の最後のほう
> rm -f tmpfile1 tmp_script.pl
> h8300-hms-gcc -c  -mh -mint32 -mrelax -O2 -g  -DCPU_CLOCK=20000000 -DLABEL_ASM -DVECTOR_SIZE=64 -DNUM_VRID_TCP_REPS=2            -DNUM_VRID_TCP_CEPS=4          -DNUM_VRID_UDP_CEPS=2            -DNUM_VRID_TCP6_REPS=1  -DNUM_VRID_TCP6_CEPS=2 -DNUM_VRID_UDP6_CEPS=2   -DUSE_IPV6_MMTU -DUSE_UDP_ECHO_SRV -DUSE_NETAPP_SUBR -DUSE_COPYSAVE_API -DUNDEF_TCP_CFG_PASSIVE_OPEN -DTCP_CFG_RWBUF_CSAVE -DTCP_CFG_SWBUF_CSAVE -DUSE_TCP_NON_BLOCKING -DTCP_CFG_EXTENTIONS -DUSE_TCP_EXTENTIONS -DUDP_CFG_EXTENTIONS -DUSE_UDP_EXTENTIONS  -DTARGET_KERNEL_JSP -DTARGET_KERNEL_JSP -DSUPPORT_INET6 -DSUPPORT_ETHER -DSUPPORT_UDP -DTCP_CFG_LIBRARY -DUDP_CFG_LIBRARY -DTNCT_MONITOR -I. -I../include  -I../config/h8/akih8_3069f -I../config/h8 -I../tinet/netdev/if_ed -I../tinet  -I../kernel vector.S
> h8300-hms-gcc -c  -mh -mint32 -mrelax -O2 -g  -DCPU_CLOCK=20000000 -DLABEL_ASM -DVECTOR_SIZE=64 -DNUM_VRID_TCP_REPS=2            -DNUM_VRID_TCP_CEPS=4          -DNUM_VRID_UDP_CEPS=2            -DNUM_VRID_TCP6_REPS=1  -DNUM_VRID_TCP6_CEPS=2 -DNUM_VRID_UDP6_CEPS=2   -DUSE_IPV6_MMTU -DUSE_UDP_ECHO_SRV -DUSE_NETAPP_SUBR -DUSE_COPYSAVE_API -DUNDEF_TCP_CFG_PASSIVE_OPEN -DTCP_CFG_RWBUF_CSAVE -DTCP_CFG_SWBUF_CSAVE -DUSE_TCP_NON_BLOCKING -DTCP_CFG_EXTENTIONS -DUSE_TCP_EXTENTIONS -DUDP_CFG_EXTENTIONS -DUSE_UDP_EXTENTIONS  -DTARGET_KERNEL_JSP -DTARGET_KERNEL_JSP -DSUPPORT_INET6 -DSUPPORT_ETHER -DSUPPORT_UDP -DTCP_CFG_LIBRARY -DUDP_CFG_LIBRARY -DTNCT_MONITOR -I. -I../include  -I../config/h8/akih8_3069f -I../config/h8 -I../tinet/netdev/if_ed -I../tinet  -fno-strict-aliasing nserv.c
> h8300-hms-gcc -c  -mh -mint32 -mrelax -O2 -g  -DCPU_CLOCK=20000000 -DLABEL_ASM -DVECTOR_SIZE=64 -DNUM_VRID_TCP_REPS=2            -DNUM_VRID_TCP_CEPS=4          -DNUM_VRID_UDP_CEPS=2            -DNUM_VRID_TCP6_REPS=1  -DNUM_VRID_TCP6_CEPS=2 -DNUM_VRID_UDP6_CEPS=2   -DUSE_IPV6_MMTU -DUSE_UDP_ECHO_SRV -DUSE_NETAPP_SUBR -DUSE_COPYSAVE_API -DUNDEF_TCP_CFG_PASSIVE_OPEN -DTCP_CFG_RWBUF_CSAVE -DTCP_CFG_SWBUF_CSAVE -DUSE_TCP_NON_BLOCKING -DTCP_CFG_EXTENTIONS -DUSE_TCP_EXTENTIONS -DUDP_CFG_EXTENTIONS -DUSE_UDP_EXTENTIONS  -DTARGET_KERNEL_JSP -DTARGET_KERNEL_JSP -DSUPPORT_INET6 -DSUPPORT_ETHER -DSUPPORT_UDP -DTCP_CFG_LIBRARY -DUDP_CFG_LIBRARY -DTNCT_MONITOR -I. -I../include  -I../config/h8/akih8_3069f -I../config/h8 -I../tinet/netdev/if_ed -I../tinet  -fno-strict-aliasing ../tinet/netapp/netapp_subr.c
> ../tinet/netapp/netapp_subr.c:566: `TCP_RSV_REPID1' undeclared here (not in a function)
> ../tinet/netapp/netapp_subr.c:566: initializer element is not constant
> ../tinet/netapp/netapp_subr.c:566: (near initialization for `vrid_tcp_rep[0]')
> ../tinet/netapp/netapp_subr.c:569: `TCP_RSV_REPID2' undeclared here (not in a function)
> ../tinet/netapp/netapp_subr.c:569: initializer element is not constant
> ../tinet/netapp/netapp_subr.c:569: (near initialization for `vrid_tcp_rep[1]')
> ../tinet/netapp/netapp_subr.c:576: `TCP_RSV_CEPID1' undeclared here (not in a function)
> ../tinet/netapp/netapp_subr.c:576: initializer element is not constant
> ../tinet/netapp/netapp_subr.c:576: (near initialization for `vrid_tcp_cep[0]')
> ../tinet/netapp/netapp_subr.c:579: `TCP_RSV_CEPID2' undeclared here (not in a function)
> ../tinet/netapp/netapp_subr.c:579: initializer element is not constant
> ../tinet/netapp/netapp_subr.c:579: (near initialization for `vrid_tcp_cep[1]')
> ../tinet/netapp/netapp_subr.c:582: `TCP_RSV_CEPID3' undeclared here (not in a function)
> ../tinet/netapp/netapp_subr.c:582: initializer element is not constant
> ../tinet/netapp/netapp_subr.c:582: (near initialization for `vrid_tcp_cep[2]')
> ../tinet/netapp/netapp_subr.c:585: `TCP_RSV_CEPID4' undeclared here (not in a function)
> ../tinet/netapp/netapp_subr.c:585: initializer element is not constant
> ../tinet/netapp/netapp_subr.c:585: (near initialization for `vrid_tcp_cep[3]')
> ../tinet/netapp/netapp_subr.c:696: `UDP_RSV_CEPID1' undeclared here (not in a function)
> ../tinet/netapp/netapp_subr.c:696: initializer element is not constant
> ../tinet/netapp/netapp_subr.c:696: (near initialization for `vrid_udp_cep[0]')
> ../tinet/netapp/netapp_subr.c:699: `UDP_RSV_CEPID2' undeclared here (not in a function)
> ../tinet/netapp/netapp_subr.c:699: initializer element is not constant
> ../tinet/netapp/netapp_subr.c:699: (near initialization for `vrid_udp_cep[1]')
> Makefile:560: recipe for target `netapp_subr.o' failed
> make: *** [netapp_subr.o] Error 1
> ------------------------------------------------------------

先ほどの通り、残念ながら、このケースのテストは行っていませんでした。
tinet.pdf 「9.3.1 Makefile の設定」、「[6] ITRON TCP/IP API 仕様の UDP
の拡張機能」の
通り、拡張機能を組込むため、ディフォルトで true に設定しています。
Makefile

154行目付近の

TCP_CFG_EXTENTIONS = true

159行目付近の

USE_TCP_EXTENTIONS = true

165行目付近の

UDP_CFG_EXTENTIONS = true
USE_UDP_EXTENTIONS = true

をコメントアウトする必要がありますが、それでもエラーになりますね。
次回のリリースで対応します。

> やりたいことは、UDPとTCPを有効にしてなにもないところからプログラムを
> 書きたいのですが、usrv6を単に -s tcp/udpにしてもコンパイル時エラーになります。

先ほどの通り、usrv6 は UDP を使用したアプリケーションのため、
TCP を指定するとエラーになります。
TCP のエコーサーバ(IPv6)のサンプルプログラムは echo6 です。
echo6 と usrv6 を合体したプログラムを作成してみてはいかがでしょうか。

> 昔、利用したときは、サンプルが非常にシンプルだったためそのまま使えていましたが
> 今のサンプルは多機能のため、不要機能の削除をしたいのですがエラーになります。

nserv は TINET のデバッグ用のアプリケーションのため、
機能が追加される毎に複雑化しています。
選択肢が非常に多いので、全ての選択肢をテストすることはできません。
このため、皆様の報告により対応したいと考えておりますので、
皆様からの報告をお待ちしています。

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

-- 
.\" 苫小牧工業高等専門学校 情報工学科 教授 阿部 司
.\" 〒059-1275 北海道苫小牧市字錦岡443番地
.\" E-mail: abe @ jo.tomakomai-ct.ac.jp  TEL/FAX: 0144-67-8937