(toppers-users 2816) AKIH8-3069FでTCP/IPとシリアルを使ったタスクの不具合
山田健二
kenji.yamada00 @ gmail.com
2008年 10月 16日 (木) 11:31:56 JST
はじめまして、福岡の山田と申します。
主に使用している関係上、フリーメールからの投稿で失礼します。
趣味でμITRONの勉強をしており、TOPPERS/JSPを使わせていただいています。
現在、TCP/IP 通信を使ったタスクとシリアル通信を使ったタスクを
併用した際に、シリアル通信を使ったタスクが止まっている *ような*
現象が発生しておりまして、どう調査して良いかがわからず困っております。
以下に状況を説明させていただきますので、同じような経験をされた
方や、思い当たる事がおありの方ががいらっしゃいましたら、
何でも結構ですのでアドバイスをいただけませんでしょうか?
■開発環境
AKIH8-3069F + jsp-1.4.2 + tinet-1.4
PizzaFactory2評価キットTOPPERS教材対応版
■実行環境
WEBサーバ ------------ AKIH8-3069F ------------ 装置A
Ethernet RS232C
19200bps、フロー制御なし
■プログラム概要
次の2つのタスクをメインタスクからタスクA、タスクBの順に起動します。
タスクA:AKIH8-3069F が TCP/IP のクライアントになり
HTTP サーバからデータを収集します。
タスクB:AKIH8-3069F から装置Aにシリアル通信でタスクAで収集した
データを送信し、装置Aからの応答を受信します。
(装置Aは AKIH8-3069F からデータを受信すると
固定長の応答を返信します。(ハンドシェイク))
タスクBは装置Aからの固定長の応答を待ち、応答を受信したら
永久ループにて上記処理を繰り返します。
※タスクA と タスクB とのデータのやり取りは、4KBのグローバル変数を
使用しています。
■不具合現象
ハンドシェイクを20回ほど行った後、
タスクBにてデータ送信が行われなくなります。
■確認事項
1.ハンドシェイクの状態は送受信ともに正常でした。
2.タスクB単体(tinet を組み込まない状態)では、装置Aとの送受信を
3日間繰り返しました。(送信データはテストデータ)
3.不具合現象が発生するタイミングはほぼ同じです。
装置Aは応答を返信していますが、タスクBが
応答の受信に失敗(取りこぼし)していれば、
応答待ちで止まる可能性はあると思っています。
ご不明な点が多々あるかと思いますが、足らない情報などが
ありましたらご指摘ください。
長くなりましたが、よろしくお願いします。
山田健二