(toppers-etrobo 89) Re: サンプルプログラムにおけるタスクの優先度について

Yutaka MATSUBARA yutaka @ ertl.jp
2017年 4月 25日 (火) 11:58:57 JST


山本様

名古屋大学の松原です。

ご質問ありがとうございます。

> 今回は,サンプルプログラムに関する質問です.
> 前から気にはなっていたのですが,実用上は,とくに問題にならないので,そ
> のままにしていました.
> サンプルプログラムのコンフィグレーション・ファイルを見ると,タスクを定
> 義する場合に,その優先度を(TMIN_APP_TPRIではなく)TMIN_APP_TPRI + 1か
> ら割り当てているのがあります(たとえば,β7でも提供されている
> hwbrickbench,linetrace,test-cpp,test-cycなど).
> これは,何か意図があるのでしょうか.
> たとえば,後で,初期化タスクなどが必要になり,それを追加する場合のこと
> を考えて,そのために,最高の優先度TMIN_APP_TPRIは,空けてあるのだとか.
> ご教示のほど,よろしくお願いします.

特に意図はありません。

あえて言えば,上記で推測されているように,後から別の高優先度タスクを追 
加できるようにするということもありますが,優先度は相対的な値として意味 
を持ちますので,アプリケーション内のタスク間で適切に優先度の大小を設定 
して頂ければ問題ありません。

ちなみに,TMIN_APP_TPRI 自体も,TOPPERSの仕様として決めているものでは 
なく,EV3RT独自のマクロになっています。

./target/ev3_gcc/ev3.h
 #define TPRI_INIT_TASK       (TMIN_TPRI)
 #define TPRI_USBMSC          (TMIN_TPRI + 1)
 #define TPRI_BLUETOOTH_QOS   (TMIN_TPRI + 1)
 #define TPRI_BLUETOOTH_HIGH  (TMIN_TPRI + 2)
 #define TPRI_APP_TERM_TASK   (TMIN_TPRI + 3)
 #define TPRI_EV3_LCD_TASK    (TMIN_TPRI + 3)
 #define TPRI_EV3_MONITOR     (TMIN_TPRI + 4)
 #define TPRI_PLATFORM_BUSY   (TMIN_TPRI + 5)
 #define TPRI_APP_INIT_TASK   (TMIN_TPRI + 6)
 #define TPRI_EV3_CYC         (TMIN_TPRI + 7)
 #define TMIN_APP_TPRI        (TMIN_TPRI + 8)
 ※TMIN_TPRI は1

ご参考になれば幸いです。

-- 
松原豊/名古屋大学