| 59 | ==== Q:タスクの優先度を変更するには、どうすれば良いでしょうか? ==== |
| 60 | A:cfg ファイルに記述してある CRE_TSK のパラメータを変更します。 |
| 61 | |
| 62 | gyroboy のサンプルを例に説明します。workspace/gyroboy/app.cfg に以下の記述があります。 |
| 63 | |
| 64 | {{{ |
| 65 | DOMAIN(TDOM_APP) { |
| 66 | CRE_TSK(BALANCE_TASK, { TA_NULL, 0, balance_task, TMIN_APP_TPRI, STACK_SIZE, NULL }); |
| 67 | CRE_TSK(MAIN_TASK, { TA_ACT, 0, main_task, TMIN_APP_TPRI + 1, STACK_SIZE, NULL }); |
| 68 | CRE_TSK(IDLE_TASK, { TA_NULL, 0, idle_task, TMIN_APP_TPRI + 2, STACK_SIZE, NULL }); |
| 69 | } |
| 70 | }}} |
| 71 | CRE_TSKの各パラメータの意味は、以下の通りです。 |
| 72 | |
| 73 | * 【第1パラメータ】BALANCE_TASK:タスクの名称(実際にはID番号だが、コンフィギュレータによって、ここで指定した名称のマクロが自動的に定義される) |
| 74 | * 【第2パラメータ】TA_NULL:タスクの属性。 |
| 75 | * TA_ACTを指定すると、アプリケーション起動時にタスクを実行可能状態に遷移させる。 |
| 76 | * TA_NULLを指定すると、アプリケーション起動時には休止状態である。 |
| 77 | * 【第3パラメータ】0:タスクに渡される値(拡張情報) |
| 78 | * 【第4パラメータ】balance_task:タスクのメインルーチンの先頭番地(周期的に実行される関数)。 |
| 79 | * 【第5パラメータ】TMIN_APP_TPRI:タスクの起動時優先度。EV3RTの場合、TMIN_APP_TPRIは、タスクに指定できる最高優先度(値は最小値)を示す。 |
| 80 | * 数値を小さくすると優先度が高くなり、大きくすると優先度が下がる。 |
| 81 | * したがって、この例では、BALANCE_TASK, MAIN_TASK, IDLE_TASKの順に高い優先度が設定されている。 |
| 82 | * 【第6パラメータ】STACK_SIZE:タスクのスタック領域のサイズ。 |
| 83 | * 【第7パラメータ】NULL:タスクのスタック領域の先頭番地 |
| 84 | * NULLとした場合,第6パラメータで指定したサイズのスタック領域が,コンフィギュレータまたはカーネルにより確保される。 |
| 85 | |
| 86 | |
| 87 | |
| 88 | 詳細は、TOPPERS次世代カーネル統合仕様書のCRE_TSKの説明を参照してください。また、アプリケーションの動作中に優先度を変更する cfg_pri というAPIもあります。 |