(toppers-users 465) Re: TOPPERS/JSP の実装で教えてください。

Tatsuhiko Matsukawa KFC00725 @ nifty.ne.jp
2002年 8月 6日 (火) 16:28:07 JST


若林さん、ふたたび丁寧なコメントありがとうございます。

先のメールのあと、
www.mit.pref.miyagi.jp/embedded/TOPPERS/download_doc.htm
を見つけ、この設計メモと、H8Sのソース、お勧めいただいた
m68kのソースを見比べながら整理しています。

>  ・受動的なディスパッチ - 割込み出入り口 (依存部)
>         割込み/例外によるハンドラへのディスパッチ
これをディスパッチと呼んでしまうと、こんがらがりそうなので
とりあえず別扱いとさせていただきます。

起動する側のタスクに注目すると、
>  ・能動的なディスパッチ - _kernel_dispatch
>         待ち状態へ移行するとき, 優先度を変えたときなど
これによって停止したタスクが再び起動するときの
処理の入り口が、上記機種では、dispatch_rとなっており、
>  ・受動的なディスパッチ中に起こった能動的なディスパッチ
>         割込みハンドラ内でのタスク起床, 資源返却など
これによって停止したタスクが再び起動するときの
処理の入り口が、上記機種では、ret_int_rとなっており、
さらに加えて、act_tsk等により新規に起動される場合が
別のactivate_rという処理になっているようです。

Xstormy16の場合、PUSH/POPは1クロックで処理できるのに
対し、schedtsk->tskctxb.pcへの上記入り口のセットを
行うと10クロック、これを読み出してジャンプすると9クロック
かかるので、能動的なディスパッチの場合も全レジスタ
保存することで、上記3つの処理を全く同じにし、
schedtsk->tskctxb.pcをなくしたほうが効率が
良く、プログラムもすっきりするのでは、と検討しています。
(ここにタスク例外ハンドラが絡んで話がややこしく
なっているので、頭の整理をしているところです)

久しぶりに紙にフローチャートなど書いています・・・・

************************
松川竜彦
KFC00725 @ nifty.ne.jp
************************