(toppers-users 676) Re: TOPPERS の移植経過と質問。

Hiroaki TAKADA hiro @ ertl.ics.tut.ac.jp
2002年 12月 17日 (火) 09:29:15 JST


koisan wrote:
> 1 最初にlogタスクが動作しているが、タスクの初期起動順序はITRON
> (TOPPERS)としては定義されていないのか?
>  常識的にはタスクのクリエイト順だと思っていたが、なぜかクリエイトの順と
> は逆みたい。(.cfgの記述順がクリエイトの順と考えています) 初期化はクリ
> エイト順ですね、こちらが守られていればタスクの起動順はどうでも良いとは思
> うが。

この後、自己フォローされていますが、実は、JSPカーネルのタスクの初期化
方法で、μITRON4.0仕様と互換でない点が見つかっています。μITRON4.0仕様
では、静的APIはシステムコンフィギュレーションファイルに記述した順に実
行することになっているのですが、JSPカーネルでは、ID番号の小さい方から
初期化していきます。タスクIDをすべて自動割付けしていればこれで問題あり
ませんが、手動割付けした場合に、初期化順序が逆になる場合があります。具
体的には、TA_ACT 属性をつけて CRE_TSK した場合に、同じ優先度のタスク間
で起動順序が逆になる可能性があります。

この問題は、次のバージョンで、対処したいと考えていますが、オーバヘッド
を増やしてしまうので、考慮中です。

> 2 デバイス番号が0からではなく、1から始まっているが、ITORNでは常識で
> しょうか。

ITRON では、オブジェクトのID番号は 1 から始まるものとしています。デバ
イス番号もそれに準じて実装してあります。

> 3 serialドライバのつくりが、動作はするでしょうか重い気がします。
>  割り込みハンドラのin,out駆動が初期フラグで起動している。異なるシリアル
> の割り込みでもin,outのルーチンが動作してしまう。誤りというわけでは有りま
> せんが、割り込みを使って、割り込みハンドラでserial全チャネルのin,outを
> ポーリングするのは気が重いですね。ドライバのエラー処理を考慮した、in,out
> の駆動には余分な処理が多い気がします。

シリアルドライバについては、いろいろ問題があるのは認識しており、今後の
改良対象です。また、デバイスドライバガイドラインを検討する前に実装した
ものであり、ガイドラインにも合致していません。

割込みハンドラについては、SIO によって、2ポートの入出力がすべて1つの割
込みで来てしまうものがあります。この場合は、すべてポーリングせざるをえ
ません。それに対して、別々の割込みで来る SIO の場合は、そのように実装
していただく必要はありません。serial.c の最後の方が、それを切り分ける
ための仕組みのつもりですが、あまりきれいなやり方ではないです。

高田広章
豊橋技術科学大学