[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(itron-club 1730) Re: cyclicハ ンドラーの初期動作 (Re: TOPPERS/JSP isig_timの実装について )



氏原です。

早速リプライアありがとうございます。

>>まだ気にかかるのは、現状のTOPPERSの実装ですと位相が0のcyclicハンドラー
>>は最初の周期が1-tick短くなることが起こります。
> 
> これは最初に氏原さんが書かれた問題と同一原因のためだと思います。
> 過去の時刻に処理すべきものが残っていたので、今の時刻に処理すべきものといっしょに
> まとめて処理したためでしょう。

そうですね。その通りです。ただ気をつけないとTA_STAオプションをつけて、位
相を0と設定すると最初の周期が違ってくるということが言いたかったのです。

>>例えば、周期が2で位相が0のcyclicハンドラーは
>>          start
>>timer-tick  0 ----- 1 ----- 2 ----- 3 ----- 4 ----- 5 ----- 6 -
>>cyc_hdr     -------run-----run-------------run-------------run-
>>(横は時間軸)
> 
>  
> 
>>最初のtimer割り込みはtick 1のときになります。
>>tick 1とtick 2は間隔なしで実行されます。

** Cut quoted 6 lines by the mail filter. **

これは、cyc_hdr()でプロセッサーの汎用ポートをパタパタさせてオシロ上で観
測しています。そのため、syslogとかの要素は全く入ってきません。

ちょっと話がややこしくなってきましたので、このあたりで整理させていただき
ますが、私の主張は以下の一点です。

例えば以下の静的タスクで起動される、周期2、位相0、のcyc_hdr()は
CRE_CYC(CYCHDR1, { TA_HLNG|TA_STA,(VP_INT) 0, cyc_hdr, 2, 0 });

現状TOPPERS/JSPでは以下のように起動されますが
          start
timer-tick  0 ----- 1 ----- 2 ----- 3 ----- 4 ----- 5 ----- 6 -
cyc_hdr     -------run-----run-------------run-------------run-

理想をいえば
          start
timer-tick  0 ----- 1 ----- 2 ----- 3 ----- 4 ----- 5 ----- 6 -
cyc_hdr     run------------run-------------run-------------run-

現実的には
          start
timer-tick  0 ----- 1 ----- 2 ----- 3 ----- 4 ----- 5 ----- 6 -
cyc_hdr     ---------------run-------------run-------------run-

と起動されるべきではないでしょうか?といいたかったのであります。

現実的にこれが問題になることはあまり考えられませんが、cyc_hdr()を使用し
え他の機能のデバッグを行ったときに、ここでかなり悩んでしまったので。

参考までに私が最初に言っていた周期が1の場合は
CRE_CYC(CYCHDR1, { TA_HLNG|TA_STA,(VP_INT) 0, cyc_hdr, 1, 0 });
          start
timer-tick  0 ----- 1 ----- 2 ----- 3 ----- 4 ----- 5 ----- 6 -
cyc_hdr     -------runx2---run-----run-----run-----run-----run-

ということが起こります。

-- 
Roland Corporation Japan
Tatsuhiro Ujihara