2017-04-12 8 views
2

私は自分のコードをESP8266のフラッシュメモリに正常に保存できる問題を見つけましたが、起動すると「不十分なメモリ」エラーが発生します。実行前にLuaスクリプトがメモリにロードされていますか?

コード自体は多くのオブジェクトを作成しません。あたかもコードサイズ自体が問題であるかのように見えます。だから私は実行中に完全なコードがプレーンテキストのRAMに実際にロードされるかどうか疑問に思っていました。

コンパイル&私のEsplorerのアップロードボタンも変わっていませんでした。
Luaをコンパイルすると実際にコードサイズがいくら削減されますか?私は、少なくともすべての空白のオーバーヘッドがなくなると思っていたでしょう。

答えて

2

はい、スクリプトは実行される前にRAMにロードされます。
Luaソースがプレーンテキストの場合は、Lua VMがバイトコードにコンパイルする必要があるため、より多くのRAMを必要とします。一般的には、ターゲットLua VMの外側でLuaソースをプリコンパイルすることができます。http://www.eluaproject.net/doc/v0.8/en_using.html、 "eLuaプログラムのクロスコンパイル"のセクションを参照してください。
そしてデバッグ情報を取り除いてコンパイルしたいと思うでしょう。 luac-sオプションを参照してください。

2

あなたcombine node.stripdebug() with node.compile()(すなわち、デバイス上でコンパイル)また、あなたのアプリケーションのメモリフットプリントを減らすことができれば我々は、さらにhttps://nodemcu.readthedocs.io/en/dev/en/upload/#compiling-lua-on-your-pc-for-uploading

で、コンピュータ上のESP8266のためのクロスコンパイルのLuaの章を持っています。

あなたのコードをロードするためにrequire("XXX")を使用する場合、これは自動的にXXX.lcを検索します、その後XXX.lua

出典:https://nodemcu.readthedocs.io/en/latest/en/lua-developer-faq/#how-do-i-reduce-the-size-of-my-compiled-code

関連する問題