Changes between Version 13 and Version 14 of FAQ


Ignore:
Timestamp:
Mar 22, 2015, 11:36:56 PM (9 years ago)
Author:
ertl-yutaka
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • FAQ

    v13 v14  
    2727EV3_CRE_CYCの各パラメータの意味は、以下の通りです。
    2828
    29  * TEST_EV3_CYC1:周期ハンドラの名称(実際にはID番号だが、コンフィギュレータによって、ここで指定した名称のマクロが自動的に定義されます
    30  * TA_STA:周期ハンドラの属性。
    31    * TA_STAを指定すると、アプリケーションの起動時に周期処理も開始します
     29 * 【第1パラメータ】TEST_EV3_CYC1:周期ハンドラの名称(実際にはID番号だが、コンフィギュレータによって、ここで指定した名称のマクロが自動的に定義される
     30 * 【第2パラメータ】TA_STA:周期ハンドラの属性。
     31   * TA_STAを指定すると、アプリケーションの起動時に周期処理も開始する
    3232   * TA_NULLを指定すると、アプリケーションでEV3_sta_cyc(TEST_EV3_CYC1)を呼び出すまで動作しない。
    33  * 0:周期ハンドラに渡される値(拡張情報)
    34  * test_ev3_cychdr:周期ハンドラ(周期的に実行される関数)の名前。Cファイルに同名の関数を定義してください((2)を参照のこと)。
    35  * 500:起動周期(EV3RTの場合、単位はマイクロ秒で指定)
    36  * 0:起動位相。周期ハンドラの動作開始を指定してから、最初に周期ハンドラが呼ばれるまでの相対時間。
     33 * 【第3パラメータ】0:周期ハンドラに渡される値(拡張情報)
     34 * 【第4パラメータ】test_ev3_cychdr:周期ハンドラの先頭番地(周期的に実行される関数)。Cファイルに同名の関数を定義してください((2)を参照のこと)。
     35 * 【第5パラメータ】500:起動周期(EV3RTの場合、単位はマイクロ秒で指定)
     36 * 【第6パラメータ】0:起動位相。周期ハンドラの動作開始を指定してから、最初に周期ハンドラが呼ばれるまでの相対時間。
    3737   * 属性にTA_STAを指定して、起動位相に0を指定するとシステムが起動して最初のタイムティックが発生した時に動作する。
    3838
     
    5757}
    5858}}}
     59==== Q:タスクの優先度を変更するには、どうすれば良いでしょうか? ====
     60A:cfg ファイルに記述してある CRE_TSK のパラメータを変更します。
     61
     62gyroboy のサンプルを例に説明します。workspace/gyroboy/app.cfg に以下の記述があります。
     63
     64{{{
     65DOMAIN(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}}}
     71CRE_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もあります。
    5989
    6090== Bluetooth 接続に関する質問 ==