Top -> FreeRtos -> tasks.html |
タスク |
---|
[Getting Started] |
タスク状態 |
FreeRTOS eBook はタスクについての追加の詳細なインフォメーションとタスクの挙動を記述しています。 |
タスクの状態は次のどれか一つに属します: |
|
許されるタスク状態遷移 |
|
タスクプライオリティ |
それぞれのタスクが0から(configMAX_PRIORITIES
- 1)まで優先権を割り当てられます。 configMAX_PRIORITIES が FreeRTOSConfig.h の中で定義し、アプリケーションベースによってアプリケーション上に埋め込まれます。 configMAX_PRIORITIES 値が高いと、比例してFreeRTOS カーネルは多くの RAM を消費する。 |
小さい優先順位番号は低い優先権タスクを意味する、デフォルトのアイドルの優先度はtskIDLE_PRIORITY によってゼロと定義づけらている。 |
スケジューラーは ready あるいはrunning状態のタスクは常に、同様にレディ状態にあるより低い優先度のタスクよりも優先的に、プロセッサ時間を獲得できることを保証する。 言い換えれば、処理時間を与えられたタスクは常に実行可能なタスク中の最高優先順位タスクである。 |
|
タスクの実装 |
タスクは次の構造を持つ: |
void vATaskFunction( void *pvParameters ) { for( ;; ) { -- Task application code here. -- } } |
pdTASK_CODEはvoid関数として定義され、パラメータとして一つのvoidのポインタをとります。 全てのタスクを関数はこの型であるべきです。 パラメータはタスクの中にどんなタイプのインフォメーションでも渡すのに使うことができます − これは標準的なデモアプリケーションのいくつかのタスクによって示される。 |
タスク関数は絶対リターンしない無限ループとして実装されてます。多くのRTOS デモアプリケーション事例を参照してください。 |
タスクはxTaskCreate ()をコールすることによって作成され、vTaskDelete () によってデリートされます。 |
|
タスク作成マクロ |
タスク関数はまたportTASK_FUNCTION と portTASK_FUNCTION_PROTO マクロを使って定義することができます。 これらマクロはそれぞれ関数定義とプロトタイプにコンパイラに特定の構文付加を可能にするために提供される. ドキュメンテーションで特に記述がないなら、本来使用の必要はありません。(現状PIC18 fedC ポートのみ)。 |
上記関数のためのプロトタイプを示す: |
void vATaskFunction( void *pvParameters ); Or, portTASK_FUNCTION_PROTO( vATaskFunction, pvParameters ); |
このマクロは次のコードと同等です: |
portTASK_FUNCTION( vATaskFunction, pvParameters ) { for( ;; ) { -- Task application code here. -- } } |
|
アイドル・タスク |
スケジューラーが始動すると、アイドル・タスクは自動的に作成されます。 |
アイドル・タスクは以後デリートされたタスクのRTOS によって割り当てられたメモリを解放する責任を負います。 アイドル・タスクの処理時間が欠如しない保証をすることは vTaskDelete () 機能を利用するアプリケーションにとって重要です。 アクティビティ視覚化ユーティリティーはアイドル・タスクに割り当てられたマイクロコントローラー時間をチェックすることができます。 |
アイドル?タスクは他にどのようなアクティブな機能も持っていませんが、他の全ての条件を満たしながら、合理的にマイクロコントローラー時間を潰します。 |
アプリケーションタスクがアイドル・タスクと優先権を共有することは可能です。(tskIDLE_PRIORITY). |
|
アイドル・タスクフック |
アイドル・タスクフックはアイドル・タスクのそれぞれのサイクルの間に呼び出される関数です。 もしアプリケーション機能がアイドル状態の優先順位で動くことを望むなら、2つのオプションがあります: |
|
アイドルフックを作成するために: |
|
void vApplicationIdleHook(void); |
アイドルフック主な用途はプロセッサを電源節約モードに入れることです。 |
TOPページ |