(toppers-users 3105) Re: sample1の’S'コマンドtslp_tskについての疑問

koizumi yoshiyuki koizumiyoshiyuki @ gmail.com
2010年 3月 25日 (木) 14:08:29 JST


宿口さま

 有難うございます。
 tslp_tskを指定時間待ちと考えるのか、指定時間内に起動がかかるのが通常の使い方と考えるかの違いですね。
 ITRON標準ガイドブック(2)の入手を検討します。

 tslp_tskは解決です、有難うございました。関連事項です、
(大昔見たような気もしますが)ITRONを作った時の動作確認に使用するテストプログラム見たいなものが入手できないでしょうか。Cortex-M3に特化したものを検討しています。中を改造したときの評価をどうするのか思案中です。まとまったものは無いかも知れませんが、適当にアレンジして使えればよいと思っています。

小生、ARMのRDVSと自作HWで移植を行ったのでアセンブラ部書き換えました。そのためsample1を使って細々確認をしていました。先ほど、GCCに変えて、HWも試作版からSTM32
*Primer2*に変えて(試作HWは少々不安定でした)動作したので、今後はGCC版移植ソース(UARTが変わっただけ)を基準に考えてよいことになりまた。

 PCの時刻ですが、小生、殆どシャットダウンしないで使っていました。今の時間は合っていました、今後は注意します。

以上

2010年3月24日8:18 SHUKUGUCHI Masahiro <shukuguchi @ nifmail.jp>:

