(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が
応答の受信に失敗(取りこぼし)していれば、
応答待ちで止まる可能性はあると思っています。

ご不明な点が多々あるかと思いますが、足らない情報などが
ありましたらご指摘ください。
長くなりましたが、よろしくお願いします。

山田健二