ESP-IDFのFreeRTOSについて

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の方が出てきません。

コメント

このブログの人気の投稿

(真)ESP32の開発環境をVSCodeで作る

ESP32にmicroSD接続

ESP32でデバッグ