Closed Blue-Tone closed 8 years ago
現状、Nefryライブラリーとの相性が悪いですので、Nefryライブラリーを使わずにhttps://github.com/esp8266/Arduino 大元のこちらを使用してください。
ボードの設定については、こちらを参考にしてください。
このライブラリーは18300バイト程度メモリを使用している。(SSLを使っているので仕方ない部分
Nefryライブラリーの空き容量は21000バイト程度、NefryのWebページなどで1000-2000は空き容量として必要(クラッシュさせないため
Nefryライブラリー、IoTHubのメモリ使用の削減が今後の課題
少し調査してみました。 ESP8266スペック Flash:4M RAM:36K
フルカラーLチカコンパイル時の出力: 最大1,044,464バイトのフラッシュメモリのうち、スケッチが291,289バイト(27%)を使っています。 最大81,920バイトのRAMのうち、グローバル変数が51,232バイト(62%)を使っていて、ローカル変数で30,688バイト使うことができます。
RAMが問題になっている。
Nefry.cppにhtml作成処理があるが、それをFlashに移せれば、RAMの空きが増やせるかも。
「arduino RAM Flash 文字列」でググったら情報出てきます。 http://garretlab.web.fc2.com/arduino/introduction/memory/ http://www.musashinodenpa.com/arduino/ref/index.php?f=0&pos=1830 http://www.musashinodenpa.com/arduino/ref/index.php?f=2&pos=168
この辺が使えるかも。 PROGMEMキーワード F()マクロ
ありがとうございます。
そうなんですよね、現在コード内に直接HTMLを書き込んでいるのでそのあたりを移動できるとよいなとは思ってるんですけどね…
https://github.com/Nefry-Community/Arduino ライブラリーv1.3ごろ(7月ごろ)SPIFFSという機能で別の場所に移動させようと思ったのですけど、HTMLの読み込みに1秒程度、PCなどでのページ表示に影響したので諦めた経緯があります
そうですね。FlashはRAMよりも読込速度が遅いので、ページの表示に時間がかかりますね。
コーディングの仕方でもう少し改善できるかも。その辺りのソース見てみます。
読込に1秒ぐらいかかってたコードと、改善したコードのバージョンを特定できますか? こんな情報がわかればベター。
コミット: ef6b681864cd9046505416569f98a5dd0e81c1f9 [ef6b681] 日時: 2016年7月6日 10:40:37
あと、どのページで確認したかも知りたいです。
https://github.com/Nefry-Community/Arduino/tags
タグを追加しておいたのでそちらで確認するのがいいかもしれないです
1.2の派生が1.3と1.4ですね、現在は1.4からの派生で開発を進めてます
今考えてるのは、各行でFlash読込して、文字列連結してたら遅いかも。って予想。 http://d.hatena.ne.jp/mooz/20090628/p1 定型なところ(可変で変数や関数で取得してるところ以外)は、1回でまとめてFlash読込したら、多少ましになるかも。 試してないどこんな書き方。 http://d.hatena.ne.jp/mooz/20090628/p1
content += "</p>";
content += "<form method='get' action='set_module_id_next'>";
content += "<div class = \"row\"> <label for=\"module_id\">";
content += module_input[10];
↓
content += "</p>"
"<form method='get' action='set_module_id_next'>"
"<div class = \"row\"> <label for=\"module_id\">";
content += module_input[10];
これで最初の3行まとめて取得できるかも。
1.3タグがFlash読込で1.2、1.4タグが現状の書き方かな? 1.3タグのspiffsWeb("notfound", content);とかがやってみた所だね?
こちらでPROGMEMキーワードか、F()マクロ 試してみるので、どのページで試すのが良さそうとかあれば教えてください。
SPIFFS調べてみました。ファイルにして読み込む方法ですね。 PROGMEMキーワードか、F()マクロを試して、どちらが早いかですね。 明日以降にやってみます。
F()マクロなどで改善されそうですね! あとはどの程度時間に差が出るかですね
8KぐらいRAMが減りました。 シリアルポートが不調で、動作確認できないので、動かしてみてもらえますか?
こちらにコミットしました。 https://github.com/Blue-Tone/Arduino/tree/ReduceRAM
最大1,044,464バイトのフラッシュメモリのうち、スケッチが292,009バイト(27%)を使っています。 最大81,920バイトのRAMのうち、グローバル変数が43,408バイト(52%)を使っていて、ローカル変数で38,512バイト使うことができます。
影響の大きそうなところだけ、F()で囲みました。 あと、Stringの連結は処理コストが大きそうなので、複数行をまとめられるところはまとめました。
コミット漏れ修正しました。
Nefryでも動作するようになったのでCloseします。
Not connected to the Internet で再接続でつながらない、WDTでリブート、一旦Wifi接続?、再接続でつながらない、WDTでリブート を繰り返しているようです。
どこかチェックポイントありますか?