ESP-IDFのFreeRTOSについて
ESP-IDFのFreeRTOSについて
FreeRTOS本家の説明とESP-IDFのFreeRTOSに色々食い違いがあって「なんでだぁっ?」って思ってたんですが、当たり前の話でESP-IDFにはカスタマイズされたFreeRTOSがデフォルトで使用されていて違ってて当たり前だったんですね。
ESP-IDFのFreeRTOSの説明を読んでみれば一目瞭然でした。
例えばノーマルなFreeRTOSでは vTaskStartScheduler() を呼び出すのは必須ですが、ESP-IDFの場合は既に実行されていて、呼び出すなと書いてあります。
タスク一覧を取得するvTaskListを実行してみると以下のように返ってきます。
タスク名 | 状態 | スタック空き | |||
---|---|---|---|---|---|
main | X | 1 | 1764 | 4 | 0 |
IDLE | R | 0 | 1036 | 6 | 1 |
IDLE | R | 0 | 1232 | 5 | 0 |
esp_timer | S | 22 | 3576 | 3 | 0 |
ipc1 | S | 24 | 480 | 2 | 1 |
ipc0 | S | 24 | 480 | 1 | 0 |
R=準備完了, S=一時停止, B=ブロック, D=削除済, X=説明なし
既に幾つもタスクが実行されてますね。
ちなみに app_main() もタスクのようです上記のmainがapp_main()なのだと思われます。
vTaskListの実行方法
vTaskListも最初ビルドできなくてオロオロしましたが、menuConfigで以下をチェックすれば使えるようになります。
configGENERATE_RUN_TIME_STATS
Enable display of xCoreID in vTaskList
上記の順番でチェックしないとvTaskListの方が出てきません。
コメント
コメントを投稿