2024/06/03 電子書籍「電子書籍出版・技術文書作成を劇的に加速!秀丸エディタ + Markdown + Pandocの驚異」を出版

PROGMEMの使い方

ESP32

PROGMEMは変数の修飾子で、データをSRAMではなく、ROMエリア(フラッシュメモリ,プログラムメモリ)に配置します。

RAMの残りの容量が少なくなった時には、ROMにエリアに移せる変数がないか検討してみてください。

ESP32では、const や constexpr 指定子 を付けても、ROMエリアに配置されるようです。

ESP32 上の PROGMEM は、実際にはコードの互換性のために保持されている単なるダミーとの事です。

On an ESP32: Is using the F()Macro as pointless as using PROGMEM?

書式

PROGMEMは変数の修飾子なので、どこに記述するかの明確な規則はないようです。

コンパイラやそのバージョンによっては、正常に動作しない事もあるようですので、その場合は、記述する場所を変えてみてください。

const dataType variableName[] PROGMEM = {}; // use this form
const PROGMEM dataType variableName[] = {}; // or this one
const dataType PROGMEM variableName[] = {}; // not this one
  • dataType 任意の変数のデータ型。
  • variableName データの配列の名前。

参考URL

以下のURLも参考にしてください。

タイトルとURLをコピーしました