Flash・RAM予算
1MBフラッシュと~23KBヒープの行き先、そして60%フラッシュ/65%RAM未満を維持する方法。
Flash予算
1 MB の ESP8285 フラッシュは WebUI が支配的です。バンドルされたクライアントビルドはツリーシェイキング後 ~160 KB 圧縮(フラッシュの ~16%)です。浮動小数点ランタイム(_scanf_float, _printf_float, _dtoa_r, _strtod_l …)は ~9.7 KB で、実在しますが最大のレバーではありません。現在のベースラインはフラッシュ ~68.6% で、60% 目標には ~83 KB の削減が必要であり、WebUI だけがそれを実現できる大きさのレバーです。
RAM予算
ESP8285 はおよそ 23 KB のヒープを公開します。設定保存はヒープ上に大きな JSON ドキュメントを割り当ててはいけません。オーニソプターの設定セーバーはヒープ枯渇とポーリング中の再起動を避けるため LittleFS へ直接ストリーミングします。DynamicJsonDocument をホットパスから外し、スタックバッファと直接書き込みを優先してください。
最適化のヒント
- WebUI バンドルから未使用の ELRS-RX ページをツリーシェイクしてください。
- ループ内での
String連結は避けてください。ヒープを断片化します。 - ドキュメントを構築する代わりに
File::printで JSON を LittleFS へストリーミングしてください。 - テレメトリのホットパスから浮動小数点フォーマットを外してください(事前スケール整数)。
#ifdefでゲートされたモジュールを優先してください(不在時 Zephyrus は no-op にコンパイル)。
ビルドターゲット
| 対象 | フラッシュ予算 | RAM 予算 |
|---|---|---|
| PteronautOS_ESP8285_2400_RX | ≤ 60% | ≤ 65% |
マニフェストは拡張の余裕を残すため フラッシュ 60% / RAM 65% の超過を禁じます。各機能の後に測定してください。グリーンビルドは、フラッシュされブートログが読まれるまで生きているビルドではありません。