(toppers-users 3762) Re: SSPの DEF_EPRI とは何でしょうか。

Hiroaki TAKADA hiro @ ertl.jp
2012年 1月 18日 (水) 10:30:54 JST


高橋様、皆様

この件に関して、TOPPERS新世代カーネル仕様書に追加予定の文をお送りし
ます。

-----
SSPカーネルにおける追加機能として,タスクに対して,実行時優先度の情報を
持つ.タスクの実行時優先度は,起動時優先度が異なるタスク間でスタック領
域を共有するために,起動時優先度とは異なる優先度でタスクを実行するため
の機能である.タスクが起動された後,最初に実行状態になる時に,タスクの
ベース優先度が,タスクの実行時優先度に設定される.
-----

仕様書の文ですので、これだけでは導入意図がわかりにくいと思います。

読みにくい文ですので、お勧めはしませんが、以下に説明があります。

http://www.j-tokkyo.com/2000/G06F/JP2000-132409.shtml

OSEK OSをご存じのであれば、OSEK OSの内部リソースに相当する機能と言った
方がわかりやすいかもしれません。

高田広章
名古屋大学

(12/01/18 10:19), 高橋和浩@nifty wrote:
> MLを拝見させていただいています。
> アライブビジョンソフトウエアの高橋と申します。
> 
> SSPについて話が進んでいるようなのですが、少しついていけません。
> 「実行時優先度」とは何なのか、ちょっとわかりません。
> ドキュメントに何か書かれたものがございますでしょうか?
> 
> ssp_spec.txtの
> ----------------------------------------------------------------------
> ○前提となる文書
> [1] トロン協会: μITRON4.0仕様, Ver.4.02.00, 2004年.
> [2] TOPPERSプロジェクト: TOPPERS新世代カーネル仕様書 Release 1.2.0
> [3] TOPPERSプロジェクト: TOPPERS標準割込み処理モデル, 最終更新: 2008年
> 4月11日.
> ---------------------------------------------------------------------
> の[1][2]を見ても「実行時優先度」は見当たりませんでした。
> #SSPのR8Cのパッケージのデータも確認しましたが見当たりません。
> 
> [1]で記載がある用語では
> 起動時優先度
> ベース優先度
> 現在優先度
> 
> かと思いますが、さらに実行時優先度はまた違うものなのでしょうか?
> 
> よろしくお願いします。
> 
> すいません
> (toppers-users 3751) に書かれていることもよくわかりません。
> 
>> DEF_EPRIを使うと異なるタスク優先度を持つタスクに対して実行時に
>> 同一のタスク優先度を設定できます。
> 単純に静的API(DEF_EPRI)で、CRE_TSKの起動時優先度の代わりに、実行時優先度と呼ばれるものが
> が使われるだけのように思うのですが、たぶんここに誤解があると思っています。
> 
> 
> 
> On Wed, 18 Jan 2012 00:08:49 +0900
> 杉本明加<asuka.choronos @ gmail.com>  wrote:
> 
>> こいさんさん
>>
>> 杉本です。
>>
>> DEF_EPRIはSSPで導入した実行時優先度を定義するための静的APIです。
>>
>> タスクに対してDEF_EPRIで実行時優先度を指定しておくと、タスクが
>> 最初に実行状態になった時にCRE_TSKで指定したタスク優先度では
>> なくDEF_EPRIで指定した値がタスク優先度に設定されます。
>>
>> DEF_EPRIを使うと異なるタスク優先度を持つタスクに対して実行時に
>> 同一のタスク優先度を設定できます。
>>
>> これはタスク間の排他に用いたり(SEK/VDXやAUTOSAR OSでいう内部リソースと
>> 同様の振る舞いと)、異なるタスク優先度を設定した(むしろSSPではそのように
>> しか指定できませんが)タスク間でスタック領域を共有することができます。
>>
>>
>> 実行時優先度の指定をどのように行うかはCRE_TSKを拡張する
>> 方法などいくつか検討しましたが、他のカーネルとの互換性を考慮し
>> 新たに静的APIを追加することとしました。
>>
>> 以上、よろしくお願いします。
>>
>>
>> 2012年1月17日17:54 koizumi yoshiyuki<koizumiyoshiyuki @ gmail.com>:
>>>  こいさんです
>>>
>>>  SSPの DEF_EPRI とは何でしょうか。CPU例外が発生したときの優先度のように見えるのですがよくわかりません。doc/*.txtにも特に記述がありません。
>>>
>>>  sample1.cfgには以下のような記述があります。
>>> CRE_TSK(TASK3 , { TA_NULL , 3 , task , TASK3_PRIORITY , STACK_SIZE , NULL
>>> });
>>> DEF_EPRI(TASK3 , { TASK3_EXEPRIORITY });
>>>  sample1.hで優先度の定義は
>>> #define INIT_PRIORITY (1)
>>> #define MAIN_PRIORITY (2)
>>> #define TASK1_PRIORITY (3)
>>> #define TASK2_PRIORITY (4)
>>> #define TASK3_PRIORITY (5)
>>> #define TASK3_EXEPRIORITY (4)
>>>  です。
>>>
>>>  cfgで作成された、kernel_cfg.cは以下のようになっています。
>>>
>>> const uint_t   _kernel_tinib_epriority[TNUM_TSKID] = {
>>> INT_PRIORITY(1),INT_PRIORITY(2),INT_PRIORITY(3),INT_PRIORITY(4),INT_PRIORITY(4)
>>> };
>>>
>>>
>>>  TASK3の優先度は5になって欲しい気がしています。
>>>  DEF_EPRI(TASK3 , { TASK3_EXEPRIORITY });が関連しているのでしょうか。
>>>  以上
>>>
> ---
> アライブビジョンソフトウエア株式会社
> 高橋和浩
> 673-0005兵庫県明石市小久保2-2-7幹線ビル4F
> Email:takahashi_kazuhiro @ nifty.com
> http://homepage3.nifty.com/ALVS/