cloud compiling websiteを使用して、多くのモジュールを持つカスタムNodeMCUファームウェアを作成しました。ファームウェア自体のサイズは約700KBです。私は通常、1つのプロジェクトに最大5つのモジュールしか使用しないので、ファームウェアに他のすべてのモジュールを含めるとRAMの使用に著しい悪影響が及ぼされるかどうかは疑問です。多くのモジュールを含むNodeMCUをコンパイルすると、メモリ使用量に影響がありますか?
1
A
答えて
2
https://www.kickstarter.com/projects/214379695/micropython-on-the-esp8266-beautifully-easy-iot/posts/1501224には、ESP8266のメモリマップ(および他の興味深いビット)の優れた説明があります。さらに、あなたはコメントとして素晴らしい答えを得ました。
バイナリに焼き付けられたすべてのモジュールは、「存在する」だけでメモリを消費します。使用可能なヒープ上に1つのモジュールが持つ影響を測定したい場合は、2つのバイナリを作成する必要があります。両方とも点滅し、開始直後にnode.heap()
を実行するデルタを計算します。
多くのモジュールを含むNodeMCUをコンパイルすると、メモリ使用量に影響がありますか?
ありがとうございました。私は通常のみ、我々はすべてのプロジェクトのためのモジュールの異なるセットを(「最小限のセットを」読み取り)を使用することをお勧めする理由だ単一のプロジェクト
のために5つのモジュールまで使用
。 NodeMCUファームウェアの美しさは、これを一度行うだけで済みます。 Arduino、その後、スワップスクリプトや個々の関数in'n outは超高速です。
https://nodemcu.readthedocs.io/en/dev/en/lua-developer-faq/#techniques-for-reducing-ram-and-spiffs-footprintもご覧ください。メジャーなオーバーホールは製造時にhttps://github.com/nodemcu/nodemcu-firmware/pull/1899です。
関連する問題
- 1. オペコードキャッシュがメモリ使用量に与える影響
- 2. オブジェクトのプロパティ名の長さがメモリ使用量に影響しますか?
- 3. jspファイルにたくさんのjspfファイルを含めるとメモリ使用量が多くなります
- 4. あまりにも多くのファサードを使用すると、パフォーマンスに影響しますか?
- 5. Javaのメモリ使用量に影響を与えるLinux構成ですか?
- 6. スパース行列はどのようにメモリ使用量に影響しますか?
- 7. iOSアプリケーションのコンパイル時にarmv7を使用するとパフォーマンスにどのような影響がありますか?
- 8. メモリ使用量:プログラムがあまりにも多くのメモリを割り当てる
- 9. 多くのファイルを読むとメモリに問題がありますか?
- 10. あまりにも多くのメモリを使用するOpenCLプログラム
- 11. UndecidableInstancesプラグマをローカルで使用すると、コンパイル終了時にグローバルな影響がありますか?
- 12. 多くのドメイン=メモリの使用量は多いですか?
- 13. クラスパスにあまりにも多くのjarファイルを含めることの影響
- 14. java8 parallelstream()は、stream()と比較してメモリ使用量が多くなります
- 15. requireステートメントはメモリ使用量とパフォーマンスにどのような影響を与えますか
- 16. 未使用のJavascriptオブジェクトメソッドはどのようにメモリ使用量に影響しますか?
- 17. Javaでコードブロックを使用するとパフォーマンスに影響はありますか?
- 18. 多くのモジュールを使用するプロジェクトをコンパイルする
- 19. console.logsがシングルページアプリケーションの/タブのメモリとパフォーマンスに影響しますか?
- 20. Windows Phoneプロジェクトに多数のdllがあるとパフォーマンスに影響しますか?
- 21. CollectionListとArrayListのCPUとメモリ使用量には違いがありますか?
- 22. StreamReaderの影響を受けるメモリの量
- 23. T-SQLスクリプトで "GO"を使用するか使用しないと結果に影響がありますか?
- 24. 変数の名前付けは、アプリケーションのメモリ使用量にどのような影響を与えますか?
- 25. ActiveModelには「update_attributes」メソッドを含むモジュールがありますか?
- 26. Androidアプリケーションのメモリ使用量が多い
- 27. コアデータのメモリ使用量が多い
- 28. Python&Pandas:多くのdf.copyを使用するとコードのパフォーマンスに影響しますか?
- 29. iPodの音量がアプリケーションの音量に影響する
- 30. 異なるビューで同じドロアブルを使用すると、メモリの使用に影響しますか?
RAMの使用方法とフラッシュの使用方法は2種類あります。ファームウェアはフラッシュに保存され、その一部はIRAM(DRAM、データRAMに対抗する命令RAM)に一時的にロードされます。 ESP-12Fを使用する場合は、ファームウェア用に4MBのフラッシュメモリを使用できます。しかし、フラッシュからコードをフェッチするのが遅く、IRAM(64 KiB big)が遅くなる可能性があります。他のもの(ヒープ&スタック)はDRAM(96 KiB)にあります。ファームウェア(フラッシュとIRAMの一部を占める)のサイズからDRAMのダイナミックメモリ使用量を推測することはできません。モジュールがどのオブジェクトを作成するか、スタックに静的に割り当てるオブジェクトを知る必要があります。 –
さて、私のビルドに 'tmr'モジュールを含めておけば、いつでも' tmr.now() 'を呼び出すことができます。だから私は、tmrオブジェクト/クラスは常にRAMにロードされると仮定します。しかし、おそらく私は間違っていて、ファームウェアはtmrにアクセスしようとするとモジュールをロードするだけです。まあ、私がこの質問をしたのは、ファームウェア自体がほぼすべてのRAMを占有しているように思えるからです(私のLuaスクリプトが約300行以上になると、スクリプトはもう実行されません。代わりにメモリエラーが発生する)。 – Forivin