(toppers-users 2820) Re: AKIH8-3069FでTCP/IPとシリアルを使ったタスクの不具合

山田健二 kenji.yamada00 @ gmail.com
2008年 10月 20日 (月) 09:06:34 JST


おはようございます。福岡の山田です。

止まっていると思われます タスク B の挙動を見るために、
実験を行いましたので結果をご報告させていただきます。

(実験1)
不具合が発生するプログラムにて、タスク B を固定コマンドの送信のみを
行うように修正し、実行しました。

タスク B ()
{
    while( 1 )
    {
        装置 A への固定コマンド送信
    }
}

結果:1時間の間、装置Aへデータを送信し続けていました。
    (途中で終了させました)


(実験2)
実験1に、装置Aからの応答受信処理を追加し実行しました。

タスク B ()
{
    while( 1 )
    {
        装置 A へのコマンド送信
        装置 A からの応答受信
    }
}

結果:止まる(コマンドの送信が行われなくなる)現象が発生しました。
  ※実験2で現象が発生した時の装置Aからの応答は正常に
       行われていました。

どうやらシリアル受信処理が入ると、タスクBが止まるようです。

また何かありましたら、ご報告させていただきます。

山田



> タスクの関係は次の通りです。
>
>
> char buf[4096];
>
> void task_main( VP_INT exinf )
> {
>    act_tsk( タスク A );
>    act_tsk( タスク B );
> }
>
> タスク A ()
> {
>    1. 端点への接続    tcp_con_cep()
>    2. WEBサーバからhtmlファイルを読み込み    tcp_snd_dat()
>       buf へ格納する。
>      (格納するテストデータは約400Byte)
>    3. ext_tsk();
> }
>
> タスク B ()
> {
>    1. buf からデータを取り出す。
>
> while( 1 )
>    {
>        2. 装置 A へのデータ送信
>        3. 装置 A からの応答受信
>    }
> }