1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-04-19 23:22:16 +03:00

Update documentation and arduino debug options (#8837)

* Update documentation

Describe how to improve Exception Decoder results.

Updated build option details.

* Added d-a-v's code. And updated description and debug macro.

* Update doc

Updated platform.txt - positioned -Os such that it can be overridden by `build.opt`.

Add suggestion of using `-Og` which may improve the Decoder's line number correlation
with the problem in the source code.

Untested adjustments to platformio-build.py

* Fixed code formatting

* Fixed example

Previously `-O3` in the example had no effect. It was overridden by later flags.
Reording the `-Os` allowed changing optimization to  work. Somehow this triggered
a new warning "Stream.h:50:7: warning: 'f.Stream::_startMillis' may be used
uninitialized in this function". Replaced `-O3` with `-Og`.

* Proposed "Debug port" menu change
Preserves a pathway for `build.opt` override.

* Update boards.txt.py and docs - WIP

* Improve organization of optimization content.
Use "Debug Optimization" for menu name.
The menu item defines the initial optimization.
platform.txt - optimization parameter can be overridden by build.opt.

* Add fallback value for build.debug_optim to platform.txt

* update text and undo changes to platformio-build.py

* tweak text

* Added ':orphan:' mark to a06-global-build-options.rst

* Update doc. Added link in page index to 'Improving Exception Decoder Results'

* Update text to reference PR#8868 improvements for leaf function.
This commit is contained in:
M Hightower 2023-03-29 02:16:33 -07:00 committed by GitHub
parent ce9e72014b
commit d3c102e717
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 433 additions and 64 deletions

View File

@ -17,6 +17,7 @@ menu.FlashFreq=Flash Frequency
menu.ResetMethod=Reset Method menu.ResetMethod=Reset Method
menu.dbg=Debug port menu.dbg=Debug port
menu.lvl=Debug Level menu.lvl=Debug Level
menu.optim=Debug Optimization
menu.ip=lwIP Variant menu.ip=lwIP Variant
menu.vt=VTables menu.vt=VTables
menu.exception=C++ Exceptions menu.exception=C++ Exceptions
@ -40,6 +41,7 @@ generic.build.mcu=esp8266
generic.build.core=esp8266 generic.build.core=esp8266
generic.build.variant=generic generic.build.variant=generic
generic.build.spiffs_pagesize=256 generic.build.spiffs_pagesize=256
generic.build.debug_optim=
generic.build.debug_port= generic.build.debug_port=
generic.build.debug_level= generic.build.debug_level=
generic.menu.xtal.80=80 MHz generic.menu.xtal.80=80 MHz
@ -397,6 +399,12 @@ generic.menu.dbg.Serial1=Serial1
generic.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 generic.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
generic.menu.lvl.None____=None generic.menu.lvl.None____=None
generic.menu.lvl.None____.build.debug_level= generic.menu.lvl.None____.build.debug_level=
generic.menu.optim.Smallest=None
generic.menu.optim.Smallest.build.debug_optim=-Os
generic.menu.optim.Lite=Lite
generic.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
generic.menu.optim.Full=Optimum
generic.menu.optim.Full.build.debug_optim=-Og
generic.menu.lvl.SSL=SSL generic.menu.lvl.SSL=SSL
generic.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL generic.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
generic.menu.lvl.TLS_MEM=TLS_MEM generic.menu.lvl.TLS_MEM=TLS_MEM
@ -502,6 +510,7 @@ esp8285.serial.disableRTS=true
esp8285.build.mcu=esp8266 esp8285.build.mcu=esp8266
esp8285.build.core=esp8266 esp8285.build.core=esp8266
esp8285.build.spiffs_pagesize=256 esp8285.build.spiffs_pagesize=256
esp8285.build.debug_optim=
esp8285.build.debug_port= esp8285.build.debug_port=
esp8285.build.debug_level= esp8285.build.debug_level=
esp8285.menu.xtal.80=80 MHz esp8285.menu.xtal.80=80 MHz
@ -742,6 +751,12 @@ esp8285.menu.dbg.Serial1=Serial1
esp8285.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 esp8285.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
esp8285.menu.lvl.None____=None esp8285.menu.lvl.None____=None
esp8285.menu.lvl.None____.build.debug_level= esp8285.menu.lvl.None____.build.debug_level=
esp8285.menu.optim.Smallest=None
esp8285.menu.optim.Smallest.build.debug_optim=-Os
esp8285.menu.optim.Lite=Lite
esp8285.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
esp8285.menu.optim.Full=Optimum
esp8285.menu.optim.Full.build.debug_optim=-Og
esp8285.menu.lvl.SSL=SSL esp8285.menu.lvl.SSL=SSL
esp8285.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL esp8285.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
esp8285.menu.lvl.TLS_MEM=TLS_MEM esp8285.menu.lvl.TLS_MEM=TLS_MEM
@ -848,6 +863,7 @@ gen4iod.serial.disableRTS=true
gen4iod.build.mcu=esp8266 gen4iod.build.mcu=esp8266
gen4iod.build.core=esp8266 gen4iod.build.core=esp8266
gen4iod.build.spiffs_pagesize=256 gen4iod.build.spiffs_pagesize=256
gen4iod.build.debug_optim=
gen4iod.build.debug_port= gen4iod.build.debug_port=
gen4iod.build.debug_level= gen4iod.build.debug_level=
gen4iod.menu.xtal.80=80 MHz gen4iod.menu.xtal.80=80 MHz
@ -1010,6 +1026,12 @@ gen4iod.menu.dbg.Serial1=Serial1
gen4iod.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 gen4iod.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
gen4iod.menu.lvl.None____=None gen4iod.menu.lvl.None____=None
gen4iod.menu.lvl.None____.build.debug_level= gen4iod.menu.lvl.None____.build.debug_level=
gen4iod.menu.optim.Smallest=None
gen4iod.menu.optim.Smallest.build.debug_optim=-Os
gen4iod.menu.optim.Lite=Lite
gen4iod.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
gen4iod.menu.optim.Full=Optimum
gen4iod.menu.optim.Full.build.debug_optim=-Og
gen4iod.menu.lvl.SSL=SSL gen4iod.menu.lvl.SSL=SSL
gen4iod.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL gen4iod.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
gen4iod.menu.lvl.TLS_MEM=TLS_MEM gen4iod.menu.lvl.TLS_MEM=TLS_MEM
@ -1115,6 +1137,7 @@ huzzah.serial.disableRTS=true
huzzah.build.mcu=esp8266 huzzah.build.mcu=esp8266
huzzah.build.core=esp8266 huzzah.build.core=esp8266
huzzah.build.spiffs_pagesize=256 huzzah.build.spiffs_pagesize=256
huzzah.build.debug_optim=
huzzah.build.debug_port= huzzah.build.debug_port=
huzzah.build.debug_level= huzzah.build.debug_level=
huzzah.menu.xtal.80=80 MHz huzzah.menu.xtal.80=80 MHz
@ -1222,6 +1245,12 @@ huzzah.menu.dbg.Serial1=Serial1
huzzah.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 huzzah.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
huzzah.menu.lvl.None____=None huzzah.menu.lvl.None____=None
huzzah.menu.lvl.None____.build.debug_level= huzzah.menu.lvl.None____.build.debug_level=
huzzah.menu.optim.Smallest=None
huzzah.menu.optim.Smallest.build.debug_optim=-Os
huzzah.menu.optim.Lite=Lite
huzzah.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
huzzah.menu.optim.Full=Optimum
huzzah.menu.optim.Full.build.debug_optim=-Og
huzzah.menu.lvl.SSL=SSL huzzah.menu.lvl.SSL=SSL
huzzah.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL huzzah.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
huzzah.menu.lvl.TLS_MEM=TLS_MEM huzzah.menu.lvl.TLS_MEM=TLS_MEM
@ -1327,6 +1356,7 @@ wifi_slot.serial.disableRTS=true
wifi_slot.build.mcu=esp8266 wifi_slot.build.mcu=esp8266
wifi_slot.build.core=esp8266 wifi_slot.build.core=esp8266
wifi_slot.build.spiffs_pagesize=256 wifi_slot.build.spiffs_pagesize=256
wifi_slot.build.debug_optim=
wifi_slot.build.debug_port= wifi_slot.build.debug_port=
wifi_slot.build.debug_level= wifi_slot.build.debug_level=
wifi_slot.menu.xtal.80=80 MHz wifi_slot.menu.xtal.80=80 MHz
@ -1528,6 +1558,12 @@ wifi_slot.menu.dbg.Serial1=Serial1
wifi_slot.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 wifi_slot.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
wifi_slot.menu.lvl.None____=None wifi_slot.menu.lvl.None____=None
wifi_slot.menu.lvl.None____.build.debug_level= wifi_slot.menu.lvl.None____.build.debug_level=
wifi_slot.menu.optim.Smallest=None
wifi_slot.menu.optim.Smallest.build.debug_optim=-Os
wifi_slot.menu.optim.Lite=Lite
wifi_slot.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
wifi_slot.menu.optim.Full=Optimum
wifi_slot.menu.optim.Full.build.debug_optim=-Og
wifi_slot.menu.lvl.SSL=SSL wifi_slot.menu.lvl.SSL=SSL
wifi_slot.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL wifi_slot.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
wifi_slot.menu.lvl.TLS_MEM=TLS_MEM wifi_slot.menu.lvl.TLS_MEM=TLS_MEM
@ -1645,6 +1681,7 @@ arduino-esp8266.build.mcu=esp8266
arduino-esp8266.build.core=esp8266 arduino-esp8266.build.core=esp8266
arduino-esp8266.build.variant=generic arduino-esp8266.build.variant=generic
arduino-esp8266.build.spiffs_pagesize=256 arduino-esp8266.build.spiffs_pagesize=256
arduino-esp8266.build.debug_optim=
arduino-esp8266.build.debug_port= arduino-esp8266.build.debug_port=
arduino-esp8266.build.debug_level= arduino-esp8266.build.debug_level=
arduino-esp8266.menu.xtal.80=80 MHz arduino-esp8266.menu.xtal.80=80 MHz
@ -1752,6 +1789,12 @@ arduino-esp8266.menu.dbg.Serial1=Serial1
arduino-esp8266.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 arduino-esp8266.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
arduino-esp8266.menu.lvl.None____=None arduino-esp8266.menu.lvl.None____=None
arduino-esp8266.menu.lvl.None____.build.debug_level= arduino-esp8266.menu.lvl.None____.build.debug_level=
arduino-esp8266.menu.optim.Smallest=None
arduino-esp8266.menu.optim.Smallest.build.debug_optim=-Os
arduino-esp8266.menu.optim.Lite=Lite
arduino-esp8266.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
arduino-esp8266.menu.optim.Full=Optimum
arduino-esp8266.menu.optim.Full.build.debug_optim=-Og
arduino-esp8266.menu.lvl.SSL=SSL arduino-esp8266.menu.lvl.SSL=SSL
arduino-esp8266.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL arduino-esp8266.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
arduino-esp8266.menu.lvl.TLS_MEM=TLS_MEM arduino-esp8266.menu.lvl.TLS_MEM=TLS_MEM
@ -1858,6 +1901,7 @@ espmxdevkit.serial.disableRTS=true
espmxdevkit.build.mcu=esp8266 espmxdevkit.build.mcu=esp8266
espmxdevkit.build.core=esp8266 espmxdevkit.build.core=esp8266
espmxdevkit.build.spiffs_pagesize=256 espmxdevkit.build.spiffs_pagesize=256
espmxdevkit.build.debug_optim=
espmxdevkit.build.debug_port= espmxdevkit.build.debug_port=
espmxdevkit.build.debug_level= espmxdevkit.build.debug_level=
espmxdevkit.menu.xtal.80=80 MHz espmxdevkit.menu.xtal.80=80 MHz
@ -1997,6 +2041,12 @@ espmxdevkit.menu.dbg.Serial1=Serial1
espmxdevkit.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 espmxdevkit.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
espmxdevkit.menu.lvl.None____=None espmxdevkit.menu.lvl.None____=None
espmxdevkit.menu.lvl.None____.build.debug_level= espmxdevkit.menu.lvl.None____.build.debug_level=
espmxdevkit.menu.optim.Smallest=None
espmxdevkit.menu.optim.Smallest.build.debug_optim=-Os
espmxdevkit.menu.optim.Lite=Lite
espmxdevkit.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
espmxdevkit.menu.optim.Full=Optimum
espmxdevkit.menu.optim.Full.build.debug_optim=-Og
espmxdevkit.menu.lvl.SSL=SSL espmxdevkit.menu.lvl.SSL=SSL
espmxdevkit.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL espmxdevkit.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
espmxdevkit.menu.lvl.TLS_MEM=TLS_MEM espmxdevkit.menu.lvl.TLS_MEM=TLS_MEM
@ -2103,6 +2153,7 @@ oak.serial.disableRTS=true
oak.build.mcu=esp8266 oak.build.mcu=esp8266
oak.build.core=esp8266 oak.build.core=esp8266
oak.build.spiffs_pagesize=256 oak.build.spiffs_pagesize=256
oak.build.debug_optim=
oak.build.debug_port= oak.build.debug_port=
oak.build.debug_level= oak.build.debug_level=
oak.menu.xtal.80=80 MHz oak.menu.xtal.80=80 MHz
@ -2210,6 +2261,12 @@ oak.menu.dbg.Serial1=Serial1
oak.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 oak.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
oak.menu.lvl.None____=None oak.menu.lvl.None____=None
oak.menu.lvl.None____.build.debug_level= oak.menu.lvl.None____.build.debug_level=
oak.menu.optim.Smallest=None
oak.menu.optim.Smallest.build.debug_optim=-Os
oak.menu.optim.Lite=Lite
oak.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
oak.menu.optim.Full=Optimum
oak.menu.optim.Full.build.debug_optim=-Og
oak.menu.lvl.SSL=SSL oak.menu.lvl.SSL=SSL
oak.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL oak.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
oak.menu.lvl.TLS_MEM=TLS_MEM oak.menu.lvl.TLS_MEM=TLS_MEM
@ -2324,6 +2381,7 @@ espduino.serial.disableRTS=true
espduino.build.mcu=esp8266 espduino.build.mcu=esp8266
espduino.build.core=esp8266 espduino.build.core=esp8266
espduino.build.spiffs_pagesize=256 espduino.build.spiffs_pagesize=256
espduino.build.debug_optim=
espduino.build.debug_port= espduino.build.debug_port=
espduino.build.debug_level= espduino.build.debug_level=
espduino.menu.xtal.80=80 MHz espduino.menu.xtal.80=80 MHz
@ -2430,6 +2488,12 @@ espduino.menu.dbg.Serial1=Serial1
espduino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 espduino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
espduino.menu.lvl.None____=None espduino.menu.lvl.None____=None
espduino.menu.lvl.None____.build.debug_level= espduino.menu.lvl.None____.build.debug_level=
espduino.menu.optim.Smallest=None
espduino.menu.optim.Smallest.build.debug_optim=-Os
espduino.menu.optim.Lite=Lite
espduino.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
espduino.menu.optim.Full=Optimum
espduino.menu.optim.Full.build.debug_optim=-Og
espduino.menu.lvl.SSL=SSL espduino.menu.lvl.SSL=SSL
espduino.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL espduino.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
espduino.menu.lvl.TLS_MEM=TLS_MEM espduino.menu.lvl.TLS_MEM=TLS_MEM
@ -2535,6 +2599,7 @@ espectro.serial.disableRTS=true
espectro.build.mcu=esp8266 espectro.build.mcu=esp8266
espectro.build.core=esp8266 espectro.build.core=esp8266
espectro.build.spiffs_pagesize=256 espectro.build.spiffs_pagesize=256
espectro.build.debug_optim=
espectro.build.debug_port= espectro.build.debug_port=
espectro.build.debug_level= espectro.build.debug_level=
espectro.menu.xtal.80=80 MHz espectro.menu.xtal.80=80 MHz
@ -2642,6 +2707,12 @@ espectro.menu.dbg.Serial1=Serial1
espectro.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 espectro.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
espectro.menu.lvl.None____=None espectro.menu.lvl.None____=None
espectro.menu.lvl.None____.build.debug_level= espectro.menu.lvl.None____.build.debug_level=
espectro.menu.optim.Smallest=None
espectro.menu.optim.Smallest.build.debug_optim=-Os
espectro.menu.optim.Lite=Lite
espectro.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
espectro.menu.optim.Full=Optimum
espectro.menu.optim.Full.build.debug_optim=-Og
espectro.menu.lvl.SSL=SSL espectro.menu.lvl.SSL=SSL
espectro.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL espectro.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
espectro.menu.lvl.TLS_MEM=TLS_MEM espectro.menu.lvl.TLS_MEM=TLS_MEM
@ -2747,6 +2818,7 @@ espino.serial.disableRTS=true
espino.build.mcu=esp8266 espino.build.mcu=esp8266
espino.build.core=esp8266 espino.build.core=esp8266
espino.build.spiffs_pagesize=256 espino.build.spiffs_pagesize=256
espino.build.debug_optim=
espino.build.debug_port= espino.build.debug_port=
espino.build.debug_level= espino.build.debug_level=
espino.menu.xtal.80=80 MHz espino.menu.xtal.80=80 MHz
@ -2857,6 +2929,12 @@ espino.menu.dbg.Serial1=Serial1
espino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 espino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
espino.menu.lvl.None____=None espino.menu.lvl.None____=None
espino.menu.lvl.None____.build.debug_level= espino.menu.lvl.None____.build.debug_level=
espino.menu.optim.Smallest=None
espino.menu.optim.Smallest.build.debug_optim=-Os
espino.menu.optim.Lite=Lite
espino.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
espino.menu.optim.Full=Optimum
espino.menu.optim.Full.build.debug_optim=-Og
espino.menu.lvl.SSL=SSL espino.menu.lvl.SSL=SSL
espino.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL espino.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
espino.menu.lvl.TLS_MEM=TLS_MEM espino.menu.lvl.TLS_MEM=TLS_MEM
@ -2962,6 +3040,7 @@ espresso_lite_v1.serial.disableRTS=true
espresso_lite_v1.build.mcu=esp8266 espresso_lite_v1.build.mcu=esp8266
espresso_lite_v1.build.core=esp8266 espresso_lite_v1.build.core=esp8266
espresso_lite_v1.build.spiffs_pagesize=256 espresso_lite_v1.build.spiffs_pagesize=256
espresso_lite_v1.build.debug_optim=
espresso_lite_v1.build.debug_port= espresso_lite_v1.build.debug_port=
espresso_lite_v1.build.debug_level= espresso_lite_v1.build.debug_level=
espresso_lite_v1.menu.xtal.80=80 MHz espresso_lite_v1.menu.xtal.80=80 MHz
@ -3072,6 +3151,12 @@ espresso_lite_v1.menu.dbg.Serial1=Serial1
espresso_lite_v1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 espresso_lite_v1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
espresso_lite_v1.menu.lvl.None____=None espresso_lite_v1.menu.lvl.None____=None
espresso_lite_v1.menu.lvl.None____.build.debug_level= espresso_lite_v1.menu.lvl.None____.build.debug_level=
espresso_lite_v1.menu.optim.Smallest=None
espresso_lite_v1.menu.optim.Smallest.build.debug_optim=-Os
espresso_lite_v1.menu.optim.Lite=Lite
espresso_lite_v1.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
espresso_lite_v1.menu.optim.Full=Optimum
espresso_lite_v1.menu.optim.Full.build.debug_optim=-Og
espresso_lite_v1.menu.lvl.SSL=SSL espresso_lite_v1.menu.lvl.SSL=SSL
espresso_lite_v1.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL espresso_lite_v1.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
espresso_lite_v1.menu.lvl.TLS_MEM=TLS_MEM espresso_lite_v1.menu.lvl.TLS_MEM=TLS_MEM
@ -3177,6 +3262,7 @@ espresso_lite_v2.serial.disableRTS=true
espresso_lite_v2.build.mcu=esp8266 espresso_lite_v2.build.mcu=esp8266
espresso_lite_v2.build.core=esp8266 espresso_lite_v2.build.core=esp8266
espresso_lite_v2.build.spiffs_pagesize=256 espresso_lite_v2.build.spiffs_pagesize=256
espresso_lite_v2.build.debug_optim=
espresso_lite_v2.build.debug_port= espresso_lite_v2.build.debug_port=
espresso_lite_v2.build.debug_level= espresso_lite_v2.build.debug_level=
espresso_lite_v2.menu.xtal.80=80 MHz espresso_lite_v2.menu.xtal.80=80 MHz
@ -3287,6 +3373,12 @@ espresso_lite_v2.menu.dbg.Serial1=Serial1
espresso_lite_v2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 espresso_lite_v2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
espresso_lite_v2.menu.lvl.None____=None espresso_lite_v2.menu.lvl.None____=None
espresso_lite_v2.menu.lvl.None____.build.debug_level= espresso_lite_v2.menu.lvl.None____.build.debug_level=
espresso_lite_v2.menu.optim.Smallest=None
espresso_lite_v2.menu.optim.Smallest.build.debug_optim=-Os
espresso_lite_v2.menu.optim.Lite=Lite
espresso_lite_v2.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
espresso_lite_v2.menu.optim.Full=Optimum
espresso_lite_v2.menu.optim.Full.build.debug_optim=-Og
espresso_lite_v2.menu.lvl.SSL=SSL espresso_lite_v2.menu.lvl.SSL=SSL
espresso_lite_v2.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL espresso_lite_v2.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
espresso_lite_v2.menu.lvl.TLS_MEM=TLS_MEM espresso_lite_v2.menu.lvl.TLS_MEM=TLS_MEM
@ -3401,6 +3493,7 @@ sonoff.serial.disableRTS=true
sonoff.build.mcu=esp8266 sonoff.build.mcu=esp8266
sonoff.build.core=esp8266 sonoff.build.core=esp8266
sonoff.build.spiffs_pagesize=256 sonoff.build.spiffs_pagesize=256
sonoff.build.debug_optim=
sonoff.build.debug_port= sonoff.build.debug_port=
sonoff.build.debug_level= sonoff.build.debug_level=
sonoff.menu.xtal.80=80 MHz sonoff.menu.xtal.80=80 MHz
@ -3540,6 +3633,12 @@ sonoff.menu.dbg.Serial1=Serial1
sonoff.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 sonoff.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
sonoff.menu.lvl.None____=None sonoff.menu.lvl.None____=None
sonoff.menu.lvl.None____.build.debug_level= sonoff.menu.lvl.None____.build.debug_level=
sonoff.menu.optim.Smallest=None
sonoff.menu.optim.Smallest.build.debug_optim=-Os
sonoff.menu.optim.Lite=Lite
sonoff.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
sonoff.menu.optim.Full=Optimum
sonoff.menu.optim.Full.build.debug_optim=-Og
sonoff.menu.lvl.SSL=SSL sonoff.menu.lvl.SSL=SSL
sonoff.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL sonoff.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
sonoff.menu.lvl.TLS_MEM=TLS_MEM sonoff.menu.lvl.TLS_MEM=TLS_MEM
@ -3645,6 +3744,7 @@ inventone.serial.disableRTS=true
inventone.build.mcu=esp8266 inventone.build.mcu=esp8266
inventone.build.core=esp8266 inventone.build.core=esp8266
inventone.build.spiffs_pagesize=256 inventone.build.spiffs_pagesize=256
inventone.build.debug_optim=
inventone.build.debug_port= inventone.build.debug_port=
inventone.build.debug_level= inventone.build.debug_level=
inventone.menu.xtal.80=80 MHz inventone.menu.xtal.80=80 MHz
@ -3752,6 +3852,12 @@ inventone.menu.dbg.Serial1=Serial1
inventone.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 inventone.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
inventone.menu.lvl.None____=None inventone.menu.lvl.None____=None
inventone.menu.lvl.None____.build.debug_level= inventone.menu.lvl.None____.build.debug_level=
inventone.menu.optim.Smallest=None
inventone.menu.optim.Smallest.build.debug_optim=-Os
inventone.menu.optim.Lite=Lite
inventone.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
inventone.menu.optim.Full=Optimum
inventone.menu.optim.Full.build.debug_optim=-Og
inventone.menu.lvl.SSL=SSL inventone.menu.lvl.SSL=SSL
inventone.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL inventone.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
inventone.menu.lvl.TLS_MEM=TLS_MEM inventone.menu.lvl.TLS_MEM=TLS_MEM
@ -3857,6 +3963,7 @@ d1_wroom_02.serial.disableRTS=true
d1_wroom_02.build.mcu=esp8266 d1_wroom_02.build.mcu=esp8266
d1_wroom_02.build.core=esp8266 d1_wroom_02.build.core=esp8266
d1_wroom_02.build.spiffs_pagesize=256 d1_wroom_02.build.spiffs_pagesize=256
d1_wroom_02.build.debug_optim=
d1_wroom_02.build.debug_port= d1_wroom_02.build.debug_port=
d1_wroom_02.build.debug_level= d1_wroom_02.build.debug_level=
d1_wroom_02.menu.xtal.80=80 MHz d1_wroom_02.menu.xtal.80=80 MHz
@ -3980,6 +4087,12 @@ d1_wroom_02.menu.dbg.Serial1=Serial1
d1_wroom_02.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 d1_wroom_02.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
d1_wroom_02.menu.lvl.None____=None d1_wroom_02.menu.lvl.None____=None
d1_wroom_02.menu.lvl.None____.build.debug_level= d1_wroom_02.menu.lvl.None____.build.debug_level=
d1_wroom_02.menu.optim.Smallest=None
d1_wroom_02.menu.optim.Smallest.build.debug_optim=-Os
d1_wroom_02.menu.optim.Lite=Lite
d1_wroom_02.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
d1_wroom_02.menu.optim.Full=Optimum
d1_wroom_02.menu.optim.Full.build.debug_optim=-Og
d1_wroom_02.menu.lvl.SSL=SSL d1_wroom_02.menu.lvl.SSL=SSL
d1_wroom_02.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL d1_wroom_02.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
d1_wroom_02.menu.lvl.TLS_MEM=TLS_MEM d1_wroom_02.menu.lvl.TLS_MEM=TLS_MEM
@ -4085,6 +4198,7 @@ d1_mini.serial.disableRTS=true
d1_mini.build.mcu=esp8266 d1_mini.build.mcu=esp8266
d1_mini.build.core=esp8266 d1_mini.build.core=esp8266
d1_mini.build.spiffs_pagesize=256 d1_mini.build.spiffs_pagesize=256
d1_mini.build.debug_optim=
d1_mini.build.debug_port= d1_mini.build.debug_port=
d1_mini.build.debug_level= d1_mini.build.debug_level=
d1_mini.menu.xtal.80=80 MHz d1_mini.menu.xtal.80=80 MHz
@ -4192,6 +4306,12 @@ d1_mini.menu.dbg.Serial1=Serial1
d1_mini.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 d1_mini.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
d1_mini.menu.lvl.None____=None d1_mini.menu.lvl.None____=None
d1_mini.menu.lvl.None____.build.debug_level= d1_mini.menu.lvl.None____.build.debug_level=
d1_mini.menu.optim.Smallest=None
d1_mini.menu.optim.Smallest.build.debug_optim=-Os
d1_mini.menu.optim.Lite=Lite
d1_mini.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
d1_mini.menu.optim.Full=Optimum
d1_mini.menu.optim.Full.build.debug_optim=-Og
d1_mini.menu.lvl.SSL=SSL d1_mini.menu.lvl.SSL=SSL
d1_mini.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL d1_mini.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
d1_mini.menu.lvl.TLS_MEM=TLS_MEM d1_mini.menu.lvl.TLS_MEM=TLS_MEM
@ -4297,6 +4417,7 @@ d1_mini_clone.serial.disableRTS=true
d1_mini_clone.build.mcu=esp8266 d1_mini_clone.build.mcu=esp8266
d1_mini_clone.build.core=esp8266 d1_mini_clone.build.core=esp8266
d1_mini_clone.build.spiffs_pagesize=256 d1_mini_clone.build.spiffs_pagesize=256
d1_mini_clone.build.debug_optim=
d1_mini_clone.build.debug_port= d1_mini_clone.build.debug_port=
d1_mini_clone.build.debug_level= d1_mini_clone.build.debug_level=
d1_mini_clone.menu.xtal.80=80 MHz d1_mini_clone.menu.xtal.80=80 MHz
@ -4421,6 +4542,12 @@ d1_mini_clone.menu.dbg.Serial1=Serial1
d1_mini_clone.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 d1_mini_clone.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
d1_mini_clone.menu.lvl.None____=None d1_mini_clone.menu.lvl.None____=None
d1_mini_clone.menu.lvl.None____.build.debug_level= d1_mini_clone.menu.lvl.None____.build.debug_level=
d1_mini_clone.menu.optim.Smallest=None
d1_mini_clone.menu.optim.Smallest.build.debug_optim=-Os
d1_mini_clone.menu.optim.Lite=Lite
d1_mini_clone.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
d1_mini_clone.menu.optim.Full=Optimum
d1_mini_clone.menu.optim.Full.build.debug_optim=-Og
d1_mini_clone.menu.lvl.SSL=SSL d1_mini_clone.menu.lvl.SSL=SSL
d1_mini_clone.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL d1_mini_clone.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
d1_mini_clone.menu.lvl.TLS_MEM=TLS_MEM d1_mini_clone.menu.lvl.TLS_MEM=TLS_MEM
@ -4526,6 +4653,7 @@ d1_mini_lite.serial.disableRTS=true
d1_mini_lite.build.mcu=esp8266 d1_mini_lite.build.mcu=esp8266
d1_mini_lite.build.core=esp8266 d1_mini_lite.build.core=esp8266
d1_mini_lite.build.spiffs_pagesize=256 d1_mini_lite.build.spiffs_pagesize=256
d1_mini_lite.build.debug_optim=
d1_mini_lite.build.debug_port= d1_mini_lite.build.debug_port=
d1_mini_lite.build.debug_level= d1_mini_lite.build.debug_level=
d1_mini_lite.menu.xtal.80=80 MHz d1_mini_lite.menu.xtal.80=80 MHz
@ -4665,6 +4793,12 @@ d1_mini_lite.menu.dbg.Serial1=Serial1
d1_mini_lite.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 d1_mini_lite.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
d1_mini_lite.menu.lvl.None____=None d1_mini_lite.menu.lvl.None____=None
d1_mini_lite.menu.lvl.None____.build.debug_level= d1_mini_lite.menu.lvl.None____.build.debug_level=
d1_mini_lite.menu.optim.Smallest=None
d1_mini_lite.menu.optim.Smallest.build.debug_optim=-Os
d1_mini_lite.menu.optim.Lite=Lite
d1_mini_lite.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
d1_mini_lite.menu.optim.Full=Optimum
d1_mini_lite.menu.optim.Full.build.debug_optim=-Og
d1_mini_lite.menu.lvl.SSL=SSL d1_mini_lite.menu.lvl.SSL=SSL
d1_mini_lite.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL d1_mini_lite.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
d1_mini_lite.menu.lvl.TLS_MEM=TLS_MEM d1_mini_lite.menu.lvl.TLS_MEM=TLS_MEM
@ -4770,6 +4904,7 @@ d1_mini_pro.serial.disableRTS=true
d1_mini_pro.build.mcu=esp8266 d1_mini_pro.build.mcu=esp8266
d1_mini_pro.build.core=esp8266 d1_mini_pro.build.core=esp8266
d1_mini_pro.build.spiffs_pagesize=256 d1_mini_pro.build.spiffs_pagesize=256
d1_mini_pro.build.debug_optim=
d1_mini_pro.build.debug_port= d1_mini_pro.build.debug_port=
d1_mini_pro.build.debug_level= d1_mini_pro.build.debug_level=
d1_mini_pro.menu.xtal.80=80 MHz d1_mini_pro.menu.xtal.80=80 MHz
@ -4869,6 +5004,12 @@ d1_mini_pro.menu.dbg.Serial1=Serial1
d1_mini_pro.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 d1_mini_pro.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
d1_mini_pro.menu.lvl.None____=None d1_mini_pro.menu.lvl.None____=None
d1_mini_pro.menu.lvl.None____.build.debug_level= d1_mini_pro.menu.lvl.None____.build.debug_level=
d1_mini_pro.menu.optim.Smallest=None
d1_mini_pro.menu.optim.Smallest.build.debug_optim=-Os
d1_mini_pro.menu.optim.Lite=Lite
d1_mini_pro.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
d1_mini_pro.menu.optim.Full=Optimum
d1_mini_pro.menu.optim.Full.build.debug_optim=-Og
d1_mini_pro.menu.lvl.SSL=SSL d1_mini_pro.menu.lvl.SSL=SSL
d1_mini_pro.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL d1_mini_pro.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
d1_mini_pro.menu.lvl.TLS_MEM=TLS_MEM d1_mini_pro.menu.lvl.TLS_MEM=TLS_MEM
@ -4974,6 +5115,7 @@ d1.serial.disableRTS=true
d1.build.mcu=esp8266 d1.build.mcu=esp8266
d1.build.core=esp8266 d1.build.core=esp8266
d1.build.spiffs_pagesize=256 d1.build.spiffs_pagesize=256
d1.build.debug_optim=
d1.build.debug_port= d1.build.debug_port=
d1.build.debug_level= d1.build.debug_level=
d1.menu.xtal.80=80 MHz d1.menu.xtal.80=80 MHz
@ -5081,6 +5223,12 @@ d1.menu.dbg.Serial1=Serial1
d1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 d1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
d1.menu.lvl.None____=None d1.menu.lvl.None____=None
d1.menu.lvl.None____.build.debug_level= d1.menu.lvl.None____.build.debug_level=
d1.menu.optim.Smallest=None
d1.menu.optim.Smallest.build.debug_optim=-Os
d1.menu.optim.Lite=Lite
d1.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
d1.menu.optim.Full=Optimum
d1.menu.optim.Full.build.debug_optim=-Og
d1.menu.lvl.SSL=SSL d1.menu.lvl.SSL=SSL
d1.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL d1.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
d1.menu.lvl.TLS_MEM=TLS_MEM d1.menu.lvl.TLS_MEM=TLS_MEM
@ -5186,6 +5334,7 @@ agruminolemon.serial.disableRTS=true
agruminolemon.build.mcu=esp8266 agruminolemon.build.mcu=esp8266
agruminolemon.build.core=esp8266 agruminolemon.build.core=esp8266
agruminolemon.build.spiffs_pagesize=256 agruminolemon.build.spiffs_pagesize=256
agruminolemon.build.debug_optim=
agruminolemon.build.debug_port= agruminolemon.build.debug_port=
agruminolemon.build.debug_level= agruminolemon.build.debug_level=
agruminolemon.menu.xtal.80=80 MHz agruminolemon.menu.xtal.80=80 MHz
@ -5309,6 +5458,12 @@ agruminolemon.menu.dbg.Serial1=Serial1
agruminolemon.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 agruminolemon.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
agruminolemon.menu.lvl.None____=None agruminolemon.menu.lvl.None____=None
agruminolemon.menu.lvl.None____.build.debug_level= agruminolemon.menu.lvl.None____.build.debug_level=
agruminolemon.menu.optim.Smallest=None
agruminolemon.menu.optim.Smallest.build.debug_optim=-Os
agruminolemon.menu.optim.Lite=Lite
agruminolemon.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
agruminolemon.menu.optim.Full=Optimum
agruminolemon.menu.optim.Full.build.debug_optim=-Og
agruminolemon.menu.lvl.SSL=SSL agruminolemon.menu.lvl.SSL=SSL
agruminolemon.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL agruminolemon.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
agruminolemon.menu.lvl.TLS_MEM=TLS_MEM agruminolemon.menu.lvl.TLS_MEM=TLS_MEM
@ -5414,6 +5569,7 @@ nodemcu.serial.disableRTS=true
nodemcu.build.mcu=esp8266 nodemcu.build.mcu=esp8266
nodemcu.build.core=esp8266 nodemcu.build.core=esp8266
nodemcu.build.spiffs_pagesize=256 nodemcu.build.spiffs_pagesize=256
nodemcu.build.debug_optim=
nodemcu.build.debug_port= nodemcu.build.debug_port=
nodemcu.build.debug_level= nodemcu.build.debug_level=
nodemcu.menu.xtal.80=80 MHz nodemcu.menu.xtal.80=80 MHz
@ -5521,6 +5677,12 @@ nodemcu.menu.dbg.Serial1=Serial1
nodemcu.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 nodemcu.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
nodemcu.menu.lvl.None____=None nodemcu.menu.lvl.None____=None
nodemcu.menu.lvl.None____.build.debug_level= nodemcu.menu.lvl.None____.build.debug_level=
nodemcu.menu.optim.Smallest=None
nodemcu.menu.optim.Smallest.build.debug_optim=-Os
nodemcu.menu.optim.Lite=Lite
nodemcu.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
nodemcu.menu.optim.Full=Optimum
nodemcu.menu.optim.Full.build.debug_optim=-Og
nodemcu.menu.lvl.SSL=SSL nodemcu.menu.lvl.SSL=SSL
nodemcu.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL nodemcu.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
nodemcu.menu.lvl.TLS_MEM=TLS_MEM nodemcu.menu.lvl.TLS_MEM=TLS_MEM
@ -5626,6 +5788,7 @@ nodemcuv2.serial.disableRTS=true
nodemcuv2.build.mcu=esp8266 nodemcuv2.build.mcu=esp8266
nodemcuv2.build.core=esp8266 nodemcuv2.build.core=esp8266
nodemcuv2.build.spiffs_pagesize=256 nodemcuv2.build.spiffs_pagesize=256
nodemcuv2.build.debug_optim=
nodemcuv2.build.debug_port= nodemcuv2.build.debug_port=
nodemcuv2.build.debug_level= nodemcuv2.build.debug_level=
nodemcuv2.menu.xtal.80=80 MHz nodemcuv2.menu.xtal.80=80 MHz
@ -5737,6 +5900,12 @@ nodemcuv2.menu.dbg.Serial1=Serial1
nodemcuv2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 nodemcuv2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
nodemcuv2.menu.lvl.None____=None nodemcuv2.menu.lvl.None____=None
nodemcuv2.menu.lvl.None____.build.debug_level= nodemcuv2.menu.lvl.None____.build.debug_level=
nodemcuv2.menu.optim.Smallest=None
nodemcuv2.menu.optim.Smallest.build.debug_optim=-Os
nodemcuv2.menu.optim.Lite=Lite
nodemcuv2.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
nodemcuv2.menu.optim.Full=Optimum
nodemcuv2.menu.optim.Full.build.debug_optim=-Og
nodemcuv2.menu.lvl.SSL=SSL nodemcuv2.menu.lvl.SSL=SSL
nodemcuv2.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL nodemcuv2.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
nodemcuv2.menu.lvl.TLS_MEM=TLS_MEM nodemcuv2.menu.lvl.TLS_MEM=TLS_MEM
@ -5842,6 +6011,7 @@ modwifi.serial.disableRTS=true
modwifi.build.mcu=esp8266 modwifi.build.mcu=esp8266
modwifi.build.core=esp8266 modwifi.build.core=esp8266
modwifi.build.spiffs_pagesize=256 modwifi.build.spiffs_pagesize=256
modwifi.build.debug_optim=
modwifi.build.debug_port= modwifi.build.debug_port=
modwifi.build.debug_level= modwifi.build.debug_level=
modwifi.menu.xtal.80=80 MHz modwifi.menu.xtal.80=80 MHz
@ -5980,6 +6150,12 @@ modwifi.menu.dbg.Serial1=Serial1
modwifi.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 modwifi.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
modwifi.menu.lvl.None____=None modwifi.menu.lvl.None____=None
modwifi.menu.lvl.None____.build.debug_level= modwifi.menu.lvl.None____.build.debug_level=
modwifi.menu.optim.Smallest=None
modwifi.menu.optim.Smallest.build.debug_optim=-Os
modwifi.menu.optim.Lite=Lite
modwifi.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
modwifi.menu.optim.Full=Optimum
modwifi.menu.optim.Full.build.debug_optim=-Og
modwifi.menu.lvl.SSL=SSL modwifi.menu.lvl.SSL=SSL
modwifi.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL modwifi.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
modwifi.menu.lvl.TLS_MEM=TLS_MEM modwifi.menu.lvl.TLS_MEM=TLS_MEM
@ -6085,6 +6261,7 @@ phoenix_v1.serial.disableRTS=true
phoenix_v1.build.mcu=esp8266 phoenix_v1.build.mcu=esp8266
phoenix_v1.build.core=esp8266 phoenix_v1.build.core=esp8266
phoenix_v1.build.spiffs_pagesize=256 phoenix_v1.build.spiffs_pagesize=256
phoenix_v1.build.debug_optim=
phoenix_v1.build.debug_port= phoenix_v1.build.debug_port=
phoenix_v1.build.debug_level= phoenix_v1.build.debug_level=
phoenix_v1.menu.xtal.80=80 MHz phoenix_v1.menu.xtal.80=80 MHz
@ -6195,6 +6372,12 @@ phoenix_v1.menu.dbg.Serial1=Serial1
phoenix_v1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 phoenix_v1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
phoenix_v1.menu.lvl.None____=None phoenix_v1.menu.lvl.None____=None
phoenix_v1.menu.lvl.None____.build.debug_level= phoenix_v1.menu.lvl.None____.build.debug_level=
phoenix_v1.menu.optim.Smallest=None
phoenix_v1.menu.optim.Smallest.build.debug_optim=-Os
phoenix_v1.menu.optim.Lite=Lite
phoenix_v1.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
phoenix_v1.menu.optim.Full=Optimum
phoenix_v1.menu.optim.Full.build.debug_optim=-Og
phoenix_v1.menu.lvl.SSL=SSL phoenix_v1.menu.lvl.SSL=SSL
phoenix_v1.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL phoenix_v1.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
phoenix_v1.menu.lvl.TLS_MEM=TLS_MEM phoenix_v1.menu.lvl.TLS_MEM=TLS_MEM
@ -6300,6 +6483,7 @@ phoenix_v2.serial.disableRTS=true
phoenix_v2.build.mcu=esp8266 phoenix_v2.build.mcu=esp8266
phoenix_v2.build.core=esp8266 phoenix_v2.build.core=esp8266
phoenix_v2.build.spiffs_pagesize=256 phoenix_v2.build.spiffs_pagesize=256
phoenix_v2.build.debug_optim=
phoenix_v2.build.debug_port= phoenix_v2.build.debug_port=
phoenix_v2.build.debug_level= phoenix_v2.build.debug_level=
phoenix_v2.menu.xtal.80=80 MHz phoenix_v2.menu.xtal.80=80 MHz
@ -6410,6 +6594,12 @@ phoenix_v2.menu.dbg.Serial1=Serial1
phoenix_v2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 phoenix_v2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
phoenix_v2.menu.lvl.None____=None phoenix_v2.menu.lvl.None____=None
phoenix_v2.menu.lvl.None____.build.debug_level= phoenix_v2.menu.lvl.None____.build.debug_level=
phoenix_v2.menu.optim.Smallest=None
phoenix_v2.menu.optim.Smallest.build.debug_optim=-Os
phoenix_v2.menu.optim.Lite=Lite
phoenix_v2.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
phoenix_v2.menu.optim.Full=Optimum
phoenix_v2.menu.optim.Full.build.debug_optim=-Og
phoenix_v2.menu.lvl.SSL=SSL phoenix_v2.menu.lvl.SSL=SSL
phoenix_v2.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL phoenix_v2.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
phoenix_v2.menu.lvl.TLS_MEM=TLS_MEM phoenix_v2.menu.lvl.TLS_MEM=TLS_MEM
@ -6515,6 +6705,7 @@ eduinowifi.serial.disableRTS=true
eduinowifi.build.mcu=esp8266 eduinowifi.build.mcu=esp8266
eduinowifi.build.core=esp8266 eduinowifi.build.core=esp8266
eduinowifi.build.spiffs_pagesize=256 eduinowifi.build.spiffs_pagesize=256
eduinowifi.build.debug_optim=
eduinowifi.build.debug_port= eduinowifi.build.debug_port=
eduinowifi.build.debug_level= eduinowifi.build.debug_level=
eduinowifi.menu.xtal.80=80 MHz eduinowifi.menu.xtal.80=80 MHz
@ -6622,6 +6813,12 @@ eduinowifi.menu.dbg.Serial1=Serial1
eduinowifi.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 eduinowifi.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
eduinowifi.menu.lvl.None____=None eduinowifi.menu.lvl.None____=None
eduinowifi.menu.lvl.None____.build.debug_level= eduinowifi.menu.lvl.None____.build.debug_level=
eduinowifi.menu.optim.Smallest=None
eduinowifi.menu.optim.Smallest.build.debug_optim=-Os
eduinowifi.menu.optim.Lite=Lite
eduinowifi.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
eduinowifi.menu.optim.Full=Optimum
eduinowifi.menu.optim.Full.build.debug_optim=-Og
eduinowifi.menu.lvl.SSL=SSL eduinowifi.menu.lvl.SSL=SSL
eduinowifi.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL eduinowifi.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
eduinowifi.menu.lvl.TLS_MEM=TLS_MEM eduinowifi.menu.lvl.TLS_MEM=TLS_MEM
@ -6727,6 +6924,7 @@ wiolink.serial.disableRTS=true
wiolink.build.mcu=esp8266 wiolink.build.mcu=esp8266
wiolink.build.core=esp8266 wiolink.build.core=esp8266
wiolink.build.spiffs_pagesize=256 wiolink.build.spiffs_pagesize=256
wiolink.build.debug_optim=
wiolink.build.debug_port= wiolink.build.debug_port=
wiolink.build.debug_level= wiolink.build.debug_level=
wiolink.menu.xtal.80=80 MHz wiolink.menu.xtal.80=80 MHz
@ -6834,6 +7032,12 @@ wiolink.menu.dbg.Serial1=Serial1
wiolink.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 wiolink.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
wiolink.menu.lvl.None____=None wiolink.menu.lvl.None____=None
wiolink.menu.lvl.None____.build.debug_level= wiolink.menu.lvl.None____.build.debug_level=
wiolink.menu.optim.Smallest=None
wiolink.menu.optim.Smallest.build.debug_optim=-Os
wiolink.menu.optim.Lite=Lite
wiolink.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
wiolink.menu.optim.Full=Optimum
wiolink.menu.optim.Full.build.debug_optim=-Og
wiolink.menu.lvl.SSL=SSL wiolink.menu.lvl.SSL=SSL
wiolink.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL wiolink.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
wiolink.menu.lvl.TLS_MEM=TLS_MEM wiolink.menu.lvl.TLS_MEM=TLS_MEM
@ -6939,6 +7143,7 @@ blynk.serial.disableRTS=true
blynk.build.mcu=esp8266 blynk.build.mcu=esp8266
blynk.build.core=esp8266 blynk.build.core=esp8266
blynk.build.spiffs_pagesize=256 blynk.build.spiffs_pagesize=256
blynk.build.debug_optim=
blynk.build.debug_port= blynk.build.debug_port=
blynk.build.debug_level= blynk.build.debug_level=
blynk.menu.xtal.80=80 MHz blynk.menu.xtal.80=80 MHz
@ -7046,6 +7251,12 @@ blynk.menu.dbg.Serial1=Serial1
blynk.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 blynk.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
blynk.menu.lvl.None____=None blynk.menu.lvl.None____=None
blynk.menu.lvl.None____.build.debug_level= blynk.menu.lvl.None____.build.debug_level=
blynk.menu.optim.Smallest=None
blynk.menu.optim.Smallest.build.debug_optim=-Os
blynk.menu.optim.Lite=Lite
blynk.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
blynk.menu.optim.Full=Optimum
blynk.menu.optim.Full.build.debug_optim=-Og
blynk.menu.lvl.SSL=SSL blynk.menu.lvl.SSL=SSL
blynk.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL blynk.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
blynk.menu.lvl.TLS_MEM=TLS_MEM blynk.menu.lvl.TLS_MEM=TLS_MEM
@ -7151,6 +7362,7 @@ thing.serial.disableRTS=true
thing.build.mcu=esp8266 thing.build.mcu=esp8266
thing.build.core=esp8266 thing.build.core=esp8266
thing.build.spiffs_pagesize=256 thing.build.spiffs_pagesize=256
thing.build.debug_optim=
thing.build.debug_port= thing.build.debug_port=
thing.build.debug_level= thing.build.debug_level=
thing.menu.xtal.80=80 MHz thing.menu.xtal.80=80 MHz
@ -7258,6 +7470,12 @@ thing.menu.dbg.Serial1=Serial1
thing.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 thing.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
thing.menu.lvl.None____=None thing.menu.lvl.None____=None
thing.menu.lvl.None____.build.debug_level= thing.menu.lvl.None____.build.debug_level=
thing.menu.optim.Smallest=None
thing.menu.optim.Smallest.build.debug_optim=-Os
thing.menu.optim.Lite=Lite
thing.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
thing.menu.optim.Full=Optimum
thing.menu.optim.Full.build.debug_optim=-Og
thing.menu.lvl.SSL=SSL thing.menu.lvl.SSL=SSL
thing.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL thing.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
thing.menu.lvl.TLS_MEM=TLS_MEM thing.menu.lvl.TLS_MEM=TLS_MEM
@ -7363,6 +7581,7 @@ thingdev.serial.disableRTS=true
thingdev.build.mcu=esp8266 thingdev.build.mcu=esp8266
thingdev.build.core=esp8266 thingdev.build.core=esp8266
thingdev.build.spiffs_pagesize=256 thingdev.build.spiffs_pagesize=256
thingdev.build.debug_optim=
thingdev.build.debug_port= thingdev.build.debug_port=
thingdev.build.debug_level= thingdev.build.debug_level=
thingdev.menu.xtal.80=80 MHz thingdev.menu.xtal.80=80 MHz
@ -7470,6 +7689,12 @@ thingdev.menu.dbg.Serial1=Serial1
thingdev.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 thingdev.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
thingdev.menu.lvl.None____=None thingdev.menu.lvl.None____=None
thingdev.menu.lvl.None____.build.debug_level= thingdev.menu.lvl.None____.build.debug_level=
thingdev.menu.optim.Smallest=None
thingdev.menu.optim.Smallest.build.debug_optim=-Os
thingdev.menu.optim.Lite=Lite
thingdev.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
thingdev.menu.optim.Full=Optimum
thingdev.menu.optim.Full.build.debug_optim=-Og
thingdev.menu.lvl.SSL=SSL thingdev.menu.lvl.SSL=SSL
thingdev.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL thingdev.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
thingdev.menu.lvl.TLS_MEM=TLS_MEM thingdev.menu.lvl.TLS_MEM=TLS_MEM
@ -7575,6 +7800,7 @@ esp210.build.mcu=esp8266
esp210.build.core=esp8266 esp210.build.core=esp8266
esp210.build.variant=generic esp210.build.variant=generic
esp210.build.spiffs_pagesize=256 esp210.build.spiffs_pagesize=256
esp210.build.debug_optim=
esp210.build.debug_port= esp210.build.debug_port=
esp210.build.debug_level= esp210.build.debug_level=
esp210.menu.xtal.80=80 MHz esp210.menu.xtal.80=80 MHz
@ -7682,6 +7908,12 @@ esp210.menu.dbg.Serial1=Serial1
esp210.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 esp210.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
esp210.menu.lvl.None____=None esp210.menu.lvl.None____=None
esp210.menu.lvl.None____.build.debug_level= esp210.menu.lvl.None____.build.debug_level=
esp210.menu.optim.Smallest=None
esp210.menu.optim.Smallest.build.debug_optim=-Os
esp210.menu.optim.Lite=Lite
esp210.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
esp210.menu.optim.Full=Optimum
esp210.menu.optim.Full.build.debug_optim=-Og
esp210.menu.lvl.SSL=SSL esp210.menu.lvl.SSL=SSL
esp210.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL esp210.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
esp210.menu.lvl.TLS_MEM=TLS_MEM esp210.menu.lvl.TLS_MEM=TLS_MEM
@ -7787,6 +8019,7 @@ espinotee.serial.disableRTS=true
espinotee.build.mcu=esp8266 espinotee.build.mcu=esp8266
espinotee.build.core=esp8266 espinotee.build.core=esp8266
espinotee.build.spiffs_pagesize=256 espinotee.build.spiffs_pagesize=256
espinotee.build.debug_optim=
espinotee.build.debug_port= espinotee.build.debug_port=
espinotee.build.debug_level= espinotee.build.debug_level=
espinotee.menu.xtal.80=80 MHz espinotee.menu.xtal.80=80 MHz
@ -7894,6 +8127,12 @@ espinotee.menu.dbg.Serial1=Serial1
espinotee.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 espinotee.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
espinotee.menu.lvl.None____=None espinotee.menu.lvl.None____=None
espinotee.menu.lvl.None____.build.debug_level= espinotee.menu.lvl.None____.build.debug_level=
espinotee.menu.optim.Smallest=None
espinotee.menu.optim.Smallest.build.debug_optim=-Os
espinotee.menu.optim.Lite=Lite
espinotee.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
espinotee.menu.optim.Full=Optimum
espinotee.menu.optim.Full.build.debug_optim=-Og
espinotee.menu.lvl.SSL=SSL espinotee.menu.lvl.SSL=SSL
espinotee.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL espinotee.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
espinotee.menu.lvl.TLS_MEM=TLS_MEM espinotee.menu.lvl.TLS_MEM=TLS_MEM
@ -7999,6 +8238,7 @@ wifi_kit_8.serial.disableRTS=true
wifi_kit_8.build.mcu=esp8266 wifi_kit_8.build.mcu=esp8266
wifi_kit_8.build.core=esp8266 wifi_kit_8.build.core=esp8266
wifi_kit_8.build.spiffs_pagesize=256 wifi_kit_8.build.spiffs_pagesize=256
wifi_kit_8.build.debug_optim=
wifi_kit_8.build.debug_port= wifi_kit_8.build.debug_port=
wifi_kit_8.build.debug_level= wifi_kit_8.build.debug_level=
wifi_kit_8.menu.xtal.80=80 MHz wifi_kit_8.menu.xtal.80=80 MHz
@ -8106,6 +8346,12 @@ wifi_kit_8.menu.dbg.Serial1=Serial1
wifi_kit_8.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 wifi_kit_8.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
wifi_kit_8.menu.lvl.None____=None wifi_kit_8.menu.lvl.None____=None
wifi_kit_8.menu.lvl.None____.build.debug_level= wifi_kit_8.menu.lvl.None____.build.debug_level=
wifi_kit_8.menu.optim.Smallest=None
wifi_kit_8.menu.optim.Smallest.build.debug_optim=-Os
wifi_kit_8.menu.optim.Lite=Lite
wifi_kit_8.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
wifi_kit_8.menu.optim.Full=Optimum
wifi_kit_8.menu.optim.Full.build.debug_optim=-Og
wifi_kit_8.menu.lvl.SSL=SSL wifi_kit_8.menu.lvl.SSL=SSL
wifi_kit_8.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL wifi_kit_8.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
wifi_kit_8.menu.lvl.TLS_MEM=TLS_MEM wifi_kit_8.menu.lvl.TLS_MEM=TLS_MEM
@ -8211,6 +8457,7 @@ wifiduino.serial.disableRTS=true
wifiduino.build.mcu=esp8266 wifiduino.build.mcu=esp8266
wifiduino.build.core=esp8266 wifiduino.build.core=esp8266
wifiduino.build.spiffs_pagesize=256 wifiduino.build.spiffs_pagesize=256
wifiduino.build.debug_optim=
wifiduino.build.debug_port= wifiduino.build.debug_port=
wifiduino.build.debug_level= wifiduino.build.debug_level=
wifiduino.menu.xtal.80=80 MHz wifiduino.menu.xtal.80=80 MHz
@ -8318,6 +8565,12 @@ wifiduino.menu.dbg.Serial1=Serial1
wifiduino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 wifiduino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
wifiduino.menu.lvl.None____=None wifiduino.menu.lvl.None____=None
wifiduino.menu.lvl.None____.build.debug_level= wifiduino.menu.lvl.None____.build.debug_level=
wifiduino.menu.optim.Smallest=None
wifiduino.menu.optim.Smallest.build.debug_optim=-Os
wifiduino.menu.optim.Lite=Lite
wifiduino.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
wifiduino.menu.optim.Full=Optimum
wifiduino.menu.optim.Full.build.debug_optim=-Og
wifiduino.menu.lvl.SSL=SSL wifiduino.menu.lvl.SSL=SSL
wifiduino.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL wifiduino.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
wifiduino.menu.lvl.TLS_MEM=TLS_MEM wifiduino.menu.lvl.TLS_MEM=TLS_MEM
@ -8440,6 +8693,7 @@ wifinfo.serial.disableRTS=true
wifinfo.build.mcu=esp8266 wifinfo.build.mcu=esp8266
wifinfo.build.core=esp8266 wifinfo.build.core=esp8266
wifinfo.build.spiffs_pagesize=256 wifinfo.build.spiffs_pagesize=256
wifinfo.build.debug_optim=
wifinfo.build.debug_port= wifinfo.build.debug_port=
wifinfo.build.debug_level= wifinfo.build.debug_level=
wifinfo.menu.xtal.80=80 MHz wifinfo.menu.xtal.80=80 MHz
@ -8586,6 +8840,12 @@ wifinfo.menu.dbg.Serial1=Serial1
wifinfo.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 wifinfo.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
wifinfo.menu.lvl.None____=None wifinfo.menu.lvl.None____=None
wifinfo.menu.lvl.None____.build.debug_level= wifinfo.menu.lvl.None____.build.debug_level=
wifinfo.menu.optim.Smallest=None
wifinfo.menu.optim.Smallest.build.debug_optim=-Os
wifinfo.menu.optim.Lite=Lite
wifinfo.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
wifinfo.menu.optim.Full=Optimum
wifinfo.menu.optim.Full.build.debug_optim=-Og
wifinfo.menu.lvl.SSL=SSL wifinfo.menu.lvl.SSL=SSL
wifinfo.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL wifinfo.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
wifinfo.menu.lvl.TLS_MEM=TLS_MEM wifinfo.menu.lvl.TLS_MEM=TLS_MEM
@ -8691,6 +8951,7 @@ cw01.serial.disableRTS=true
cw01.build.mcu=esp8266 cw01.build.mcu=esp8266
cw01.build.core=esp8266 cw01.build.core=esp8266
cw01.build.spiffs_pagesize=256 cw01.build.spiffs_pagesize=256
cw01.build.debug_optim=
cw01.build.debug_port= cw01.build.debug_port=
cw01.build.debug_level= cw01.build.debug_level=
cw01.menu.xtal.80=80 MHz cw01.menu.xtal.80=80 MHz
@ -8801,6 +9062,12 @@ cw01.menu.dbg.Serial1=Serial1
cw01.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 cw01.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1
cw01.menu.lvl.None____=None cw01.menu.lvl.None____=None
cw01.menu.lvl.None____.build.debug_level= cw01.menu.lvl.None____.build.debug_level=
cw01.menu.optim.Smallest=None
cw01.menu.optim.Smallest.build.debug_optim=-Os
cw01.menu.optim.Lite=Lite
cw01.menu.optim.Lite.build.debug_optim=-Os -fno-optimize-sibling-calls
cw01.menu.optim.Full=Optimum
cw01.menu.optim.Full.build.debug_optim=-Og
cw01.menu.lvl.SSL=SSL cw01.menu.lvl.SSL=SSL
cw01.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL cw01.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL
cw01.menu.lvl.TLS_MEM=TLS_MEM cw01.menu.lvl.TLS_MEM=TLS_MEM

View File

@ -4,8 +4,13 @@
#include <stddef.h> #include <stddef.h>
#include <stdint.h> #include <stdint.h>
#define _DEBUG_LEAF_FUNCTION(...) __asm__ __volatile__("" ::: "a0", "memory")
#ifdef DEBUG_ESP_CORE #ifdef DEBUG_ESP_CORE
#define DEBUGV(fmt, ...) ::printf((PGM_P)PSTR(fmt), ##__VA_ARGS__) #define DEBUGV(fmt, ...) ::printf((PGM_P)PSTR(fmt), ##__VA_ARGS__)
#define DEBUG_LEAF_FUNCTION _DEBUG_LEAF_FUNCTION
#else
#define DEBUG_LEAF_FUNCTION(...)
#endif #endif
#ifndef DEBUGV #ifndef DEBUGV

View File

@ -12,42 +12,42 @@ Example:
Exception (0): epc1=0x402103f4 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000 Exception (0): epc1=0x402103f4 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000
ctx: sys ctx: sys
sp: 3ffffc10 end: 3fffffb0 offset: 01a0 sp: 3ffffc10 end: 3fffffb0 offset: 01a0
>>>stack>>> >>>stack>>>
3ffffdb0: 40223e00 3fff6f50 00000010 60000600 3ffffdb0: 40223e00 3fff6f50 00000010 60000600
3ffffdc0: 00000001 4021f774 3fffc250 4000050c 3ffffdc0: 00000001 4021f774 3fffc250 4000050c
3ffffdd0: 400043d5 00000030 00000016 ffffffff 3ffffdd0: 400043d5 00000030 00000016 ffffffff
3ffffde0: 400044ab 3fffc718 3ffffed0 08000000 3ffffde0: 400044ab 3fffc718 3ffffed0 08000000
3ffffdf0: 60000200 08000000 00000003 00000000 3ffffdf0: 60000200 08000000 00000003 00000000
3ffffe00: 0000ffff 00000001 04000002 003fd000 3ffffe00: 0000ffff 00000001 04000002 003fd000
3ffffe10: 3fff7188 000003fd 3fff2564 00000030 3ffffe10: 3fff7188 000003fd 3fff2564 00000030
3ffffe20: 40101709 00000008 00000008 00000020 3ffffe20: 40101709 00000008 00000008 00000020
3ffffe30: c1948db3 394c5e70 7f2060f2 c6ba0c87 3ffffe30: c1948db3 394c5e70 7f2060f2 c6ba0c87
3ffffe40: 3fff7058 00000001 40238d41 3fff6ff0 3ffffe40: 3fff7058 00000001 40238d41 3fff6ff0
3ffffe50: 3fff6f50 00000010 60000600 00000020 3ffffe50: 3fff6f50 00000010 60000600 00000020
3ffffe60: 402301a8 3fff7098 3fff7014 40238c77 3ffffe60: 402301a8 3fff7098 3fff7014 40238c77
3ffffe70: 4022fb6c 40230ebe 3fff1a5b 3fff6f00 3ffffe70: 4022fb6c 40230ebe 3fff1a5b 3fff6f00
3ffffe80: 3ffffec8 00000010 40231061 3fff0f90 3ffffe80: 3ffffec8 00000010 40231061 3fff0f90
3ffffe90: 3fff6848 3ffed0c0 60000600 3fff6ae0 3ffffe90: 3fff6848 3ffed0c0 60000600 3fff6ae0
3ffffea0: 3fff0f90 3fff0f90 3fff6848 3fff6d40 3ffffea0: 3fff0f90 3fff0f90 3fff6848 3fff6d40
3ffffeb0: 3fff28e8 40101233 d634fe1a fffeffff 3ffffeb0: 3fff28e8 40101233 d634fe1a fffeffff
3ffffec0: 00000001 00000000 4022d5d6 3fff6848 3ffffec0: 00000001 00000000 4022d5d6 3fff6848
3ffffed0: 00000002 4000410f 3fff2394 3fff6848 3ffffed0: 00000002 4000410f 3fff2394 3fff6848
3ffffee0: 3fffc718 40004a3c 000003fd 3fff7188 3ffffee0: 3fffc718 40004a3c 000003fd 3fff7188
3ffffef0: 3fffc718 40101510 00000378 3fff1a5b 3ffffef0: 3fffc718 40101510 00000378 3fff1a5b
3fffff00: 000003fd 4021d2e7 00000378 000003ff 3fffff00: 000003fd 4021d2e7 00000378 000003ff
3fffff10: 00001000 4021d37d 3fff2564 000003ff 3fffff10: 00001000 4021d37d 3fff2564 000003ff
3fffff20: 000003fd 60000600 003fd000 3fff2564 3fffff20: 000003fd 60000600 003fd000 3fff2564
3fffff30: ffffff00 55aa55aa 00000312 0000001c 3fffff30: ffffff00 55aa55aa 00000312 0000001c
3fffff40: 0000001c 0000008a 0000006d 000003ff 3fffff40: 0000001c 0000008a 0000006d 000003ff
3fffff50: 4021d224 3ffecf90 00000000 3ffed0c0 3fffff50: 4021d224 3ffecf90 00000000 3ffed0c0
3fffff60: 00000001 4021c2e9 00000003 3fff1238 3fffff60: 00000001 4021c2e9 00000003 3fff1238
3fffff70: 4021c071 3ffecf84 3ffecf30 0026a2b0 3fffff70: 4021c071 3ffecf84 3ffecf30 0026a2b0
3fffff80: 4021c0b6 3fffdab0 00000000 3fffdcb0 3fffff80: 4021c0b6 3fffdab0 00000000 3fffdcb0
3fffff90: 3ffecf40 3fffdab0 00000000 3fffdcc0 3fffff90: 3ffecf40 3fffdab0 00000000 3fffdcc0
3fffffa0: 40000f49 40000f49 3fffdab0 40000f49 3fffffa0: 40000f49 40000f49 3fffdab0 40000f49
<<<stack<<< <<<stack<<<
The first number after ``Exception`` gives the cause of the reset. a The first number after ``Exception`` gives the cause of the reset. a
@ -57,7 +57,10 @@ the hex after are the stack dump.
Decode Decode
~~~~~~ ~~~~~~
It's possible to decode the Stack to readable information. For more info see the `Esp Exception Decoder <https://github.com/me-no-dev/EspExceptionDecoder>`__ tool. It's possible to decode the Stack to readable information.
You can get a copy and read about the `Esp Exception Decoder <https://github.com/me-no-dev/EspExceptionDecoder>`__ tool.
For a troubleshooting example using the Exception Decoder Tool, read `FAQ: My ESP Crashes <../faq/a02-my-esp-crashes.rst#exception-decoder>`__.
.. figure:: ESP_Exception_Decoderp.png .. figure:: ESP_Exception_Decoderp.png
:alt: ESP Exception Decoder :alt: ESP Exception Decoder

View File

@ -11,6 +11,7 @@ My ESP crashes running some code. How to troubleshoot it?
- `Exception <#exception>`__ - `Exception <#exception>`__
- `Watchdog <#watchdog>`__ - `Watchdog <#watchdog>`__
- `Exception Decoder <#exception-decoder>`__ - `Exception Decoder <#exception-decoder>`__
- `Improving Exception Decoder Results <#improving-exception-decoder-results>`__
- `Other Common Causes for Crashes <#other-causes-for-crashes>`__ - `Other Common Causes for Crashes <#other-causes-for-crashes>`__
- `If at the Wall, Enter an Issue - `If at the Wall, Enter an Issue
Report <#if-at-the-wall-enter-an-issue-report>`__ Report <#if-at-the-wall-enter-an-issue-report>`__
@ -236,6 +237,7 @@ If you don't have any code for troubleshooting, use the example below:
void loop(){} void loop(){}
Enable the Out-Of-Memory (*OOM*) debug option (in the *Tools > Debug Level* Enable the Out-Of-Memory (*OOM*) debug option (in the *Tools > Debug Level*
menu), compile/flash/upload this code to your ESP (Ctrl+U) and start Serial menu), compile/flash/upload this code to your ESP (Ctrl+U) and start Serial
Monitor (Ctrl+Shift+M). You should shortly see ESP restarting every couple Monitor (Ctrl+Shift+M). You should shortly see ESP restarting every couple
@ -270,31 +272,92 @@ Decoder <https://github.com/me-no-dev/EspExceptionDecoder>`__ you can
track down where the module is crashing whenever you see the stack trace track down where the module is crashing whenever you see the stack trace
dropped. The same procedure applies to crashes caused by exceptions. dropped. The same procedure applies to crashes caused by exceptions.
Note: To decode the exact line of code where the application Note, to decode the exact line of code where the application
crashed, you need to use ESP Exception Decoder in context of sketch crashed, you need to use ESP Exception Decoder in context of sketch
you have just loaded to the module for diagnosis. Decoder is not you have just loaded to the module for diagnosis. Decoder is not
able to correctly decode the stack trace dropped by some other able to correctly decode the stack trace dropped by some other
application not compiled and loaded from your Arduino IDE. application not compiled and loaded from your Arduino IDE.
Improving Exception Decoder Results
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Due to the limited resources on the device, our default compiler optimizations
focus on creating the smallest code size (``.bin`` file). The GCC compiler's
option ``-Os`` contains the base set of optimizations used. This set is fine for
release but not ideal for debugging.
Our view of a crash is often the `Stack Dump <../Troubleshooting/stack_dump.rst>`__
which gets copy/pasted into an Exception Decoder.
For some situations, the optimizer doesn't write caller return addresses to the
stack. When we crash, the list of functions called is missing. And when the
crash occurs in a leaf function, there is seldom if ever any evidence of who
called.
With the ``-Os`` option, functions called once are inlined into the calling
function. A chain of these functions can optimize down to the calling function.
When the crash occurs in one of these chain functions, the actual location in
the source code is no longer available.
When you select ``Debug Optimization: Lite`` on the Arduino IDE Tools menu, it
turns off ``optimize-sibling-calls``. Turning off this optimization allows more
caller addresses to be written to the stack, improving the results from the
Exception Decoder. Without this option, the callers involved in the crash may be
missing from the Decoder results. Because of the limited stack space, there is
the remote possibility that removing this optimization could lead to more
frequent stack overflows. You only want to do this in a debug setting. This
option does not help the chained function issue.
When you select ``Debug Optimization: Optimum``, you get an even more complete
stack trace. For example, chained function calls may show up. This selection
uses the compiler option ``-Og``. GCC considers this the ideal optimization for
the "edit-compile-debug cycle" ... "producing debuggable code." You can read the
specifics at `GCC's Optimize Options <https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html>`__
When global optimization creates build size issues or stack overflow issues,
select ``Debug Optimization: None``, and use a targeted approach with
``#pragma GCC optimize("Og")`` at the module level. Or, if you want to use a
different set of optimizations, you can set optimizations through build options.
Read more at `Global Build Options <a06-global-build-options.rst>`__.
For non-Arduino IDE build platforms, you may need to research how to add build
options. Some build platforms already use ``-Og`` for debug builds.
A crash in a leaf function may not leave the caller's address on the stack.
The return address can stay in a register for the duration of the call.
Resulting in a crash report identifying the crashing function without a
trace of who called. You can encourage the compiler to save the caller's
return address by adding an inline assembly trick
``__asm__ __volatile__("" ::: "a0", "memory");`` at the beginning of the
function's body. Or instead, for a debug build conditional option, use the
macro ``DEBUG_LEAF_FUNCTION()`` from ``#include <debug.h>``. For compiler
toolchain 3.2.0 and above, the ``-Og`` option is an alternative solution.
In some cases, adding ``#pragma GCC optimize("Og,no-ipa-pure-const")`` to a
module as well as using ``DEBUG_LEAF_FUNCTION()`` in a leaf function were
needed to display a complete call chain. Or use
``#pragma GCC optimize("Os,no-inline,no-optimize-sibling-calls,no-ipa-pure-const")``
if you require optimization ``-Os``.
Other Causes for Crashes Other Causes for Crashes
~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~
Interrupt Service Routines Interrupt Service Routines
By default, all functions are compiled into flash, which means that the By default, all functions are compiled into flash, which means that the
cache may kick in for that code. However, the cache currently can't be used cache may kick in for that code. However, the cache currently can't be used
during hardware interrupts. That means that, if you use a hardware ISR, such as during hardware interrupts. That means that, if you use a hardware ISR, such as
attachInterrupt(gpio, myISR, CHANGE) for a GPIO change, the ISR must have the attachInterrupt(gpio, myISR, CHANGE) for a GPIO change, the ISR must have the
IRAM_ATTR attribute declared. Not only that, but the entire function tree IRAM_ATTR attribute declared. Not only that, but the entire function tree
called from the ISR must also have the IRAM_ATTR declared. called from the ISR must also have the IRAM_ATTR declared.
Be aware that every function that has this attribute reduces available memory. Be aware that every function that has this attribute reduces available memory.
In addition, it is not possible to execute delay() or yield() from an ISR, In addition, it is not possible to execute delay() or yield() from an ISR,
or do blocking operations, or operations that disable the interrupts, e.g.: read or do blocking operations, or operations that disable the interrupts, e.g.: read
a DHT. a DHT.
Finally, an ISR has very high restrictions on timing for the executed code, meaning Finally, an ISR has very high restrictions on timing for the executed code, meaning
that executed code should not take longer than a very few microseconds. It is that executed code should not take longer than a very few microseconds. It is
considered best practice to set a flag within the ISR, and then from within the loop() considered best practice to set a flag within the ISR, and then from within the loop()
check and clear that flag, and execute code. check and clear that flag, and execute code.
@ -303,7 +366,7 @@ Asynchronous Callbacks
than ISRs, but some restrictions still apply. than ISRs, but some restrictions still apply.
It is not possible to execute delay() or yield() from an asynchronous callback. It is not possible to execute delay() or yield() from an asynchronous callback.
Timing is not as tight as an ISR, but it should remain below a few milliseconds. This Timing is not as tight as an ISR, but it should remain below a few milliseconds. This
is a guideline. The hard timing requirements depend on the WiFi configuration and is a guideline. The hard timing requirements depend on the WiFi configuration and
amount of traffic. In general, the CPU must not be hogged by the user code, as the amount of traffic. In general, the CPU must not be hogged by the user code, as the
longer it is away from servicing the WiFi stack, the more likely that memory corruption longer it is away from servicing the WiFi stack, the more likely that memory corruption
can happen. can happen.
@ -311,8 +374,8 @@ Asynchronous Callbacks
Memory, memory, memory Memory, memory, memory
Running out of heap is the **most common cause for crashes**. Because the build process for Running out of heap is the **most common cause for crashes**. Because the build process for
the ESP leaves out exceptions (they use memory), memory allocations that fail will do the ESP leaves out exceptions (they use memory), memory allocations that fail will do
so silently. A typical example is when setting or concatenating a large String. If so silently. A typical example is when setting or concatenating a large String. If
allocation has failed internally, then the internal string copy can corrupt data, and allocation has failed internally, then the internal string copy can corrupt data, and
the ESP will crash. the ESP will crash.
In addition, doing many String concatenations in sequence, e.g.: using operator+() In addition, doing many String concatenations in sequence, e.g.: using operator+()
@ -348,9 +411,9 @@ Memory, memory, memory
* If you use std libs like std::vector, make sure to call its ::reserve() method before filling it. This allows allocating only once, which reduces mem fragmentation, and makes sure that there are no empty unused slots left over in the container at the end. * If you use std libs like std::vector, make sure to call its ::reserve() method before filling it. This allows allocating only once, which reduces mem fragmentation, and makes sure that there are no empty unused slots left over in the container at the end.
Stack Stack
  The amount of stack in the ESP is tiny at only 4KB. For normal development in large systems, it   The amount of stack in the ESP is tiny at only 4KB. For normal development in large systems, it
is good practice to use and abuse the stack, because it is faster for allocation/deallocation, the scope of the object is well defined, and deallocation automatically happens in reverse order as allocation, which means no mem fragmentation. However, with the tiny amount of stack available in the ESP, that practice is not really viable, at least not for big objects. is good practice to use and abuse the stack, because it is faster for allocation/deallocation, the scope of the object is well defined, and deallocation automatically happens in reverse order as allocation, which means no mem fragmentation. However, with the tiny amount of stack available in the ESP, that practice is not really viable, at least not for big objects.
* Large objects that have internally managed memory, such as String, std::string, std::vector, etc, are ok on the stack, because they internally allocate their buffers on the heap. * Large objects that have internally managed memory, such as String, std::string, std::vector, etc, are ok on the stack, because they internally allocate their buffers on the heap.
* Large arrays on the stack, such as uint8_t buffer[2048] should be avoided on the stack and should be dynamically allocated instead (consider smart pointers). * Large arrays on the stack, such as uint8_t buffer[2048] should be avoided on the stack and should be dynamically allocated instead (consider smart pointers).
* Objects that have large data members, such as large arrays, should also be avoided on the stack, and should be dynamically allocated (consider smart pointers). * Objects that have large data members, such as large arrays, should also be avoided on the stack, and should be dynamically allocated (consider smart pointers).
@ -392,7 +455,7 @@ or `esp8266 / Arduino <https://github.com/esp8266/Arduino>`__ core,
types and versions of O/S, you need to provide exact information on what types and versions of O/S, you need to provide exact information on what
your application is about. Only then, people willing to look into your your application is about. Only then, people willing to look into your
issue may be able to compare it to a configuration they are familiar with. issue may be able to compare it to a configuration they are familiar with.
If you are lucky, they may even attempt to reproduce your issue on their If you are lucky, they may even attempt to reproduce your issue on their
own equipment! own equipment!
This will be far more difficult if you provide only vague details, This will be far more difficult if you provide only vague details,
so somebody would need to ask you to find out what is really happening. so somebody would need to ask you to find out what is really happening.

View File

@ -181,10 +181,10 @@ their builds.
There are two solutions to this issue: There are two solutions to this issue:
1. Turn off the “Aggressively Cache Compiled core” feature, by setting 1. Do nothing, and rely on aggressive cache workaround built into the
script.
2. Turn off the “Aggressively Cache Compiled core” feature, by setting
``compiler.cache_core=false``. ``compiler.cache_core=false``.
2. Rely on the not ideal fail-safe, aggressive cache workaround built
into the script.
Using “compiler.cache_core=false” Using “compiler.cache_core=false”
--------------------------------- ---------------------------------
@ -253,14 +253,10 @@ problem would be cleared after a reboot. Or you can manually cleanup the
**Arduino command-line option overrides** **Arduino command-line option overrides**
The script needs to know the working value of ``compiler.cache_core`` If you are building with ``compiler.cache_core=true`` no action is
that the Arduino IDE uses when building. This script can learn the state needed. If ``false`` the script would benefit by knowing that.
through documented locations; however, the Arduino IDE has two
command-line options that can alter the results the Arduino IDE uses
internally. And, the Arduino IDE does not provide a means for a script
to learn the override value.
These two command-line options are the problem: When using either of these two command-line options:
:: ::

View File

@ -127,7 +127,31 @@ There are a number of options.
- The last (``NoAssert - NDEBUG``) is even quieter than the first (some - The last (``NoAssert - NDEBUG``) is even quieter than the first (some
internal guards are skipped to save more flash). internal guards are skipped to save more flash).
- The other ones may be used when asked by a maintainer or if you are a - The other ones may be used when asked by a maintainer or if you are a
developper trying to debug some issues. developer trying to debug some issues.
Debug Optimization
~~~~~~~~~~~~~~~~~~
Due to the limited resources on the device, our default compiler optimizations
focus on creating the smallest code size (``.bin`` file). That is fine for
release but not ideal for debugging.
``Debug Optimization`` use to improve Exception Decoder results.
- ``Lite`` impact on code size uses ``-fno-optimize-sibling-calls`` to alter
the ``-Os`` compiler option to place more caller addresses on the Stack.
- ``Optimum`` offers better quality stack content for the Exception Decoder at
the expense of a larger code size. It uses the ``-Og`` compiler option, which
turns off optimizations that can make debugging difficult while keeping
others.
- ``None`` no changes for debugging continue using ``-Os``.
Take note some sketches may start working after changing the optimization. Or
fail less often. And it is also possible (not likely) that source code that
was working with ``-Os`` may break with ``-Og``.
For more topic depth, read `Improving Exception Decoder Results <faq/a02-my-esp-crashes.rst#improving-exception-decoder-results>`__
lwIP variant lwIP variant
~~~~~~~~~~~~ ~~~~~~~~~~~~

View File

@ -8,7 +8,7 @@
* this line is ignored * this line is ignored
*@create-file:build.opt@ *@create-file:build.opt@
# this line is ignored # this line is ignored
-O3 -Og
// -fanalyzer // -fanalyzer
-DUMM_STATS_FULL=1 -DUMM_STATS_FULL=1
*/ */

View File

@ -44,6 +44,9 @@ build.stdcpp_level=-std=gnu++17
build.stacksmash_flags= build.stacksmash_flags=
# Default - never leave undefined
build.debug_optim=-Os
build.float=-u _printf_float -u _scanf_float build.float=-u _printf_float -u _scanf_float
build.led= build.led=
@ -70,24 +73,24 @@ compiler.path={runtime.tools.xtensa-lx106-elf-gcc.path}/bin/
compiler.sdk.path={runtime.platform.path}/tools/sdk compiler.sdk.path={runtime.platform.path}/tools/sdk
compiler.libc.path={runtime.platform.path}/tools/sdk/libc/xtensa-lx106-elf compiler.libc.path={runtime.platform.path}/tools/sdk/libc/xtensa-lx106-elf
compiler.cpreprocessor.flags=-D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -D_GNU_SOURCE -DESP8266 {build.opt.flags} "-I{compiler.sdk.path}/include" "-I{compiler.sdk.path}/{build.lwip_include}" "-I{compiler.libc.path}/include" "-I{build.path}/core" compiler.cpreprocessor.flags=-D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -D_GNU_SOURCE -DESP8266 {build.debug_optim} {build.opt.flags} "-I{compiler.sdk.path}/include" "-I{compiler.sdk.path}/{build.lwip_include}" "-I{compiler.libc.path}/include" "-I{build.path}/core"
# support precompiled libraries in IDE v1.8.6+ # support precompiled libraries in IDE v1.8.6+
compiler.libraries.ldflags= compiler.libraries.ldflags=
compiler.c.cmd=xtensa-lx106-elf-gcc compiler.c.cmd=xtensa-lx106-elf-gcc
compiler.c.flags=-c "{compiler.warning_flags}-cflags" -std=gnu17 {build.stacksmash_flags} -Os -g -free -fipa-pta -Werror=return-type -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -falign-functions=4 -MMD -ffunction-sections -fdata-sections {build.exception_flags} {build.sslflags} {build.mmuflags} {build.non32xferflags} compiler.c.flags=-c "{compiler.warning_flags}-cflags" -std=gnu17 {build.stacksmash_flags} -g -free -fipa-pta -Werror=return-type -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -falign-functions=4 -MMD -ffunction-sections -fdata-sections {build.exception_flags} {build.sslflags} {build.mmuflags} {build.non32xferflags}
compiler.S.cmd=xtensa-lx106-elf-gcc compiler.S.cmd=xtensa-lx106-elf-gcc
compiler.S.flags=-c -g -x assembler-with-cpp -MMD -mlongcalls "-I{runtime.tools.xtensa-lx106-elf-gcc.path}/include/" compiler.S.flags=-c -g -x assembler-with-cpp -MMD -mlongcalls "-I{runtime.tools.xtensa-lx106-elf-gcc.path}/include/"
compiler.c.elf.flags=-g "{compiler.warning_flags}-cflags" -Os -nostdlib -Wl,--no-check-sections -u app_entry {build.float} -Wl,-static "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/lib/{build.sdk}" "-L{build.path}" "-L{compiler.libc.path}/lib" "-Tlocal.eagle.flash.ld" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read compiler.c.elf.flags=-g "{compiler.warning_flags}-cflags" -nostdlib -Wl,--no-check-sections -u app_entry {build.float} -Wl,-static "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/lib/{build.sdk}" "-L{build.path}" "-L{compiler.libc.path}/lib" "-Tlocal.eagle.flash.ld" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read
compiler.c.elf.cmd=xtensa-lx106-elf-gcc compiler.c.elf.cmd=xtensa-lx106-elf-gcc
compiler.c.elf.libs=-lhal -lphy -lpp -lnet80211 {build.lwip_lib} -lwpa -lcrypto -lmain -lwps -lbearssl -lespnow -lsmartconfig -lairkiss -lwpa2 {build.stdcpp_lib} -lm -lc -lgcc compiler.c.elf.libs=-lhal -lphy -lpp -lnet80211 {build.lwip_lib} -lwpa -lcrypto -lmain -lwps -lbearssl -lespnow -lsmartconfig -lairkiss -lwpa2 {build.stdcpp_lib} -lm -lc -lgcc
compiler.cpp.cmd=xtensa-lx106-elf-g++ compiler.cpp.cmd=xtensa-lx106-elf-g++
compiler.cpp.flags=-c "{compiler.warning_flags}-cppflags" {build.stacksmash_flags} -Os -g -free -fipa-pta -Werror=return-type -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 {build.stdcpp_level} -MMD -ffunction-sections -fdata-sections {build.exception_flags} {build.sslflags} {build.mmuflags} {build.non32xferflags} compiler.cpp.flags=-c "{compiler.warning_flags}-cppflags" {build.stacksmash_flags} -g -free -fipa-pta -Werror=return-type -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 {build.stdcpp_level} -MMD -ffunction-sections -fdata-sections {build.exception_flags} {build.sslflags} {build.mmuflags} {build.non32xferflags}
compiler.as.cmd=xtensa-lx106-elf-as compiler.as.cmd=xtensa-lx106-elf-as

View File

@ -1045,6 +1045,7 @@ macros = {
( '.build.core', 'esp8266' ), ( '.build.core', 'esp8266' ),
( '.build.variant', 'generic' ), ( '.build.variant', 'generic' ),
( '.build.spiffs_pagesize', '256' ), ( '.build.spiffs_pagesize', '256' ),
( '.build.debug_optim', '' ),
( '.build.debug_port', '' ), ( '.build.debug_port', '' ),
( '.build.debug_level', '' ), ( '.build.debug_level', '' ),
]), ]),
@ -1360,6 +1361,12 @@ def all_debug ():
( '.menu.dbg.Serial1.build.debug_port', '-DDEBUG_ESP_PORT=Serial1' ), ( '.menu.dbg.Serial1.build.debug_port', '-DDEBUG_ESP_PORT=Serial1' ),
( '.menu.lvl.None____', 'None' ), ( '.menu.lvl.None____', 'None' ),
( '.menu.lvl.None____.build.debug_level', '' ), ( '.menu.lvl.None____.build.debug_level', '' ),
( '.menu.optim.Smallest', 'None' ),
( '.menu.optim.Smallest.build.debug_optim', '-Os' ),
( '.menu.optim.Lite', 'Lite' ),
( '.menu.optim.Lite.build.debug_optim', '-Os -fno-optimize-sibling-calls' ),
( '.menu.optim.Full', 'Optimum' ),
( '.menu.optim.Full.build.debug_optim', '-Og' ),
]) ])
for optlist in options: for optlist in options:
@ -1740,6 +1747,7 @@ def all_boards ():
print('menu.ResetMethod=Reset Method') print('menu.ResetMethod=Reset Method')
print('menu.dbg=Debug port') print('menu.dbg=Debug port')
print('menu.lvl=Debug Level') print('menu.lvl=Debug Level')
print('menu.optim=Debug Optimization')
print('menu.ip=lwIP Variant') print('menu.ip=lwIP Variant')
print('menu.vt=VTables') print('menu.vt=VTables')
print('menu.exception=C++ Exceptions') print('menu.exception=C++ Exceptions')