ESP8266 > ファイルスコープstatic変数のメモリ制限に遭遇 > .bss / Flash Sizeと関連
ESP-WROOM-02
関連 esp8266_160220_BYOP @ github
以下の構造体を作成
// Message structure
typedef struct tag_message_t {
String senderSerial; // serial number of the sender
String senderName; // name of the sender
String receiverName; // name of the receiver
String message;
bool isSecret; // sercret message or normal message
} message_t;
それをファイルスコープstatic変数に定義しようとした。
...
static const int kMaxnum_MessageCount = 1000;
static message_t s_messageList[kMaxnum_MessageCount];
...
以下のエラーが出る。
kMaxnum_MessageCount を500にすると問題ない。
ファイルスコープstaticのメモリ制限があるのだろうか。
Flashの4Mのうち、どれくらいを使えるのだろうか。
Arduino:1.6.6 (Windows 8.1), マイコンボード:"Generic ESP8266 Module, Serial, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck, Disabled, None"
c:/users/xxx/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: address 0x3fffcc18 of C:\Users\xxx\AppData\Local\Temp\builda1ccef97ce44419182068709a04c30dc.tmp/esp8266_160220_BYOP.ino.elf section `.bss' is not within region `dram0_0_seg'
c:/users/xxx/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: address 0x3fffcc18 of C:\Users\xxx\AppData\Local\Temp\builda1ccef97ce44419182068709a04c30dc.tmp/esp8266_160220_BYOP.ino.elf section `.bss' is not within region `dram0_0_seg'
collect2.exe: error: ld returned 1 exit status
exit status 1
コンパイル時にエラーが発生しました。
This report would have more information with
"コンパイル中の詳細な出力を表示する"
enabled in File > Preferences.
section
.bss' is not within region
dram0_0_seg'
.bssセクション関連っぽい。
https://en.wikipedia.org/wiki/.bss
https://en.wikipedia.org/wiki/Code_segment
Arduino IDE で Flash Size を増やせば回避できる。でも、(将来の自分も含めた)ソース利用者に「設定をXXしてください」といちいち説明しないといけなくなるので、512Kで動くようにしておく(メッセージ上限数を500未満にしておく)。
そのうち 512K ではどうしてもできないことが出てくるかもしれない。その時は仕方ない。
kMaxnum_MessageCount 500 だと watchdog が発動してしまうという別の問題が出てきた。
Author And Source
この問題について(ESP8266 > ファイルスコープstatic変数のメモリ制限に遭遇 > .bss / Flash Sizeと関連), 我々は、より多くの情報をここで見つけました https://qiita.com/7of9/items/a77dbfd449e467713738著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .