マイコン入門spacer ad
トップページに戻る(マイコン徹底入門:STM32で始めるARM/Cortex-M3組み込み開発)
「マイコン徹底入門」とは? |  「マイコン徹底入門」を読む |  ダウンロード |  掲示板 |  筆者の自己紹介


Previous: 3.6.5. vTaskDelayUntil

Up: 3. タスク管理

Next: 3.8. 優先度の変更


マイコン徹底入門:RTOS編:フリーのリアルタイムOS活用法: 3. タスク管理:

3.7. Idle Hook機能

サンプルプログラム

freertos_IdleHook

 freertos_vTaskDelay_bothの例のように、カーネル登録されたすべてのタスクがBlocked状態になることがあります。このときにカーネル上ではタスクが一つも動作していないかというとそうではなく、Idleタスクというタスクが動作しています。Idleタスクは、その名の通り、「何もしない」「何の目的もない」タスクです。ソフトウェアでカーネルに登録されたタスクが一つでもあれば、Idleタスクはそのタスクに必ず劣後し、Ready状態になります。

 Idleタスクが「何もしない」タスクですので、Idleタスクそのものの動作を指定することはできません。もっとも、Idleタスクが起動する際に、別に定めた一定の処理を実行させることができます。これがIdle Hook機能です。

 Idle Hook機能が何のためにあるかというと、まず、Idleタスクが起動するということは、その間に起動するタスクが無い、つまりCPUの処理能力が空いているということになります。そこでIdleタスクが起動している時間を計測することにより、そのアプリケーションでのCPUの使用率(不使用率)を計測することができます。これでそのアプリケーションにもっと多くの機能を盛り込むことができるかということの判断の一助となります。またCPUの処理時間が空いているのであれば、マイコンの処理速度を落としても同様の処理が実現できる可能性があります。そこで、可能な場合には、クロック周波数を落とすなどしてマイコンの消費電力を抑えることができます。

 このサンプルプログラムでは、Idle Hook機能を利用して、Idleタスク内部のループの回数を計測しています。

 Idle Hook機能を利用する場合にはまずFreeRTOSConfig.h中でconfigUSE_IDLE_HOOK1と定義しておきます。これでIdle Hook機能が有効になります。変更後はライブラリの再コンパイルを忘れないようにしてください。

#define configUSE_IDLE_HOOK???????????? 1

 Idle Hook機能を使用しないプログラムを実行するときには、0に戻しておかないと”undefined reference to ‘vApplicationIdleHook’”というコンパイルエラーが発生しますので注意しましょう。

 Idle Hook機能を有効にした場合、Idleタスクが起動して、Idleタスク内での無限ループが1サイクル繰り返される毎にvApplicationIdleHook関数が呼び出されます。vApplicationIdleHookFreeRTOSの内部では定義されていません。ユーザーがアプリケーション中でvApplicationIdleHook関数を定義して必要な処理を記述すれば、Idle Hook時に希望の処理を行わせることができます。

 サンプルプログラムでは、以下のように単純にvApplicationIdleHook関数が呼び出された回数をカウントしています。

void vApplicationIdleHook(void)

{

? //configUSE_IDLE_HOOK in FreeRTOSConfig.h must be set to 1 to use this function

? idle_count++;

}

 5ms毎に変数idle_countの内容を出力するようにしているので、実行結果は以下のようになります。

0

4598

9012

13427

17759

22091

....

 この結果から見ると、このサンプルでは1msあたり900サイクル分ぐらいの空きがあるようです。vTaskDelay関数を使用すれば、タスクを何も実行しない場合のCPUの処理能力を計測することもできるでしょう。こういった数値を把握しておくと、アプリケーションを実際に組んだときに同じように余剰サイクル数を計測すれば、CPUの使用率を計算することができます


Previous: 3.6.5. vTaskDelayUntil

Up: 3. タスク管理

Next: 3.8. 優先度の変更


このページはITと知的財産の法律情報「法務ネット」の管理人が制作・運営しています。