FreeRTOSConfig.hの設定方法


【構成設定】

FreeRTOSは、必要な機能だけに絞った最小規模で使えるようにするため、
構成設定を行います。
そのために用意されたファイルが「FreeRTOSConfig.h」というファイルで、アプリ
ケーションごとに必要な機能やRAM、スタックのサイズなどの設定を行います。
ここではそのファイルの設定方法を説明しています。

【FreeRTOSConfig.hの設定方法】

各アプリケーションごとにFreeRTOSをどうのような構成で使うかを指定するために
用意されているファイルが「FreeRTOSConfig.h」で、これで基本的なFreeRTOSの
内部構成が決まり、リンクするしないが決められます。
このファイルの実際の例が下記となります。




これらの各パラメータ項目の意味は下記となります。

(1) コンフィギュレーション関連パラメータ
パラメータ名 機能設定内容
configUSE_PREEMTION 1にするとプリエンプティブ型で使う指定で
0にすると協調型で使う指定となる
configUSE_IDLE_HOOK 1にするとアイドルに入るときにvApplicationIdelHook関数を呼び出す。この関数を作成する必要がある
0では何もしない
configUSE_TICK_HOOK 1にするとタイマ1の割り込みの都度、vApplicationTickHook関数を呼び出す。この関数を作成する必要がある。
0の場合は何もしない
configCPU_CLOCK_HZ CPUのクロック周波数を設定。タイマの周波数設定に使われる
configPERIPHERAL_CLOCK_HZ 周辺用クロック周波数の設定。
configTICK_RATE_HZ タイマ1の割り込み周期を指定、1秒間の回数で指定
configMAX_PRIORITY タスクに設定できる優先順位の数の指定
configMINIMAL_STACK_SIZE アイドルタスクが使用するスタックのサイズ(バイト)
デモで設定している値以上にすること
configTOTAL_HEAP_SIZE OSに開放するRAMの合計サイズ(バイト)
configMAX_TASK_NAME_LEN デバッグ用に使うタスク名の最大バイト数、TCB内に格納される
configUSE_TRACE_FACILITY 1にするとタスク切替トレースを実行する。別にバッファを用意する必要がある
0にするとトレース機能を削除しリンクしない
configUSE_16_BIT_TICKS タイマ1の割り込みによるチックのカウンタビット数
1にすると16ビット、0にすると32ビットとなる
16ビットの場合には設定可能時間が10秒程度に短くなる
configIDLE_SHOULD_YIELD アイドル時の状態の指定。1にすると現タスクをブロックし他のタスクに移行する
configUSE_MUTEXES 1にすると排他制御を含める
0では含めない
configUSE_RECURSIVE_MUTEXES 1にすると再帰的排他制御を含める
0では含めない
configUSE_ALTERNATIVE_API 1にするとより高速な代替キュー制御APIを使う
0では標準キュー制御APIを使う
configCHECK_FOR_STACK_OVERFLOW 0ではスタックのオーバーフローは検出しない
1では、検出したらタスクを停止する
2では、16バイト以下になったらvApplicationStackOverflowHook()関数を呼び出す
configQUEUE_REGISTRY_SIZE デバッグ用にキューの名前をつける機能でキューとセマフォの最大数を指定する
configUSE_CO_ROUTINES 1にすると協調ルーチンの機能を有効化する。この場合にはcroutine.cをプロジェクトに含める必要がある。
0にすると機能を省く
configMAX_CO_ROUTINES_PRIORITIES 協調ルーチンに使う優先順位の数を指定する
configKERNEL_INTERRUPT_PRIORITY RTOSが使う割り込みレベルの指定で最下位レベルとする
configMAX_SYSCALL_INTERRUPT_PRIORITY PIC32MXの場合のみ有効
RTOSが管理する割り込みレベルの最大値を指定する。これ以上の割り込みレベルはRTOSに関係なく最優先で処理されるので高速となる

(2) インクルード関連パラメータ
  FreeRTOSとしてリンクして含めるAPI関数モジュールを指定する。
  各API関数やマクロ命令ごとにインクルードするパラメータ名が決まっている。
  含めるAPI関数モジュールは1にセットし、含めないものは0にする。

  この詳細は、各API関数の説明の表の中で、関数ごとにインクルードが必要な
  パラメータを説明しています。




目次に戻る