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


Previous: 3.10. タスクの削除(他のタスク)

Up: 3. タスク管理

Next: 3.12. タスクのモニタ


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

3.11. タスクの削除(自身の削除)

サンプルプログラム

freertos_task_delete_itself

 優先順位の異なる複数のタスクが自分自身を削除するというサンプルです。使用している関数は前項のものと同じです。実行結果は以下のようになります。

ABCDE

コラム 1?1 メモリの開放

 FreeRTOSのタスクのためのメモリはvTaskDelete関数を実行した時点で解放されるのではなくその後Idleタスクが実行された時点で解放されます。つまりIdleタスクがなければ、vTaskDelete関数した後どれだけ時間が経ったとしても、メモリは解放されません。そのためIdleタスクが起動しないようなタスク構成(すべてのタスクがBlocked状態となっている期間が無い)だと、たとえvTaskDelete関数を実行したとしても、連続してタスクを作成しているとそのうちにヒープ領域が不足してタスクが作成できなくなります。

 後述のマウス・コントローラのサンプルプログラムでは、メモリが足りなくてタスクを作れないときはメモリが空くまで待つという方法を採っています。この場合Blocked状態にならないタスクがあった場合にはいつまで経ってもメモリが解放されないので、そのようなタスクは作らないように意識しておかなければいけません。


Previous: 3.10. タスクの削除(他のタスク)

Up: 3. タスク管理

Next: 3.12. タスクのモニタ


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