> 宿口と申します。
>
> すでに篠崎さまのフォローがありますが、補足します。
>
> tslp_tsk がタイムアウトした場合が正常がエラーかという点です。
> μITRON4.0の仕様書(P106 あたり)を確認いただいていると思いますが、
> slp_tsk/tslp_tskは”自タスクを起床待ち状態に移行させる”とあります。
> すなわち、wup_tskなどにより起床されることを待つわけです。このため、
> 他タスクなどにより起床させられれば正常終了したことになります。
>
> tslp_tsk は slp_tsk の拡張仕様とも考えられ、”指定した時間だけ、
> 自タスクを起床待ち状態に移行させる”ものです。この場合何が正常かと
> いうと、指定した時間内に起床させられれば正常です。
> 指定した時間内に起床させられずにtslp_tskから戻った場合は、本来起床
> させるべきタスクなどが正常に動作していなことも考えられますので、
> エラーであると考えます。
>
> # このあたりの解釈はμITRON4.0 仕様書には記載されていないので、
> # 判りにくいかもしれません。
>
> # 先日MLに、解説書が無いとPOSTされていましたが、確かに、μITRON4.0
> # 仕様書は、理念の説明が多い「哲学書」だと仰せの方もおられます。
> # 実務向きではないのかもしれません。
>
> # でも、実務となると、タスク構成などは、製品ドメイン特有の知識が
> # 必須になったりして、なかなか、汎用的な書き方は難しいですね。
> # ベンチマーク的な製品があればいいのですがね。
> ## そういった意味じゃ、ETロボコンは、その可能性があると思います。
>
> slp_tsk も起床されなければ、無限に待ち続けるわけですから、システム
> がハングアップしているように見えるかもしれません。これは、エラー
> ですよね。
>
> tslp_tsk 単体で考えるのではなく、wup_tsk など起床させるAPIと組合わ
> せて考えないといけないわけですね。
>
> 時間待ちはどのように実現するか?は、そのためのAPIとして dly_tsk
> (P116)が用意されています。dly_tsk は ”自タスクを時間経過待ち状態
> に移行させる”とあります。同じような待ち状態でも、意味合いが違う
> ようです。
>
> dly_tsk は wup_tsk では解除されませんが、それでも、システム異常時
> にdly_tsk を強制的に解除したい場合のために rel_wai が用意されて
> います。(rel_wai は slp_tsk/tslp_tsk の待ちを解除するので、ちょっと
> 厄介かもしれません)
>
> ともあれ、「待ちは必ず解除されるもの」として、待ちと待ち解除を
> 一組にして考えることが必要です。
>
> sample1.c については、あくまで”サンプル”なので、好みに合うように
> 書き換えればよいように思います。
>
> あと、どうでも良いことですが、メールのDATA:が1日未来になって
> います。意図的ですか?
>
> ではでは
>
> Shukuguchi
>
> SuperHで学ぶμITRON仕様OS―リアルタイムOSの動作原理と実装法がわかる! (単行本)
> 鹿取 祐二 (著)
>
> http://www.amazon.co.jp/SuperH%E3%81%A7%E5%AD%A6%E3%81%B6%CE%BCITRON%E4%BB%95%E6%A7%98OS%E2%80%95%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%BF%E3%82%A4%E3%83%A0OS%E3%81%AE%E5%8B%95%E4%BD%9C%E5%8E%9F%E7%90%86%E3%81%A8%E5%AE%9F%E8%A3%85%E6%B3%95%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%8B-%E9%B9%BF%E5%8F%96-%E7%A5%90%E4%BA%8C/dp/4885549035/ref=sr_1_4?ie=UTF8&s=books&qid=1269386159&sr=8-4
>
> が判りやすいとの評判です。
>
> TOPPERS関係の解説は、もなみ さんの解説が年に1,2回ほどインタフェース誌に
> 掲載されます。
>
>
> koizumi yoshiyuki <koizumiyoshiyuki @ gmail.com> wrote:
>
> > koisanです。
> >
> >  sample1を使ってTOPPERS移植後の確認をしています。
> >
> ’S'コマンドtslp_tskを実行すると、待ち時間を過ぎた時E_TMOUT・・・とエラーが発生しているようなメッセージが出ます。TOPPERSの移植に誤りがあるのか、tslp_tskの仕様か判断できないので質問します。
> >
> slp_tskは待ちになって戻ったときE_OKになっています。tslp_tskの動作を考えると、待状態になり、設定時間を過ぎてタイムアウトになったと考えるのか、設定時間を過ぎてtslp_tskが正常動作したと考えるのか判断に迷っています。TOPPERS新世代カーネル統合仕様を見ましたが、小生にには判断できませんでした。sample1ではエラーだと考えて作ったように見えます。小生の移植に間違いがあるのか心配です。
> >
> >  sample1について疑問
> >  main_taskの起動時に実行時間を測定してる処があります。ここに#ifdef
> >
> MEASURE_TWICEの記述があり、コメントには一回目の測定は正確ではないので捨てると書かれています。確かに1回目と2回目では測定時間が違っていました。この差は1回目と2回目の差ではありますが、測定の前に自身が実行しているsyslogが関係していると思われます。実行時間の測定は他のタスクや、意図しない割り込みが実行されない状態で測定する必要がありますが、デバッガで止めると1回目の測定時はメッセージ表示が完了していませんでした。user.txtには、logtask_flush(0)の記述がありログ出力完了がチェックできるので、2回測定するより、logtask_flush(0)で回避するほうが好ましいと思っています。
> >
> >  更に疑問
> >  そもそも、実行時間の測定が何故必要か考えてみました。
> >
> 測定値はtaskでメッセージ出力を行った後のloop回数に使用しています。このloopを削除すると、ログ処理でバッファ不足が発生するので、ログの出力が大量になる(連続する)のを防ぐために使われているようです。この時間はログ出力の時間により変化する値なので、待ち時間の設定値の算出基準のコメントが欲しいと思っています。
> >
> こちらの待ち時間をlogtask_flush(0)で回避することは出来ません。logtask_flush(0)はバッファが空でないときdly_tskを実行するのでディスパッチが発生します。taskはディスパッチが発生しないことが前提です。dly_tskのないlogtask_flush_nwでも追加し時間待ちのloopは削除するのがよいと思っています。
> >
> >  尚、sample1のログが常に流れているのは使いにくいと感じています。
> >
> 外のタスク(main_task)と自タスク用にタスク動作メッセージ表示要求フラグを作成し、タスクの動作条件が変わった時にフラッグを使ってメッセージを表示するような修正を考えています(ほぼ動作しています)。
> >
> tslp_tskの問題は動作していないタスクに発行すると、すぐには表示されません、他のコマンド操作でスリープしたタスクが動作したときに一瞬表示され先に進んでしまうので、問題にたどり着くまで多くの時間を使いました。こんな意味で、現状のsample1は使いづらいと感じています。
> >
> >
> (小生、この仕事を始めた当時、時間待ちの処理は将来必ずトラぶるので、安易に時間待ちをしてはいけない。必ず報告と正確なコメントの記述せよと、Y先輩から「きつい指導」を受けました。Y先輩の言葉を思い出し、この処理はくさそうだと細々調べてみました。小生の解析は誤りがあれば連絡ください。koisanとY先輩のKYな話でしょうかね)
> >
> >  以上
>
>
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://www.toppers.jp/pipermail/users/attachments/20100325/564552f2/attachment.html>