ESP32のFreeRTOS入門 その9 まとめ

概要

前回までに、基本的な機能については説明が終わりました。今回はAmazonが用意している「FreeRTOS カーネル 開発者ガイド」を読んでいきたいと思います。

FreeRTOS カーネル 開発者ガイドとは?

  • https://docs.aws.amazon.com/ja_jp/freertos-kernel/latest/dg/about.html

上記のドキュメントでして、どこからリンクされているのかは不明です。。。

ブラウザでも見ることが可能ですが、PDFのリンクからファイルをダウンロードすることができます。ファイルの方が見出しがあるので、全体の把握がしやすかったです。

FreeRTOSの機能

一覧が載っていますが、わかりにくい機能はこれまでに説明したいと思います。ただしメモリの割当などはESP32の場合あまり気にする必要がなかったので、省略しています。

一覧をみて、気になる項目があれば、さらに読みすすめるのがよいと思います。

FreeRTOSのファイル

実際のソースファイルは上記の場所にあります。ただArduino CoreにリンクされているESP-IDFのバージョンはリリースによって変わるので注意してください。現在ESP-IDFの最新バージョンは4.0ですが、3.3系が使われているはずです。

  • https://github.com/espressif/arduino-esp32/tree/master/tools/sdk/esp32/include/freertos/include/freertos

上記がArduino Coreで読み込んでいるファイルです。通常はこちらを確認すればよいと思います。

上記には私が一部翻訳したリファレンスがあります。

データ型およびコーディングスタイルガイド

変数名プレフィックス

種類プレフィックス
ポインタpint8_t *pcVal;
符号なしuuint8_t uVal;
char, int8_tcint8_t cVal;
int16_t (short)sint16_t sVal;
int32_t (long)lint32_t lVal;
BaseTypet、その他xBaseType_t xVal;

関数名プレフィックス

戻り値プレフィックス
voidvvoid vFunc();
BaseType_txBaseType_t xFunc();
void *pvvoid * pvFunc();
staticprvstatic void prvFunc();

マクロ名プレフィックス

プレフィックスリソースの定義場所
port (portMAXDELAY など)portable.h または portmacro.h
task (taskENTERCRITICAL() など)task.h
pd (pdTRUE など)projdefs.h
config (configUSEPREEMPTION など)FreeRTOSConfig.h
err (errQUEUEFULL など)projdefs.h

セマフォAPIは独自命名規則のようでした。

マクロ定義

マクロ
pdTRUE1
pdFALSE0
pdPASS1
pdFAIL0

ヒープメモリ管理

ESP-IDFではFreeRTOSのメモリ管理は使っていないと思われます。

タスク管理

ざざっと目を通したほうがいいと思います。ただしESP32だとデュアルコア向けに拡張しているので注意しましょう。

キュー管理

こちらも目を通すと、より深く理解できると思います。

ソフトウェアタイマー管理

ESP32の場合にはハードウエアタイマーを利用するので、ソフトウエアタイマーは利用しません。ただし準備はされているので使うことはおそらく可能です。

割り込み管理

こちらも目を通すと、より深く理解できると思います。

リソース管理

こちらも目を通すと、より深く理解できると思います。

イベントグループ

FreeRTOS的には必須ではないオプション扱いです。あまり積極的に利用する必要はないですが、TCPスタックを自作したい場合などには便利なようです。

タスク通知

キューなど他の機能でも代用可能ですが、どのような場合に通知を使うべきかなどが記述されています。

その他の資料

おそらく、これまで紹介した情報以上のものは日本語ではありません。英語などで探す必要がありそうです。

まとめ

ESP32でFreeRTOSを使うときに、知っておくべきことはある程度紹介できたと思います。これ以上深く知るためにはFreeRTOSのソースコードを読み解く必要があると思います。

のちのち、中身も確認してみたいと思いますが入門としては、ここでいったん終わりにしたいと思います。

コメント