0

FreeRTOSタスクスケジューリングのドキュメントによれば、カーネルは、タスクが現在実行中であってもブロッキング機能を呼び出していない場合でもタスクをスワップできます。したがって、カーネルがクロックティックス割り込みを取得してISRを実行すると、それ以降に実行する別のタスクをスケジュールできます。FreeSTOSタスクがスワップされることはありません

FreeRTOSの私のシステムでは、5つのタスクを起動します。各タスクはある時点で自分自身を遅らせるようにプログラムされているため、すべてのタスクが入れ替えられ、各タスクはある時点で実行されています。しかし、タスク内で無限ループに入ると、そのタスクは決してスワップアウトされません。

どうすれば可能ですか?

答えて

2

まず、configUSE_TIME_SLICINGが設定されていることを確認する必要があります。これにより、ラウンドロビンスケジューラが有効になり、スケジューラは予期したことを実行できます。

また、優先度が同じかそれ以上の場合は、別のタスクに切り替わります。

+0

どこで 'configUSE_TIME_SLICING'を設定できますか? – user2162550

+0

自分で定義していないのであれば、自動的にFreeRTOS.hに設定されると思います。自分で定義した場合は、1にする必要があります。ソースを検索してみてください! –

関連する問題