From e67c95c9f2add556a4c945ccd683c08c0ed16872 Mon Sep 17 00:00:00 2001 From: M Hightower <27247790+mhightower83@users.noreply.github.com> Date: Sun, 29 Jan 2023 09:25:53 -0800 Subject: [PATCH 01/14] Update documentation Describe how to improve Exception Decoder results. Updated build option details. --- cores/esp8266/debug.h | 3 ++ doc/Troubleshooting/stack_dump.rst | 68 ++++++++++++++-------------- doc/faq/a02-my-esp-crashes.rst | 48 ++++++++++++++------ doc/faq/a06-global-build-options.rst | 18 +++----- 4 files changed, 78 insertions(+), 59 deletions(-) diff --git a/cores/esp8266/debug.h b/cores/esp8266/debug.h index e6dc124c57..b069a9c233 100644 --- a/cores/esp8266/debug.h +++ b/cores/esp8266/debug.h @@ -6,6 +6,9 @@ #ifdef DEBUG_ESP_CORE #define DEBUGV(fmt, ...) ::printf((PGM_P)PSTR(fmt), ##__VA_ARGS__) +#define DEBUG_LEAF_FUNCTION(...) __asm__ __volatile__("" ::: "a0", "memory") +#else +#define DEBUG_LEAF_FUNCTION(...) #endif #ifndef DEBUGV diff --git a/doc/Troubleshooting/stack_dump.rst b/doc/Troubleshooting/stack_dump.rst index c977fce56d..9dc0c70eea 100644 --- a/doc/Troubleshooting/stack_dump.rst +++ b/doc/Troubleshooting/stack_dump.rst @@ -12,42 +12,42 @@ Example: Exception (0): epc1=0x402103f4 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000 - ctx: sys + ctx: sys sp: 3ffffc10 end: 3fffffb0 offset: 01a0 >>>stack>>> - 3ffffdb0: 40223e00 3fff6f50 00000010 60000600 - 3ffffdc0: 00000001 4021f774 3fffc250 4000050c - 3ffffdd0: 400043d5 00000030 00000016 ffffffff - 3ffffde0: 400044ab 3fffc718 3ffffed0 08000000 - 3ffffdf0: 60000200 08000000 00000003 00000000 - 3ffffe00: 0000ffff 00000001 04000002 003fd000 - 3ffffe10: 3fff7188 000003fd 3fff2564 00000030 - 3ffffe20: 40101709 00000008 00000008 00000020 - 3ffffe30: c1948db3 394c5e70 7f2060f2 c6ba0c87 - 3ffffe40: 3fff7058 00000001 40238d41 3fff6ff0 - 3ffffe50: 3fff6f50 00000010 60000600 00000020 - 3ffffe60: 402301a8 3fff7098 3fff7014 40238c77 - 3ffffe70: 4022fb6c 40230ebe 3fff1a5b 3fff6f00 - 3ffffe80: 3ffffec8 00000010 40231061 3fff0f90 - 3ffffe90: 3fff6848 3ffed0c0 60000600 3fff6ae0 - 3ffffea0: 3fff0f90 3fff0f90 3fff6848 3fff6d40 - 3ffffeb0: 3fff28e8 40101233 d634fe1a fffeffff - 3ffffec0: 00000001 00000000 4022d5d6 3fff6848 - 3ffffed0: 00000002 4000410f 3fff2394 3fff6848 - 3ffffee0: 3fffc718 40004a3c 000003fd 3fff7188 - 3ffffef0: 3fffc718 40101510 00000378 3fff1a5b - 3fffff00: 000003fd 4021d2e7 00000378 000003ff - 3fffff10: 00001000 4021d37d 3fff2564 000003ff - 3fffff20: 000003fd 60000600 003fd000 3fff2564 - 3fffff30: ffffff00 55aa55aa 00000312 0000001c - 3fffff40: 0000001c 0000008a 0000006d 000003ff - 3fffff50: 4021d224 3ffecf90 00000000 3ffed0c0 - 3fffff60: 00000001 4021c2e9 00000003 3fff1238 - 3fffff70: 4021c071 3ffecf84 3ffecf30 0026a2b0 - 3fffff80: 4021c0b6 3fffdab0 00000000 3fffdcb0 - 3fffff90: 3ffecf40 3fffdab0 00000000 3fffdcc0 - 3fffffa0: 40000f49 40000f49 3fffdab0 40000f49 + 3ffffdb0: 40223e00 3fff6f50 00000010 60000600 + 3ffffdc0: 00000001 4021f774 3fffc250 4000050c + 3ffffdd0: 400043d5 00000030 00000016 ffffffff + 3ffffde0: 400044ab 3fffc718 3ffffed0 08000000 + 3ffffdf0: 60000200 08000000 00000003 00000000 + 3ffffe00: 0000ffff 00000001 04000002 003fd000 + 3ffffe10: 3fff7188 000003fd 3fff2564 00000030 + 3ffffe20: 40101709 00000008 00000008 00000020 + 3ffffe30: c1948db3 394c5e70 7f2060f2 c6ba0c87 + 3ffffe40: 3fff7058 00000001 40238d41 3fff6ff0 + 3ffffe50: 3fff6f50 00000010 60000600 00000020 + 3ffffe60: 402301a8 3fff7098 3fff7014 40238c77 + 3ffffe70: 4022fb6c 40230ebe 3fff1a5b 3fff6f00 + 3ffffe80: 3ffffec8 00000010 40231061 3fff0f90 + 3ffffe90: 3fff6848 3ffed0c0 60000600 3fff6ae0 + 3ffffea0: 3fff0f90 3fff0f90 3fff6848 3fff6d40 + 3ffffeb0: 3fff28e8 40101233 d634fe1a fffeffff + 3ffffec0: 00000001 00000000 4022d5d6 3fff6848 + 3ffffed0: 00000002 4000410f 3fff2394 3fff6848 + 3ffffee0: 3fffc718 40004a3c 000003fd 3fff7188 + 3ffffef0: 3fffc718 40101510 00000378 3fff1a5b + 3fffff00: 000003fd 4021d2e7 00000378 000003ff + 3fffff10: 00001000 4021d37d 3fff2564 000003ff + 3fffff20: 000003fd 60000600 003fd000 3fff2564 + 3fffff30: ffffff00 55aa55aa 00000312 0000001c + 3fffff40: 0000001c 0000008a 0000006d 000003ff + 3fffff50: 4021d224 3ffecf90 00000000 3ffed0c0 + 3fffff60: 00000001 4021c2e9 00000003 3fff1238 + 3fffff70: 4021c071 3ffecf84 3ffecf30 0026a2b0 + 3fffff80: 4021c0b6 3fffdab0 00000000 3fffdcb0 + 3fffff90: 3ffecf40 3fffdab0 00000000 3fffdcc0 + 3fffffa0: 40000f49 40000f49 3fffdab0 40000f49 <<`__. diff --git a/doc/faq/a02-my-esp-crashes.rst b/doc/faq/a02-my-esp-crashes.rst index 1fcc2cbaa8..3a95f9395e 100644 --- a/doc/faq/a02-my-esp-crashes.rst +++ b/doc/faq/a02-my-esp-crashes.rst @@ -236,6 +236,7 @@ If you don't have any code for troubleshooting, use the example below: void loop(){} + 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 Monitor (Ctrl+Shift+M). You should shortly see ESP restarting every couple @@ -270,31 +271,50 @@ Decoder `__ you can track down where the module is crashing whenever you see the stack trace dropped. The same procedure applies to crashes caused by exceptions. - Note: To decode the exact line of code where the application + Notes: + + To decode the exact line of code where the application crashed, you need to use ESP Exception Decoder in context of sketch you have just loaded to the module for diagnosis. Decoder is not able to correctly decode the stack trace dropped by some other application not compiled and loaded from your Arduino IDE. + To improve the results of the Exception Decoder, you can add + `-fno-optimize-sibling-calls` to your build options. For details on how + to do this, review `Global Build Options `__. + Turning off this optimization allows more caller addresses to be written + to the stack aiding in crash decoding. Because of the limited stack space, + there is the potential that removing this optimization could overflow the + stack and cause a crash. + + 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 `. + Other Causes for Crashes ~~~~~~~~~~~~~~~~~~~~~~~~ Interrupt Service Routines - 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 - 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 - IRAM_ATTR attribute declared. Not only that, but the entire function tree + 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 + 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 + IRAM_ATTR attribute declared. Not only that, but the entire function tree called from the ISR must also have the IRAM_ATTR declared. 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 a DHT. 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() check and clear that flag, and execute code. @@ -303,7 +323,7 @@ Asynchronous Callbacks than ISRs, but some restrictions still apply. 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 - 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 longer it is away from servicing the WiFi stack, the more likely that memory corruption can happen. @@ -311,8 +331,8 @@ Asynchronous Callbacks Memory, memory, memory 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 - 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 + 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 the ESP will crash. In addition, doing many String concatenations in sequence, e.g.: using operator+() @@ -348,9 +368,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. 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. - + * 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). * 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 +412,7 @@ or `esp8266 / Arduino `__ core, 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 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! 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. diff --git a/doc/faq/a06-global-build-options.rst b/doc/faq/a06-global-build-options.rst index 421933e96f..231dbc6baf 100644 --- a/doc/faq/a06-global-build-options.rst +++ b/doc/faq/a06-global-build-options.rst @@ -1,5 +1,3 @@ -:orphan: - How to specify global build defines and options =============================================== @@ -181,10 +179,10 @@ their builds. 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``. -2. Rely on the not ideal fail-safe, aggressive cache workaround built - into the script. Using “compiler.cache_core=false” --------------------------------- @@ -253,14 +251,10 @@ problem would be cleared after a reboot. Or you can manually cleanup the **Arduino command-line option overrides** -The script needs to know the working value of ``compiler.cache_core`` -that the Arduino IDE uses when building. This script can learn the state -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. +If you are building with ``compiler.cache_core=true`` no action is +needed. If ``false`` the script would benefit by knowing that. -These two command-line options are the problem: +When using either of these two command-line options: :: From f91d547af735b2162a932d8bbbd15155d28f6eeb Mon Sep 17 00:00:00 2001 From: M Hightower <27247790+mhightower83@users.noreply.github.com> Date: Sun, 29 Jan 2023 17:53:00 -0800 Subject: [PATCH 02/14] Added d-a-v's code. And updated description and debug macro. --- boards.txt | 152 ++++++++++++++++----------------- cores/esp8266/debug.h | 4 +- doc/faq/a02-my-esp-crashes.rst | 26 ++++-- tools/boards.txt.py | 4 +- tools/platformio-build.py | 8 ++ 5 files changed, 106 insertions(+), 88 deletions(-) diff --git a/boards.txt b/boards.txt index f648547ba7..634a15d148 100644 --- a/boards.txt +++ b/boards.txt @@ -392,9 +392,9 @@ generic.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT generic.menu.dbg.Disabled=Disabled generic.menu.dbg.Disabled.build.debug_port= generic.menu.dbg.Serial=Serial -generic.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +generic.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls generic.menu.lvl.None____=None generic.menu.lvl.None____.build.debug_level= generic.menu.lvl.SSL=SSL @@ -737,9 +737,9 @@ esp8285.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT esp8285.menu.dbg.Disabled=Disabled esp8285.menu.dbg.Disabled.build.debug_port= esp8285.menu.dbg.Serial=Serial -esp8285.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +esp8285.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls esp8285.menu.lvl.None____=None esp8285.menu.lvl.None____.build.debug_level= esp8285.menu.lvl.SSL=SSL @@ -1005,9 +1005,9 @@ gen4iod.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT gen4iod.menu.dbg.Disabled=Disabled gen4iod.menu.dbg.Disabled.build.debug_port= gen4iod.menu.dbg.Serial=Serial -gen4iod.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +gen4iod.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls gen4iod.menu.lvl.None____=None gen4iod.menu.lvl.None____.build.debug_level= gen4iod.menu.lvl.SSL=SSL @@ -1217,9 +1217,9 @@ huzzah.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATU huzzah.menu.dbg.Disabled=Disabled huzzah.menu.dbg.Disabled.build.debug_port= huzzah.menu.dbg.Serial=Serial -huzzah.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +huzzah.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls huzzah.menu.lvl.None____=None huzzah.menu.lvl.None____.build.debug_level= huzzah.menu.lvl.SSL=SSL @@ -1523,9 +1523,9 @@ wifi_slot.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FE wifi_slot.menu.dbg.Disabled=Disabled wifi_slot.menu.dbg.Disabled.build.debug_port= wifi_slot.menu.dbg.Serial=Serial -wifi_slot.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +wifi_slot.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls wifi_slot.menu.lvl.None____=None wifi_slot.menu.lvl.None____.build.debug_level= wifi_slot.menu.lvl.SSL=SSL @@ -1747,9 +1747,9 @@ arduino-esp8266.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DL arduino-esp8266.menu.dbg.Disabled=Disabled arduino-esp8266.menu.dbg.Disabled.build.debug_port= arduino-esp8266.menu.dbg.Serial=Serial -arduino-esp8266.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +arduino-esp8266.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls arduino-esp8266.menu.lvl.None____=None arduino-esp8266.menu.lvl.None____.build.debug_level= arduino-esp8266.menu.lvl.SSL=SSL @@ -1992,9 +1992,9 @@ espmxdevkit.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_ espmxdevkit.menu.dbg.Disabled=Disabled espmxdevkit.menu.dbg.Disabled.build.debug_port= espmxdevkit.menu.dbg.Serial=Serial -espmxdevkit.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +espmxdevkit.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls espmxdevkit.menu.lvl.None____=None espmxdevkit.menu.lvl.None____.build.debug_level= espmxdevkit.menu.lvl.SSL=SSL @@ -2205,9 +2205,9 @@ oak.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES oak.menu.dbg.Disabled=Disabled oak.menu.dbg.Disabled.build.debug_port= oak.menu.dbg.Serial=Serial -oak.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +oak.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls oak.menu.lvl.None____=None oak.menu.lvl.None____.build.debug_level= oak.menu.lvl.SSL=SSL @@ -2425,9 +2425,9 @@ espduino.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEA espduino.menu.dbg.Disabled=Disabled espduino.menu.dbg.Disabled.build.debug_port= espduino.menu.dbg.Serial=Serial -espduino.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +espduino.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls espduino.menu.lvl.None____=None espduino.menu.lvl.None____.build.debug_level= espduino.menu.lvl.SSL=SSL @@ -2637,9 +2637,9 @@ espectro.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEA espectro.menu.dbg.Disabled=Disabled espectro.menu.dbg.Disabled.build.debug_port= espectro.menu.dbg.Serial=Serial -espectro.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +espectro.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls espectro.menu.lvl.None____=None espectro.menu.lvl.None____.build.debug_level= espectro.menu.lvl.SSL=SSL @@ -2852,9 +2852,9 @@ espino.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATU espino.menu.dbg.Disabled=Disabled espino.menu.dbg.Disabled.build.debug_port= espino.menu.dbg.Serial=Serial -espino.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +espino.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls espino.menu.lvl.None____=None espino.menu.lvl.None____.build.debug_level= espino.menu.lvl.SSL=SSL @@ -3067,9 +3067,9 @@ espresso_lite_v1.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -D espresso_lite_v1.menu.dbg.Disabled=Disabled espresso_lite_v1.menu.dbg.Disabled.build.debug_port= espresso_lite_v1.menu.dbg.Serial=Serial -espresso_lite_v1.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +espresso_lite_v1.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls espresso_lite_v1.menu.lvl.None____=None espresso_lite_v1.menu.lvl.None____.build.debug_level= espresso_lite_v1.menu.lvl.SSL=SSL @@ -3282,9 +3282,9 @@ espresso_lite_v2.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -D espresso_lite_v2.menu.dbg.Disabled=Disabled espresso_lite_v2.menu.dbg.Disabled.build.debug_port= espresso_lite_v2.menu.dbg.Serial=Serial -espresso_lite_v2.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +espresso_lite_v2.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls espresso_lite_v2.menu.lvl.None____=None espresso_lite_v2.menu.lvl.None____.build.debug_level= espresso_lite_v2.menu.lvl.SSL=SSL @@ -3535,9 +3535,9 @@ sonoff.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATU sonoff.menu.dbg.Disabled=Disabled sonoff.menu.dbg.Disabled.build.debug_port= sonoff.menu.dbg.Serial=Serial -sonoff.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +sonoff.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls sonoff.menu.lvl.None____=None sonoff.menu.lvl.None____.build.debug_level= sonoff.menu.lvl.SSL=SSL @@ -3747,9 +3747,9 @@ inventone.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FE inventone.menu.dbg.Disabled=Disabled inventone.menu.dbg.Disabled.build.debug_port= inventone.menu.dbg.Serial=Serial -inventone.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +inventone.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls inventone.menu.lvl.None____=None inventone.menu.lvl.None____.build.debug_level= inventone.menu.lvl.SSL=SSL @@ -3975,9 +3975,9 @@ d1_wroom_02.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_ d1_wroom_02.menu.dbg.Disabled=Disabled d1_wroom_02.menu.dbg.Disabled.build.debug_port= d1_wroom_02.menu.dbg.Serial=Serial -d1_wroom_02.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +d1_wroom_02.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls d1_wroom_02.menu.lvl.None____=None d1_wroom_02.menu.lvl.None____.build.debug_level= d1_wroom_02.menu.lvl.SSL=SSL @@ -4187,9 +4187,9 @@ d1_mini.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT d1_mini.menu.dbg.Disabled=Disabled d1_mini.menu.dbg.Disabled.build.debug_port= d1_mini.menu.dbg.Serial=Serial -d1_mini.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +d1_mini.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls d1_mini.menu.lvl.None____=None d1_mini.menu.lvl.None____.build.debug_level= d1_mini.menu.lvl.SSL=SSL @@ -4416,9 +4416,9 @@ d1_mini_clone.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWI d1_mini_clone.menu.dbg.Disabled=Disabled d1_mini_clone.menu.dbg.Disabled.build.debug_port= d1_mini_clone.menu.dbg.Serial=Serial -d1_mini_clone.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +d1_mini_clone.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls d1_mini_clone.menu.lvl.None____=None d1_mini_clone.menu.lvl.None____.build.debug_level= d1_mini_clone.menu.lvl.SSL=SSL @@ -4660,9 +4660,9 @@ d1_mini_lite.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP d1_mini_lite.menu.dbg.Disabled=Disabled d1_mini_lite.menu.dbg.Disabled.build.debug_port= d1_mini_lite.menu.dbg.Serial=Serial -d1_mini_lite.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +d1_mini_lite.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls d1_mini_lite.menu.lvl.None____=None d1_mini_lite.menu.lvl.None____.build.debug_level= d1_mini_lite.menu.lvl.SSL=SSL @@ -4864,9 +4864,9 @@ d1_mini_pro.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_ d1_mini_pro.menu.dbg.Disabled=Disabled d1_mini_pro.menu.dbg.Disabled.build.debug_port= d1_mini_pro.menu.dbg.Serial=Serial -d1_mini_pro.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +d1_mini_pro.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls d1_mini_pro.menu.lvl.None____=None d1_mini_pro.menu.lvl.None____.build.debug_level= d1_mini_pro.menu.lvl.SSL=SSL @@ -5076,9 +5076,9 @@ d1.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES= d1.menu.dbg.Disabled=Disabled d1.menu.dbg.Disabled.build.debug_port= d1.menu.dbg.Serial=Serial -d1.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +d1.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls d1.menu.lvl.None____=None d1.menu.lvl.None____.build.debug_level= d1.menu.lvl.SSL=SSL @@ -5304,9 +5304,9 @@ agruminolemon.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWI agruminolemon.menu.dbg.Disabled=Disabled agruminolemon.menu.dbg.Disabled.build.debug_port= agruminolemon.menu.dbg.Serial=Serial -agruminolemon.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +agruminolemon.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls agruminolemon.menu.lvl.None____=None agruminolemon.menu.lvl.None____.build.debug_level= agruminolemon.menu.lvl.SSL=SSL @@ -5516,9 +5516,9 @@ nodemcu.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT nodemcu.menu.dbg.Disabled=Disabled nodemcu.menu.dbg.Disabled.build.debug_port= nodemcu.menu.dbg.Serial=Serial -nodemcu.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +nodemcu.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls nodemcu.menu.lvl.None____=None nodemcu.menu.lvl.None____.build.debug_level= nodemcu.menu.lvl.SSL=SSL @@ -5732,9 +5732,9 @@ nodemcuv2.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FE nodemcuv2.menu.dbg.Disabled=Disabled nodemcuv2.menu.dbg.Disabled.build.debug_port= nodemcuv2.menu.dbg.Serial=Serial -nodemcuv2.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +nodemcuv2.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls nodemcuv2.menu.lvl.None____=None nodemcuv2.menu.lvl.None____.build.debug_level= nodemcuv2.menu.lvl.SSL=SSL @@ -5975,9 +5975,9 @@ modwifi.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT modwifi.menu.dbg.Disabled=Disabled modwifi.menu.dbg.Disabled.build.debug_port= modwifi.menu.dbg.Serial=Serial -modwifi.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +modwifi.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls modwifi.menu.lvl.None____=None modwifi.menu.lvl.None____.build.debug_level= modwifi.menu.lvl.SSL=SSL @@ -6190,9 +6190,9 @@ phoenix_v1.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_F phoenix_v1.menu.dbg.Disabled=Disabled phoenix_v1.menu.dbg.Disabled.build.debug_port= phoenix_v1.menu.dbg.Serial=Serial -phoenix_v1.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +phoenix_v1.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls phoenix_v1.menu.lvl.None____=None phoenix_v1.menu.lvl.None____.build.debug_level= phoenix_v1.menu.lvl.SSL=SSL @@ -6405,9 +6405,9 @@ phoenix_v2.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_F phoenix_v2.menu.dbg.Disabled=Disabled phoenix_v2.menu.dbg.Disabled.build.debug_port= phoenix_v2.menu.dbg.Serial=Serial -phoenix_v2.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +phoenix_v2.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls phoenix_v2.menu.lvl.None____=None phoenix_v2.menu.lvl.None____.build.debug_level= phoenix_v2.menu.lvl.SSL=SSL @@ -6617,9 +6617,9 @@ eduinowifi.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_F eduinowifi.menu.dbg.Disabled=Disabled eduinowifi.menu.dbg.Disabled.build.debug_port= eduinowifi.menu.dbg.Serial=Serial -eduinowifi.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +eduinowifi.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls eduinowifi.menu.lvl.None____=None eduinowifi.menu.lvl.None____.build.debug_level= eduinowifi.menu.lvl.SSL=SSL @@ -6829,9 +6829,9 @@ wiolink.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT wiolink.menu.dbg.Disabled=Disabled wiolink.menu.dbg.Disabled.build.debug_port= wiolink.menu.dbg.Serial=Serial -wiolink.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +wiolink.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls wiolink.menu.lvl.None____=None wiolink.menu.lvl.None____.build.debug_level= wiolink.menu.lvl.SSL=SSL @@ -7041,9 +7041,9 @@ blynk.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATUR blynk.menu.dbg.Disabled=Disabled blynk.menu.dbg.Disabled.build.debug_port= blynk.menu.dbg.Serial=Serial -blynk.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +blynk.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls blynk.menu.lvl.None____=None blynk.menu.lvl.None____.build.debug_level= blynk.menu.lvl.SSL=SSL @@ -7253,9 +7253,9 @@ thing.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATUR thing.menu.dbg.Disabled=Disabled thing.menu.dbg.Disabled.build.debug_port= thing.menu.dbg.Serial=Serial -thing.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +thing.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls thing.menu.lvl.None____=None thing.menu.lvl.None____.build.debug_level= thing.menu.lvl.SSL=SSL @@ -7465,9 +7465,9 @@ thingdev.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEA thingdev.menu.dbg.Disabled=Disabled thingdev.menu.dbg.Disabled.build.debug_port= thingdev.menu.dbg.Serial=Serial -thingdev.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +thingdev.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls thingdev.menu.lvl.None____=None thingdev.menu.lvl.None____.build.debug_level= thingdev.menu.lvl.SSL=SSL @@ -7677,9 +7677,9 @@ esp210.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATU esp210.menu.dbg.Disabled=Disabled esp210.menu.dbg.Disabled.build.debug_port= esp210.menu.dbg.Serial=Serial -esp210.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +esp210.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls esp210.menu.lvl.None____=None esp210.menu.lvl.None____.build.debug_level= esp210.menu.lvl.SSL=SSL @@ -7889,9 +7889,9 @@ espinotee.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FE espinotee.menu.dbg.Disabled=Disabled espinotee.menu.dbg.Disabled.build.debug_port= espinotee.menu.dbg.Serial=Serial -espinotee.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +espinotee.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls espinotee.menu.lvl.None____=None espinotee.menu.lvl.None____.build.debug_level= espinotee.menu.lvl.SSL=SSL @@ -8101,9 +8101,9 @@ wifi_kit_8.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_F wifi_kit_8.menu.dbg.Disabled=Disabled wifi_kit_8.menu.dbg.Disabled.build.debug_port= wifi_kit_8.menu.dbg.Serial=Serial -wifi_kit_8.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +wifi_kit_8.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls wifi_kit_8.menu.lvl.None____=None wifi_kit_8.menu.lvl.None____.build.debug_level= wifi_kit_8.menu.lvl.SSL=SSL @@ -8313,9 +8313,9 @@ wifiduino.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FE wifiduino.menu.dbg.Disabled=Disabled wifiduino.menu.dbg.Disabled.build.debug_port= wifiduino.menu.dbg.Serial=Serial -wifiduino.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +wifiduino.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls wifiduino.menu.lvl.None____=None wifiduino.menu.lvl.None____.build.debug_level= wifiduino.menu.lvl.SSL=SSL @@ -8581,9 +8581,9 @@ wifinfo.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT wifinfo.menu.dbg.Disabled=Disabled wifinfo.menu.dbg.Disabled.build.debug_port= wifinfo.menu.dbg.Serial=Serial -wifinfo.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +wifinfo.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls wifinfo.menu.lvl.None____=None wifinfo.menu.lvl.None____.build.debug_level= wifinfo.menu.lvl.SSL=SSL @@ -8796,9 +8796,9 @@ cw01.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURE cw01.menu.dbg.Disabled=Disabled cw01.menu.dbg.Disabled.build.debug_port= cw01.menu.dbg.Serial=Serial -cw01.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +cw01.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls 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 -fno-optimize-sibling-calls cw01.menu.lvl.None____=None cw01.menu.lvl.None____.build.debug_level= cw01.menu.lvl.SSL=SSL diff --git a/cores/esp8266/debug.h b/cores/esp8266/debug.h index b069a9c233..0e30000c53 100644 --- a/cores/esp8266/debug.h +++ b/cores/esp8266/debug.h @@ -4,9 +4,11 @@ #include #include +#define _DEBUG_LEAF_FUNCTION(...) __asm__ __volatile__("" ::: "a0", "memory") + #ifdef DEBUG_ESP_CORE #define DEBUGV(fmt, ...) ::printf((PGM_P)PSTR(fmt), ##__VA_ARGS__) -#define DEBUG_LEAF_FUNCTION(...) __asm__ __volatile__("" ::: "a0", "memory") +#define DEBUG_LEAF_FUNCTION _DEBUG_LEAF_FUNCTION #else #define DEBUG_LEAF_FUNCTION(...) #endif diff --git a/doc/faq/a02-my-esp-crashes.rst b/doc/faq/a02-my-esp-crashes.rst index 3a95f9395e..3240170f4f 100644 --- a/doc/faq/a02-my-esp-crashes.rst +++ b/doc/faq/a02-my-esp-crashes.rst @@ -279,22 +279,30 @@ dropped. The same procedure applies to crashes caused by exceptions. able to correctly decode the stack trace dropped by some other application not compiled and loaded from your Arduino IDE. - To improve the results of the Exception Decoder, you can add - `-fno-optimize-sibling-calls` to your build options. For details on how - to do this, review `Global Build Options `__. - Turning off this optimization allows more caller addresses to be written - to the stack aiding in crash decoding. Because of the limited stack space, - there is the potential that removing this optimization could overflow the - stack and cause a crash. + When you select a ``Debug port:`` 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 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. + + If you are not using the "Debug port" and need to improve the results of the + Exception Decoder, you can add ``-fno-optimize-sibling-calls`` to your build + options. For details on how to do this, review `Global Build Options + `__. + + For non-Arduino IDE build platforms, you may need to research how to add + build options. 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 + ``__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 `. + macro ``DEBUG_LEAF_FUNCTION()`` from ``#include ``. Other Causes for Crashes diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 89380d2055..a2510cf9bb 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1355,9 +1355,9 @@ def all_debug (): ( '.menu.dbg.Disabled', 'Disabled' ), ( '.menu.dbg.Disabled.build.debug_port', '' ), ( '.menu.dbg.Serial', 'Serial' ), - ( '.menu.dbg.Serial.build.debug_port', '-DDEBUG_ESP_PORT=Serial' ), + ( '.menu.dbg.Serial.build.debug_port', '-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls' ), ( '.menu.dbg.Serial1', 'Serial1' ), - ( '.menu.dbg.Serial1.build.debug_port', '-DDEBUG_ESP_PORT=Serial1' ), + ( '.menu.dbg.Serial1.build.debug_port', '-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls' ), ( '.menu.lvl.None____', 'None' ), ( '.menu.lvl.None____.build.debug_level', '' ), ]) diff --git a/tools/platformio-build.py b/tools/platformio-build.py index 83b7d7830a..8dd4a6e55c 100644 --- a/tools/platformio-build.py +++ b/tools/platformio-build.py @@ -205,6 +205,14 @@ def scons_patched_match_splitext(path, suffixes=None): LIBPATH=[NONOSDK_LIBPATH], ) +# +# debug +# +for define in env["CCFLAGS"]: + if "DEBUG_ESP_PORT" in define: + env.Append(CCFLAGS=["-fno-optimize-sibling-calls"]) + break + # # lwIP # From 679038d9772cacaca0aab46f977be72c816f8bd7 Mon Sep 17 00:00:00 2001 From: M Hightower <27247790+mhightower83@users.noreply.github.com> Date: Mon, 30 Jan 2023 07:23:39 -0800 Subject: [PATCH 03/14] 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 --- doc/Troubleshooting/stack_dump.rst | 2 +- doc/faq/a02-my-esp-crashes.rst | 60 ++++++++++++++++-------------- platform.txt | 8 ++-- tools/platformio-build.py | 14 +++---- 4 files changed, 44 insertions(+), 40 deletions(-) diff --git a/doc/Troubleshooting/stack_dump.rst b/doc/Troubleshooting/stack_dump.rst index 9dc0c70eea..2052260a50 100644 --- a/doc/Troubleshooting/stack_dump.rst +++ b/doc/Troubleshooting/stack_dump.rst @@ -64,4 +64,4 @@ It's possible to decode the Stack to readable information. For more info see the ESP Exception Decoder -For more on troubleshooting, read `My ESP Crashes <../faq/a02-my-esp-crashes.rst>`__. +For more on troubleshooting, read `FAQ: My ESP Crashes <../faq/a02-my-esp-crashes.rst>`__. diff --git a/doc/faq/a02-my-esp-crashes.rst b/doc/faq/a02-my-esp-crashes.rst index 3240170f4f..70aa2a6450 100644 --- a/doc/faq/a02-my-esp-crashes.rst +++ b/doc/faq/a02-my-esp-crashes.rst @@ -271,38 +271,44 @@ Decoder `__ you can track down where the module is crashing whenever you see the stack trace dropped. The same procedure applies to crashes caused by exceptions. - Notes: - - 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 you have just loaded to the module for diagnosis. Decoder is not able to correctly decode the stack trace dropped by some other application not compiled and loaded from your Arduino IDE. - When you select a ``Debug port:`` 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 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. - - If you are not using the "Debug port" and need to improve the results of the - Exception Decoder, you can add ``-fno-optimize-sibling-calls`` to your build - options. For details on how to do this, review `Global Build Options - `__. - - For non-Arduino IDE build platforms, you may need to research how to add - build options. - - 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 ``. + +Improving Exception Decoder Results +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +When you select a ``Debug port`` 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 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. + +If you are not using the ``Debug port`` and need to improve the results of the +Exception Decoder, you can add ``-Og`` or ``-fno-optimize-sibling-calls`` +to your build options. For details on how to do this, review +`Global Build Options `__. + +For non-Arduino IDE build platforms, you may need to research how to add +build options. + +For projects that become too large to flash with a global debug build option, +you could target the optimization to specific modules of interest by adding +`#pragma GCC optimize("Og")`. + +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 ``. Other Causes for Crashes diff --git a/platform.txt b/platform.txt index 1ff0b464a3..5ddc20b0da 100644 --- a/platform.txt +++ b/platform.txt @@ -70,24 +70,24 @@ compiler.path={runtime.tools.xtensa-lx106-elf-gcc.path}/bin/ compiler.sdk.path={runtime.platform.path}/tools/sdk 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 -Os {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+ compiler.libraries.ldflags= 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.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.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.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 diff --git a/tools/platformio-build.py b/tools/platformio-build.py index 8dd4a6e55c..59d0eec92f 100644 --- a/tools/platformio-build.py +++ b/tools/platformio-build.py @@ -205,14 +205,6 @@ def scons_patched_match_splitext(path, suffixes=None): LIBPATH=[NONOSDK_LIBPATH], ) -# -# debug -# -for define in env["CCFLAGS"]: - if "DEBUG_ESP_PORT" in define: - env.Append(CCFLAGS=["-fno-optimize-sibling-calls"]) - break - # # lwIP # @@ -257,6 +249,12 @@ def scons_patched_match_splitext(path, suffixes=None): ) lwip_lib = "lwip2-536-feat" +# +# debug +# +if "DEBUG_ESP_PORT" in flatten_cppdefines: + env.Append(CCFLAGS=["-fno-optimize-sibling-calls"]) + # # Waveform # From 33bbf8bb849a57245c2cc809871ed53bb73041fd Mon Sep 17 00:00:00 2001 From: M Hightower <27247790+mhightower83@users.noreply.github.com> Date: Tue, 31 Jan 2023 06:21:48 -0800 Subject: [PATCH 04/14] Fixed code formatting --- doc/faq/a02-my-esp-crashes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/faq/a02-my-esp-crashes.rst b/doc/faq/a02-my-esp-crashes.rst index 70aa2a6450..0f77fb999f 100644 --- a/doc/faq/a02-my-esp-crashes.rst +++ b/doc/faq/a02-my-esp-crashes.rst @@ -299,7 +299,7 @@ build options. For projects that become too large to flash with a global debug build option, you could target the optimization to specific modules of interest by adding -`#pragma GCC optimize("Og")`. +``#pragma GCC optimize("Og")``. 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. From 2e062aee36ff560361bc0258774edbe73ad3603c Mon Sep 17 00:00:00 2001 From: M Hightower <27247790+mhightower83@users.noreply.github.com> Date: Tue, 31 Jan 2023 07:32:08 -0800 Subject: [PATCH 05/14] 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`. --- .../GlobalBuildOptions/GlobalBuildOptions.ino.globals.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/esp8266/examples/GlobalBuildOptions/GlobalBuildOptions.ino.globals.h b/libraries/esp8266/examples/GlobalBuildOptions/GlobalBuildOptions.ino.globals.h index 12a4882ff8..b51b879f7f 100644 --- a/libraries/esp8266/examples/GlobalBuildOptions/GlobalBuildOptions.ino.globals.h +++ b/libraries/esp8266/examples/GlobalBuildOptions/GlobalBuildOptions.ino.globals.h @@ -8,7 +8,7 @@ * this line is ignored *@create-file:build.opt@ # this line is ignored - -O3 + -Og // -fanalyzer -DUMM_STATS_FULL=1 */ From 1a92df10d8829f29d018f04503fc63297281f220 Mon Sep 17 00:00:00 2001 From: M Hightower <27247790+mhightower83@users.noreply.github.com> Date: Tue, 31 Jan 2023 11:18:06 -0800 Subject: [PATCH 06/14] Proposed "Debug port" menu change Preserves a pathway for `build.opt` override. --- boards.txt | 304 ++++++++++++++++++++++++++++---------- tools/boards.txt.py | 8 +- tools/platformio-build.py | 2 +- 3 files changed, 235 insertions(+), 79 deletions(-) diff --git a/boards.txt b/boards.txt index 634a15d148..ad4d811395 100644 --- a/boards.txt +++ b/boards.txt @@ -392,9 +392,13 @@ generic.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT generic.menu.dbg.Disabled=Disabled generic.menu.dbg.Disabled.build.debug_port= generic.menu.dbg.Serial=Serial -generic.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +generic.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls generic.menu.dbg.Serial1=Serial1 -generic.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +generic.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +generic.menu.dbg.Serial-dbg=Serial (full debug) +generic.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +generic.menu.dbg.Serial1-dbg=Serial1 (full debug) +generic.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og generic.menu.lvl.None____=None generic.menu.lvl.None____.build.debug_level= generic.menu.lvl.SSL=SSL @@ -737,9 +741,13 @@ esp8285.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT esp8285.menu.dbg.Disabled=Disabled esp8285.menu.dbg.Disabled.build.debug_port= esp8285.menu.dbg.Serial=Serial -esp8285.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +esp8285.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls esp8285.menu.dbg.Serial1=Serial1 -esp8285.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +esp8285.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +esp8285.menu.dbg.Serial-dbg=Serial (full debug) +esp8285.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +esp8285.menu.dbg.Serial1-dbg=Serial1 (full debug) +esp8285.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og esp8285.menu.lvl.None____=None esp8285.menu.lvl.None____.build.debug_level= esp8285.menu.lvl.SSL=SSL @@ -1005,9 +1013,13 @@ gen4iod.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT gen4iod.menu.dbg.Disabled=Disabled gen4iod.menu.dbg.Disabled.build.debug_port= gen4iod.menu.dbg.Serial=Serial -gen4iod.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +gen4iod.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls gen4iod.menu.dbg.Serial1=Serial1 -gen4iod.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +gen4iod.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +gen4iod.menu.dbg.Serial-dbg=Serial (full debug) +gen4iod.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +gen4iod.menu.dbg.Serial1-dbg=Serial1 (full debug) +gen4iod.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og gen4iod.menu.lvl.None____=None gen4iod.menu.lvl.None____.build.debug_level= gen4iod.menu.lvl.SSL=SSL @@ -1217,9 +1229,13 @@ huzzah.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATU huzzah.menu.dbg.Disabled=Disabled huzzah.menu.dbg.Disabled.build.debug_port= huzzah.menu.dbg.Serial=Serial -huzzah.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +huzzah.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls huzzah.menu.dbg.Serial1=Serial1 -huzzah.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +huzzah.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +huzzah.menu.dbg.Serial-dbg=Serial (full debug) +huzzah.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +huzzah.menu.dbg.Serial1-dbg=Serial1 (full debug) +huzzah.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og huzzah.menu.lvl.None____=None huzzah.menu.lvl.None____.build.debug_level= huzzah.menu.lvl.SSL=SSL @@ -1523,9 +1539,13 @@ wifi_slot.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FE wifi_slot.menu.dbg.Disabled=Disabled wifi_slot.menu.dbg.Disabled.build.debug_port= wifi_slot.menu.dbg.Serial=Serial -wifi_slot.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +wifi_slot.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls wifi_slot.menu.dbg.Serial1=Serial1 -wifi_slot.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +wifi_slot.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +wifi_slot.menu.dbg.Serial-dbg=Serial (full debug) +wifi_slot.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +wifi_slot.menu.dbg.Serial1-dbg=Serial1 (full debug) +wifi_slot.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og wifi_slot.menu.lvl.None____=None wifi_slot.menu.lvl.None____.build.debug_level= wifi_slot.menu.lvl.SSL=SSL @@ -1747,9 +1767,13 @@ arduino-esp8266.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DL arduino-esp8266.menu.dbg.Disabled=Disabled arduino-esp8266.menu.dbg.Disabled.build.debug_port= arduino-esp8266.menu.dbg.Serial=Serial -arduino-esp8266.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +arduino-esp8266.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls arduino-esp8266.menu.dbg.Serial1=Serial1 -arduino-esp8266.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +arduino-esp8266.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +arduino-esp8266.menu.dbg.Serial-dbg=Serial (full debug) +arduino-esp8266.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +arduino-esp8266.menu.dbg.Serial1-dbg=Serial1 (full debug) +arduino-esp8266.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og arduino-esp8266.menu.lvl.None____=None arduino-esp8266.menu.lvl.None____.build.debug_level= arduino-esp8266.menu.lvl.SSL=SSL @@ -1992,9 +2016,13 @@ espmxdevkit.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_ espmxdevkit.menu.dbg.Disabled=Disabled espmxdevkit.menu.dbg.Disabled.build.debug_port= espmxdevkit.menu.dbg.Serial=Serial -espmxdevkit.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +espmxdevkit.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls espmxdevkit.menu.dbg.Serial1=Serial1 -espmxdevkit.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +espmxdevkit.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +espmxdevkit.menu.dbg.Serial-dbg=Serial (full debug) +espmxdevkit.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +espmxdevkit.menu.dbg.Serial1-dbg=Serial1 (full debug) +espmxdevkit.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og espmxdevkit.menu.lvl.None____=None espmxdevkit.menu.lvl.None____.build.debug_level= espmxdevkit.menu.lvl.SSL=SSL @@ -2205,9 +2233,13 @@ oak.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES oak.menu.dbg.Disabled=Disabled oak.menu.dbg.Disabled.build.debug_port= oak.menu.dbg.Serial=Serial -oak.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +oak.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls oak.menu.dbg.Serial1=Serial1 -oak.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +oak.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +oak.menu.dbg.Serial-dbg=Serial (full debug) +oak.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +oak.menu.dbg.Serial1-dbg=Serial1 (full debug) +oak.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og oak.menu.lvl.None____=None oak.menu.lvl.None____.build.debug_level= oak.menu.lvl.SSL=SSL @@ -2425,9 +2457,13 @@ espduino.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEA espduino.menu.dbg.Disabled=Disabled espduino.menu.dbg.Disabled.build.debug_port= espduino.menu.dbg.Serial=Serial -espduino.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +espduino.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls espduino.menu.dbg.Serial1=Serial1 -espduino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +espduino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +espduino.menu.dbg.Serial-dbg=Serial (full debug) +espduino.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +espduino.menu.dbg.Serial1-dbg=Serial1 (full debug) +espduino.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og espduino.menu.lvl.None____=None espduino.menu.lvl.None____.build.debug_level= espduino.menu.lvl.SSL=SSL @@ -2637,9 +2673,13 @@ espectro.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEA espectro.menu.dbg.Disabled=Disabled espectro.menu.dbg.Disabled.build.debug_port= espectro.menu.dbg.Serial=Serial -espectro.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +espectro.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls espectro.menu.dbg.Serial1=Serial1 -espectro.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +espectro.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +espectro.menu.dbg.Serial-dbg=Serial (full debug) +espectro.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +espectro.menu.dbg.Serial1-dbg=Serial1 (full debug) +espectro.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og espectro.menu.lvl.None____=None espectro.menu.lvl.None____.build.debug_level= espectro.menu.lvl.SSL=SSL @@ -2852,9 +2892,13 @@ espino.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATU espino.menu.dbg.Disabled=Disabled espino.menu.dbg.Disabled.build.debug_port= espino.menu.dbg.Serial=Serial -espino.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +espino.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls espino.menu.dbg.Serial1=Serial1 -espino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +espino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +espino.menu.dbg.Serial-dbg=Serial (full debug) +espino.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +espino.menu.dbg.Serial1-dbg=Serial1 (full debug) +espino.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og espino.menu.lvl.None____=None espino.menu.lvl.None____.build.debug_level= espino.menu.lvl.SSL=SSL @@ -3067,9 +3111,13 @@ espresso_lite_v1.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -D espresso_lite_v1.menu.dbg.Disabled=Disabled espresso_lite_v1.menu.dbg.Disabled.build.debug_port= espresso_lite_v1.menu.dbg.Serial=Serial -espresso_lite_v1.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +espresso_lite_v1.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls espresso_lite_v1.menu.dbg.Serial1=Serial1 -espresso_lite_v1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +espresso_lite_v1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +espresso_lite_v1.menu.dbg.Serial-dbg=Serial (full debug) +espresso_lite_v1.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +espresso_lite_v1.menu.dbg.Serial1-dbg=Serial1 (full debug) +espresso_lite_v1.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og espresso_lite_v1.menu.lvl.None____=None espresso_lite_v1.menu.lvl.None____.build.debug_level= espresso_lite_v1.menu.lvl.SSL=SSL @@ -3282,9 +3330,13 @@ espresso_lite_v2.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -D espresso_lite_v2.menu.dbg.Disabled=Disabled espresso_lite_v2.menu.dbg.Disabled.build.debug_port= espresso_lite_v2.menu.dbg.Serial=Serial -espresso_lite_v2.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +espresso_lite_v2.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls espresso_lite_v2.menu.dbg.Serial1=Serial1 -espresso_lite_v2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +espresso_lite_v2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +espresso_lite_v2.menu.dbg.Serial-dbg=Serial (full debug) +espresso_lite_v2.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +espresso_lite_v2.menu.dbg.Serial1-dbg=Serial1 (full debug) +espresso_lite_v2.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og espresso_lite_v2.menu.lvl.None____=None espresso_lite_v2.menu.lvl.None____.build.debug_level= espresso_lite_v2.menu.lvl.SSL=SSL @@ -3535,9 +3587,13 @@ sonoff.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATU sonoff.menu.dbg.Disabled=Disabled sonoff.menu.dbg.Disabled.build.debug_port= sonoff.menu.dbg.Serial=Serial -sonoff.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +sonoff.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls sonoff.menu.dbg.Serial1=Serial1 -sonoff.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +sonoff.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +sonoff.menu.dbg.Serial-dbg=Serial (full debug) +sonoff.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +sonoff.menu.dbg.Serial1-dbg=Serial1 (full debug) +sonoff.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og sonoff.menu.lvl.None____=None sonoff.menu.lvl.None____.build.debug_level= sonoff.menu.lvl.SSL=SSL @@ -3747,9 +3803,13 @@ inventone.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FE inventone.menu.dbg.Disabled=Disabled inventone.menu.dbg.Disabled.build.debug_port= inventone.menu.dbg.Serial=Serial -inventone.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +inventone.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls inventone.menu.dbg.Serial1=Serial1 -inventone.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +inventone.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +inventone.menu.dbg.Serial-dbg=Serial (full debug) +inventone.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +inventone.menu.dbg.Serial1-dbg=Serial1 (full debug) +inventone.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og inventone.menu.lvl.None____=None inventone.menu.lvl.None____.build.debug_level= inventone.menu.lvl.SSL=SSL @@ -3975,9 +4035,13 @@ d1_wroom_02.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_ d1_wroom_02.menu.dbg.Disabled=Disabled d1_wroom_02.menu.dbg.Disabled.build.debug_port= d1_wroom_02.menu.dbg.Serial=Serial -d1_wroom_02.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +d1_wroom_02.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls d1_wroom_02.menu.dbg.Serial1=Serial1 -d1_wroom_02.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +d1_wroom_02.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +d1_wroom_02.menu.dbg.Serial-dbg=Serial (full debug) +d1_wroom_02.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +d1_wroom_02.menu.dbg.Serial1-dbg=Serial1 (full debug) +d1_wroom_02.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og d1_wroom_02.menu.lvl.None____=None d1_wroom_02.menu.lvl.None____.build.debug_level= d1_wroom_02.menu.lvl.SSL=SSL @@ -4187,9 +4251,13 @@ d1_mini.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT d1_mini.menu.dbg.Disabled=Disabled d1_mini.menu.dbg.Disabled.build.debug_port= d1_mini.menu.dbg.Serial=Serial -d1_mini.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +d1_mini.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls d1_mini.menu.dbg.Serial1=Serial1 -d1_mini.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +d1_mini.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +d1_mini.menu.dbg.Serial-dbg=Serial (full debug) +d1_mini.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +d1_mini.menu.dbg.Serial1-dbg=Serial1 (full debug) +d1_mini.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og d1_mini.menu.lvl.None____=None d1_mini.menu.lvl.None____.build.debug_level= d1_mini.menu.lvl.SSL=SSL @@ -4416,9 +4484,13 @@ d1_mini_clone.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWI d1_mini_clone.menu.dbg.Disabled=Disabled d1_mini_clone.menu.dbg.Disabled.build.debug_port= d1_mini_clone.menu.dbg.Serial=Serial -d1_mini_clone.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +d1_mini_clone.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls d1_mini_clone.menu.dbg.Serial1=Serial1 -d1_mini_clone.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +d1_mini_clone.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +d1_mini_clone.menu.dbg.Serial-dbg=Serial (full debug) +d1_mini_clone.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +d1_mini_clone.menu.dbg.Serial1-dbg=Serial1 (full debug) +d1_mini_clone.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og d1_mini_clone.menu.lvl.None____=None d1_mini_clone.menu.lvl.None____.build.debug_level= d1_mini_clone.menu.lvl.SSL=SSL @@ -4660,9 +4732,13 @@ d1_mini_lite.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP d1_mini_lite.menu.dbg.Disabled=Disabled d1_mini_lite.menu.dbg.Disabled.build.debug_port= d1_mini_lite.menu.dbg.Serial=Serial -d1_mini_lite.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +d1_mini_lite.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls d1_mini_lite.menu.dbg.Serial1=Serial1 -d1_mini_lite.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +d1_mini_lite.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +d1_mini_lite.menu.dbg.Serial-dbg=Serial (full debug) +d1_mini_lite.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +d1_mini_lite.menu.dbg.Serial1-dbg=Serial1 (full debug) +d1_mini_lite.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og d1_mini_lite.menu.lvl.None____=None d1_mini_lite.menu.lvl.None____.build.debug_level= d1_mini_lite.menu.lvl.SSL=SSL @@ -4864,9 +4940,13 @@ d1_mini_pro.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_ d1_mini_pro.menu.dbg.Disabled=Disabled d1_mini_pro.menu.dbg.Disabled.build.debug_port= d1_mini_pro.menu.dbg.Serial=Serial -d1_mini_pro.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +d1_mini_pro.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls d1_mini_pro.menu.dbg.Serial1=Serial1 -d1_mini_pro.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +d1_mini_pro.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +d1_mini_pro.menu.dbg.Serial-dbg=Serial (full debug) +d1_mini_pro.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +d1_mini_pro.menu.dbg.Serial1-dbg=Serial1 (full debug) +d1_mini_pro.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og d1_mini_pro.menu.lvl.None____=None d1_mini_pro.menu.lvl.None____.build.debug_level= d1_mini_pro.menu.lvl.SSL=SSL @@ -5076,9 +5156,13 @@ d1.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES= d1.menu.dbg.Disabled=Disabled d1.menu.dbg.Disabled.build.debug_port= d1.menu.dbg.Serial=Serial -d1.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +d1.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls d1.menu.dbg.Serial1=Serial1 -d1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +d1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +d1.menu.dbg.Serial-dbg=Serial (full debug) +d1.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +d1.menu.dbg.Serial1-dbg=Serial1 (full debug) +d1.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og d1.menu.lvl.None____=None d1.menu.lvl.None____.build.debug_level= d1.menu.lvl.SSL=SSL @@ -5304,9 +5388,13 @@ agruminolemon.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWI agruminolemon.menu.dbg.Disabled=Disabled agruminolemon.menu.dbg.Disabled.build.debug_port= agruminolemon.menu.dbg.Serial=Serial -agruminolemon.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +agruminolemon.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls agruminolemon.menu.dbg.Serial1=Serial1 -agruminolemon.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +agruminolemon.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +agruminolemon.menu.dbg.Serial-dbg=Serial (full debug) +agruminolemon.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +agruminolemon.menu.dbg.Serial1-dbg=Serial1 (full debug) +agruminolemon.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og agruminolemon.menu.lvl.None____=None agruminolemon.menu.lvl.None____.build.debug_level= agruminolemon.menu.lvl.SSL=SSL @@ -5516,9 +5604,13 @@ nodemcu.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT nodemcu.menu.dbg.Disabled=Disabled nodemcu.menu.dbg.Disabled.build.debug_port= nodemcu.menu.dbg.Serial=Serial -nodemcu.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +nodemcu.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls nodemcu.menu.dbg.Serial1=Serial1 -nodemcu.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +nodemcu.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +nodemcu.menu.dbg.Serial-dbg=Serial (full debug) +nodemcu.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +nodemcu.menu.dbg.Serial1-dbg=Serial1 (full debug) +nodemcu.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og nodemcu.menu.lvl.None____=None nodemcu.menu.lvl.None____.build.debug_level= nodemcu.menu.lvl.SSL=SSL @@ -5732,9 +5824,13 @@ nodemcuv2.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FE nodemcuv2.menu.dbg.Disabled=Disabled nodemcuv2.menu.dbg.Disabled.build.debug_port= nodemcuv2.menu.dbg.Serial=Serial -nodemcuv2.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +nodemcuv2.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls nodemcuv2.menu.dbg.Serial1=Serial1 -nodemcuv2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +nodemcuv2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +nodemcuv2.menu.dbg.Serial-dbg=Serial (full debug) +nodemcuv2.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +nodemcuv2.menu.dbg.Serial1-dbg=Serial1 (full debug) +nodemcuv2.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og nodemcuv2.menu.lvl.None____=None nodemcuv2.menu.lvl.None____.build.debug_level= nodemcuv2.menu.lvl.SSL=SSL @@ -5975,9 +6071,13 @@ modwifi.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT modwifi.menu.dbg.Disabled=Disabled modwifi.menu.dbg.Disabled.build.debug_port= modwifi.menu.dbg.Serial=Serial -modwifi.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +modwifi.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls modwifi.menu.dbg.Serial1=Serial1 -modwifi.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +modwifi.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +modwifi.menu.dbg.Serial-dbg=Serial (full debug) +modwifi.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +modwifi.menu.dbg.Serial1-dbg=Serial1 (full debug) +modwifi.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og modwifi.menu.lvl.None____=None modwifi.menu.lvl.None____.build.debug_level= modwifi.menu.lvl.SSL=SSL @@ -6190,9 +6290,13 @@ phoenix_v1.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_F phoenix_v1.menu.dbg.Disabled=Disabled phoenix_v1.menu.dbg.Disabled.build.debug_port= phoenix_v1.menu.dbg.Serial=Serial -phoenix_v1.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +phoenix_v1.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls phoenix_v1.menu.dbg.Serial1=Serial1 -phoenix_v1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +phoenix_v1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +phoenix_v1.menu.dbg.Serial-dbg=Serial (full debug) +phoenix_v1.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +phoenix_v1.menu.dbg.Serial1-dbg=Serial1 (full debug) +phoenix_v1.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og phoenix_v1.menu.lvl.None____=None phoenix_v1.menu.lvl.None____.build.debug_level= phoenix_v1.menu.lvl.SSL=SSL @@ -6405,9 +6509,13 @@ phoenix_v2.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_F phoenix_v2.menu.dbg.Disabled=Disabled phoenix_v2.menu.dbg.Disabled.build.debug_port= phoenix_v2.menu.dbg.Serial=Serial -phoenix_v2.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +phoenix_v2.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls phoenix_v2.menu.dbg.Serial1=Serial1 -phoenix_v2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +phoenix_v2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +phoenix_v2.menu.dbg.Serial-dbg=Serial (full debug) +phoenix_v2.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +phoenix_v2.menu.dbg.Serial1-dbg=Serial1 (full debug) +phoenix_v2.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og phoenix_v2.menu.lvl.None____=None phoenix_v2.menu.lvl.None____.build.debug_level= phoenix_v2.menu.lvl.SSL=SSL @@ -6617,9 +6725,13 @@ eduinowifi.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_F eduinowifi.menu.dbg.Disabled=Disabled eduinowifi.menu.dbg.Disabled.build.debug_port= eduinowifi.menu.dbg.Serial=Serial -eduinowifi.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +eduinowifi.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls eduinowifi.menu.dbg.Serial1=Serial1 -eduinowifi.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +eduinowifi.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +eduinowifi.menu.dbg.Serial-dbg=Serial (full debug) +eduinowifi.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +eduinowifi.menu.dbg.Serial1-dbg=Serial1 (full debug) +eduinowifi.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og eduinowifi.menu.lvl.None____=None eduinowifi.menu.lvl.None____.build.debug_level= eduinowifi.menu.lvl.SSL=SSL @@ -6829,9 +6941,13 @@ wiolink.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT wiolink.menu.dbg.Disabled=Disabled wiolink.menu.dbg.Disabled.build.debug_port= wiolink.menu.dbg.Serial=Serial -wiolink.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +wiolink.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls wiolink.menu.dbg.Serial1=Serial1 -wiolink.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +wiolink.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +wiolink.menu.dbg.Serial-dbg=Serial (full debug) +wiolink.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +wiolink.menu.dbg.Serial1-dbg=Serial1 (full debug) +wiolink.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og wiolink.menu.lvl.None____=None wiolink.menu.lvl.None____.build.debug_level= wiolink.menu.lvl.SSL=SSL @@ -7041,9 +7157,13 @@ blynk.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATUR blynk.menu.dbg.Disabled=Disabled blynk.menu.dbg.Disabled.build.debug_port= blynk.menu.dbg.Serial=Serial -blynk.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +blynk.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls blynk.menu.dbg.Serial1=Serial1 -blynk.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +blynk.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +blynk.menu.dbg.Serial-dbg=Serial (full debug) +blynk.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +blynk.menu.dbg.Serial1-dbg=Serial1 (full debug) +blynk.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og blynk.menu.lvl.None____=None blynk.menu.lvl.None____.build.debug_level= blynk.menu.lvl.SSL=SSL @@ -7253,9 +7373,13 @@ thing.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATUR thing.menu.dbg.Disabled=Disabled thing.menu.dbg.Disabled.build.debug_port= thing.menu.dbg.Serial=Serial -thing.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +thing.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls thing.menu.dbg.Serial1=Serial1 -thing.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +thing.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +thing.menu.dbg.Serial-dbg=Serial (full debug) +thing.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +thing.menu.dbg.Serial1-dbg=Serial1 (full debug) +thing.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og thing.menu.lvl.None____=None thing.menu.lvl.None____.build.debug_level= thing.menu.lvl.SSL=SSL @@ -7465,9 +7589,13 @@ thingdev.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEA thingdev.menu.dbg.Disabled=Disabled thingdev.menu.dbg.Disabled.build.debug_port= thingdev.menu.dbg.Serial=Serial -thingdev.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +thingdev.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls thingdev.menu.dbg.Serial1=Serial1 -thingdev.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +thingdev.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +thingdev.menu.dbg.Serial-dbg=Serial (full debug) +thingdev.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +thingdev.menu.dbg.Serial1-dbg=Serial1 (full debug) +thingdev.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og thingdev.menu.lvl.None____=None thingdev.menu.lvl.None____.build.debug_level= thingdev.menu.lvl.SSL=SSL @@ -7677,9 +7805,13 @@ esp210.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATU esp210.menu.dbg.Disabled=Disabled esp210.menu.dbg.Disabled.build.debug_port= esp210.menu.dbg.Serial=Serial -esp210.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +esp210.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls esp210.menu.dbg.Serial1=Serial1 -esp210.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +esp210.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +esp210.menu.dbg.Serial-dbg=Serial (full debug) +esp210.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +esp210.menu.dbg.Serial1-dbg=Serial1 (full debug) +esp210.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og esp210.menu.lvl.None____=None esp210.menu.lvl.None____.build.debug_level= esp210.menu.lvl.SSL=SSL @@ -7889,9 +8021,13 @@ espinotee.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FE espinotee.menu.dbg.Disabled=Disabled espinotee.menu.dbg.Disabled.build.debug_port= espinotee.menu.dbg.Serial=Serial -espinotee.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +espinotee.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls espinotee.menu.dbg.Serial1=Serial1 -espinotee.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +espinotee.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +espinotee.menu.dbg.Serial-dbg=Serial (full debug) +espinotee.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +espinotee.menu.dbg.Serial1-dbg=Serial1 (full debug) +espinotee.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og espinotee.menu.lvl.None____=None espinotee.menu.lvl.None____.build.debug_level= espinotee.menu.lvl.SSL=SSL @@ -8101,9 +8237,13 @@ wifi_kit_8.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_F wifi_kit_8.menu.dbg.Disabled=Disabled wifi_kit_8.menu.dbg.Disabled.build.debug_port= wifi_kit_8.menu.dbg.Serial=Serial -wifi_kit_8.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +wifi_kit_8.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls wifi_kit_8.menu.dbg.Serial1=Serial1 -wifi_kit_8.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +wifi_kit_8.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +wifi_kit_8.menu.dbg.Serial-dbg=Serial (full debug) +wifi_kit_8.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +wifi_kit_8.menu.dbg.Serial1-dbg=Serial1 (full debug) +wifi_kit_8.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og wifi_kit_8.menu.lvl.None____=None wifi_kit_8.menu.lvl.None____.build.debug_level= wifi_kit_8.menu.lvl.SSL=SSL @@ -8313,9 +8453,13 @@ wifiduino.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FE wifiduino.menu.dbg.Disabled=Disabled wifiduino.menu.dbg.Disabled.build.debug_port= wifiduino.menu.dbg.Serial=Serial -wifiduino.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +wifiduino.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls wifiduino.menu.dbg.Serial1=Serial1 -wifiduino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +wifiduino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +wifiduino.menu.dbg.Serial-dbg=Serial (full debug) +wifiduino.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +wifiduino.menu.dbg.Serial1-dbg=Serial1 (full debug) +wifiduino.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og wifiduino.menu.lvl.None____=None wifiduino.menu.lvl.None____.build.debug_level= wifiduino.menu.lvl.SSL=SSL @@ -8581,9 +8725,13 @@ wifinfo.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT wifinfo.menu.dbg.Disabled=Disabled wifinfo.menu.dbg.Disabled.build.debug_port= wifinfo.menu.dbg.Serial=Serial -wifinfo.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +wifinfo.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls wifinfo.menu.dbg.Serial1=Serial1 -wifinfo.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +wifinfo.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +wifinfo.menu.dbg.Serial-dbg=Serial (full debug) +wifinfo.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +wifinfo.menu.dbg.Serial1-dbg=Serial1 (full debug) +wifinfo.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og wifinfo.menu.lvl.None____=None wifinfo.menu.lvl.None____.build.debug_level= wifinfo.menu.lvl.SSL=SSL @@ -8796,9 +8944,13 @@ cw01.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURE cw01.menu.dbg.Disabled=Disabled cw01.menu.dbg.Disabled.build.debug_port= cw01.menu.dbg.Serial=Serial -cw01.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls +cw01.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls cw01.menu.dbg.Serial1=Serial1 -cw01.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls +cw01.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls +cw01.menu.dbg.Serial-dbg=Serial (full debug) +cw01.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og +cw01.menu.dbg.Serial1-dbg=Serial1 (full debug) +cw01.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og cw01.menu.lvl.None____=None cw01.menu.lvl.None____.build.debug_level= cw01.menu.lvl.SSL=SSL diff --git a/tools/boards.txt.py b/tools/boards.txt.py index a2510cf9bb..9069de08bb 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1355,9 +1355,13 @@ def all_debug (): ( '.menu.dbg.Disabled', 'Disabled' ), ( '.menu.dbg.Disabled.build.debug_port', '' ), ( '.menu.dbg.Serial', 'Serial' ), - ( '.menu.dbg.Serial.build.debug_port', '-DDEBUG_ESP_PORT=Serial -fno-optimize-sibling-calls' ), + ( '.menu.dbg.Serial.build.debug_port', '-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls' ), ( '.menu.dbg.Serial1', 'Serial1' ), - ( '.menu.dbg.Serial1.build.debug_port', '-DDEBUG_ESP_PORT=Serial1 -fno-optimize-sibling-calls' ), + ( '.menu.dbg.Serial1.build.debug_port', '-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls' ), + ( '.menu.dbg.Serial-dbg', 'Serial (full debug)' ), + ( '.menu.dbg.Serial-dbg.build.debug_port', '-DDEBUG_ESP_PORT=Serial -Og' ), + ( '.menu.dbg.Serial1-dbg', 'Serial1 (full debug)' ), + ( '.menu.dbg.Serial1-dbg.build.debug_port', '-DDEBUG_ESP_PORT=Serial1 -Og' ), ( '.menu.lvl.None____', 'None' ), ( '.menu.lvl.None____.build.debug_level', '' ), ]) diff --git a/tools/platformio-build.py b/tools/platformio-build.py index 59d0eec92f..4582108c73 100644 --- a/tools/platformio-build.py +++ b/tools/platformio-build.py @@ -253,7 +253,7 @@ def scons_patched_match_splitext(path, suffixes=None): # debug # if "DEBUG_ESP_PORT" in flatten_cppdefines: - env.Append(CCFLAGS=["-fno-optimize-sibling-calls"]) + env.Append(CCFLAGS=[("-Os"), ("-fno-optimize-sibling-calls")]) # # Waveform From 9157394fb814f83cecbe0219bb534b8e9094ae93 Mon Sep 17 00:00:00 2001 From: M Hightower <27247790+mhightower83@users.noreply.github.com> Date: Wed, 1 Feb 2023 18:11:36 -0800 Subject: [PATCH 07/14] Update boards.txt.py and docs - WIP --- boards.txt | 571 ++++++++++++++++++++------------- doc/faq/a02-my-esp-crashes.rst | 22 +- doc/ideoptions.rst | 28 ++ platform.txt | 2 +- tools/boards.txt.py | 16 +- 5 files changed, 393 insertions(+), 246 deletions(-) diff --git a/boards.txt b/boards.txt index ad4d811395..04dc1f1e47 100644 --- a/boards.txt +++ b/boards.txt @@ -17,6 +17,7 @@ menu.FlashFreq=Flash Frequency menu.ResetMethod=Reset Method menu.dbg=Debug port menu.lvl=Debug Level +menu.optim=Debug Priority menu.ip=lwIP Variant menu.vt=VTables menu.exception=C++ Exceptions @@ -40,6 +41,7 @@ generic.build.mcu=esp8266 generic.build.core=esp8266 generic.build.variant=generic generic.build.spiffs_pagesize=256 +generic.build.debug_optim= generic.build.debug_port= generic.build.debug_level= generic.menu.xtal.80=80 MHz @@ -392,15 +394,17 @@ generic.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT generic.menu.dbg.Disabled=Disabled generic.menu.dbg.Disabled.build.debug_port= generic.menu.dbg.Serial=Serial -generic.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +generic.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial generic.menu.dbg.Serial1=Serial1 -generic.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -generic.menu.dbg.Serial-dbg=Serial (full debug) -generic.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -generic.menu.dbg.Serial1-dbg=Serial1 (full debug) -generic.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +generic.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 generic.menu.lvl.None____=None generic.menu.lvl.None____.build.debug_level= +generic.menu.optim.Smallest=None +generic.menu.optim.Smallest.build.debug_optim= +generic.menu.optim.Lite=Lite +generic.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL generic.menu.lvl.TLS_MEM=TLS_MEM @@ -506,6 +510,7 @@ esp8285.serial.disableRTS=true esp8285.build.mcu=esp8266 esp8285.build.core=esp8266 esp8285.build.spiffs_pagesize=256 +esp8285.build.debug_optim= esp8285.build.debug_port= esp8285.build.debug_level= esp8285.menu.xtal.80=80 MHz @@ -741,15 +746,17 @@ esp8285.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT esp8285.menu.dbg.Disabled=Disabled esp8285.menu.dbg.Disabled.build.debug_port= esp8285.menu.dbg.Serial=Serial -esp8285.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +esp8285.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial esp8285.menu.dbg.Serial1=Serial1 -esp8285.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -esp8285.menu.dbg.Serial-dbg=Serial (full debug) -esp8285.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -esp8285.menu.dbg.Serial1-dbg=Serial1 (full debug) -esp8285.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +esp8285.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 esp8285.menu.lvl.None____=None esp8285.menu.lvl.None____.build.debug_level= +esp8285.menu.optim.Smallest=None +esp8285.menu.optim.Smallest.build.debug_optim= +esp8285.menu.optim.Lite=Lite +esp8285.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL esp8285.menu.lvl.TLS_MEM=TLS_MEM @@ -856,6 +863,7 @@ gen4iod.serial.disableRTS=true gen4iod.build.mcu=esp8266 gen4iod.build.core=esp8266 gen4iod.build.spiffs_pagesize=256 +gen4iod.build.debug_optim= gen4iod.build.debug_port= gen4iod.build.debug_level= gen4iod.menu.xtal.80=80 MHz @@ -1013,15 +1021,17 @@ gen4iod.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT gen4iod.menu.dbg.Disabled=Disabled gen4iod.menu.dbg.Disabled.build.debug_port= gen4iod.menu.dbg.Serial=Serial -gen4iod.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +gen4iod.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial gen4iod.menu.dbg.Serial1=Serial1 -gen4iod.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -gen4iod.menu.dbg.Serial-dbg=Serial (full debug) -gen4iod.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -gen4iod.menu.dbg.Serial1-dbg=Serial1 (full debug) -gen4iod.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +gen4iod.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 gen4iod.menu.lvl.None____=None gen4iod.menu.lvl.None____.build.debug_level= +gen4iod.menu.optim.Smallest=None +gen4iod.menu.optim.Smallest.build.debug_optim= +gen4iod.menu.optim.Lite=Lite +gen4iod.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL gen4iod.menu.lvl.TLS_MEM=TLS_MEM @@ -1127,6 +1137,7 @@ huzzah.serial.disableRTS=true huzzah.build.mcu=esp8266 huzzah.build.core=esp8266 huzzah.build.spiffs_pagesize=256 +huzzah.build.debug_optim= huzzah.build.debug_port= huzzah.build.debug_level= huzzah.menu.xtal.80=80 MHz @@ -1229,15 +1240,17 @@ huzzah.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATU huzzah.menu.dbg.Disabled=Disabled huzzah.menu.dbg.Disabled.build.debug_port= huzzah.menu.dbg.Serial=Serial -huzzah.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +huzzah.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial huzzah.menu.dbg.Serial1=Serial1 -huzzah.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -huzzah.menu.dbg.Serial-dbg=Serial (full debug) -huzzah.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -huzzah.menu.dbg.Serial1-dbg=Serial1 (full debug) -huzzah.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +huzzah.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 huzzah.menu.lvl.None____=None huzzah.menu.lvl.None____.build.debug_level= +huzzah.menu.optim.Smallest=None +huzzah.menu.optim.Smallest.build.debug_optim= +huzzah.menu.optim.Lite=Lite +huzzah.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL huzzah.menu.lvl.TLS_MEM=TLS_MEM @@ -1343,6 +1356,7 @@ wifi_slot.serial.disableRTS=true wifi_slot.build.mcu=esp8266 wifi_slot.build.core=esp8266 wifi_slot.build.spiffs_pagesize=256 +wifi_slot.build.debug_optim= wifi_slot.build.debug_port= wifi_slot.build.debug_level= wifi_slot.menu.xtal.80=80 MHz @@ -1539,15 +1553,17 @@ wifi_slot.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FE wifi_slot.menu.dbg.Disabled=Disabled wifi_slot.menu.dbg.Disabled.build.debug_port= wifi_slot.menu.dbg.Serial=Serial -wifi_slot.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +wifi_slot.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial wifi_slot.menu.dbg.Serial1=Serial1 -wifi_slot.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -wifi_slot.menu.dbg.Serial-dbg=Serial (full debug) -wifi_slot.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -wifi_slot.menu.dbg.Serial1-dbg=Serial1 (full debug) -wifi_slot.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +wifi_slot.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 wifi_slot.menu.lvl.None____=None wifi_slot.menu.lvl.None____.build.debug_level= +wifi_slot.menu.optim.Smallest=None +wifi_slot.menu.optim.Smallest.build.debug_optim= +wifi_slot.menu.optim.Lite=Lite +wifi_slot.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL wifi_slot.menu.lvl.TLS_MEM=TLS_MEM @@ -1665,6 +1681,7 @@ arduino-esp8266.build.mcu=esp8266 arduino-esp8266.build.core=esp8266 arduino-esp8266.build.variant=generic arduino-esp8266.build.spiffs_pagesize=256 +arduino-esp8266.build.debug_optim= arduino-esp8266.build.debug_port= arduino-esp8266.build.debug_level= arduino-esp8266.menu.xtal.80=80 MHz @@ -1767,15 +1784,17 @@ arduino-esp8266.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DL arduino-esp8266.menu.dbg.Disabled=Disabled arduino-esp8266.menu.dbg.Disabled.build.debug_port= arduino-esp8266.menu.dbg.Serial=Serial -arduino-esp8266.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +arduino-esp8266.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial arduino-esp8266.menu.dbg.Serial1=Serial1 -arduino-esp8266.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -arduino-esp8266.menu.dbg.Serial-dbg=Serial (full debug) -arduino-esp8266.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -arduino-esp8266.menu.dbg.Serial1-dbg=Serial1 (full debug) -arduino-esp8266.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +arduino-esp8266.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 arduino-esp8266.menu.lvl.None____=None arduino-esp8266.menu.lvl.None____.build.debug_level= +arduino-esp8266.menu.optim.Smallest=None +arduino-esp8266.menu.optim.Smallest.build.debug_optim= +arduino-esp8266.menu.optim.Lite=Lite +arduino-esp8266.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL arduino-esp8266.menu.lvl.TLS_MEM=TLS_MEM @@ -1882,6 +1901,7 @@ espmxdevkit.serial.disableRTS=true espmxdevkit.build.mcu=esp8266 espmxdevkit.build.core=esp8266 espmxdevkit.build.spiffs_pagesize=256 +espmxdevkit.build.debug_optim= espmxdevkit.build.debug_port= espmxdevkit.build.debug_level= espmxdevkit.menu.xtal.80=80 MHz @@ -2016,15 +2036,17 @@ espmxdevkit.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_ espmxdevkit.menu.dbg.Disabled=Disabled espmxdevkit.menu.dbg.Disabled.build.debug_port= espmxdevkit.menu.dbg.Serial=Serial -espmxdevkit.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +espmxdevkit.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial espmxdevkit.menu.dbg.Serial1=Serial1 -espmxdevkit.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -espmxdevkit.menu.dbg.Serial-dbg=Serial (full debug) -espmxdevkit.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -espmxdevkit.menu.dbg.Serial1-dbg=Serial1 (full debug) -espmxdevkit.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +espmxdevkit.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 espmxdevkit.menu.lvl.None____=None espmxdevkit.menu.lvl.None____.build.debug_level= +espmxdevkit.menu.optim.Smallest=None +espmxdevkit.menu.optim.Smallest.build.debug_optim= +espmxdevkit.menu.optim.Lite=Lite +espmxdevkit.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL espmxdevkit.menu.lvl.TLS_MEM=TLS_MEM @@ -2131,6 +2153,7 @@ oak.serial.disableRTS=true oak.build.mcu=esp8266 oak.build.core=esp8266 oak.build.spiffs_pagesize=256 +oak.build.debug_optim= oak.build.debug_port= oak.build.debug_level= oak.menu.xtal.80=80 MHz @@ -2233,15 +2256,17 @@ oak.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES oak.menu.dbg.Disabled=Disabled oak.menu.dbg.Disabled.build.debug_port= oak.menu.dbg.Serial=Serial -oak.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +oak.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial oak.menu.dbg.Serial1=Serial1 -oak.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -oak.menu.dbg.Serial-dbg=Serial (full debug) -oak.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -oak.menu.dbg.Serial1-dbg=Serial1 (full debug) -oak.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +oak.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 oak.menu.lvl.None____=None oak.menu.lvl.None____.build.debug_level= +oak.menu.optim.Smallest=None +oak.menu.optim.Smallest.build.debug_optim= +oak.menu.optim.Lite=Lite +oak.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL oak.menu.lvl.TLS_MEM=TLS_MEM @@ -2356,6 +2381,7 @@ espduino.serial.disableRTS=true espduino.build.mcu=esp8266 espduino.build.core=esp8266 espduino.build.spiffs_pagesize=256 +espduino.build.debug_optim= espduino.build.debug_port= espduino.build.debug_level= espduino.menu.xtal.80=80 MHz @@ -2457,15 +2483,17 @@ espduino.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEA espduino.menu.dbg.Disabled=Disabled espduino.menu.dbg.Disabled.build.debug_port= espduino.menu.dbg.Serial=Serial -espduino.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +espduino.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial espduino.menu.dbg.Serial1=Serial1 -espduino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -espduino.menu.dbg.Serial-dbg=Serial (full debug) -espduino.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -espduino.menu.dbg.Serial1-dbg=Serial1 (full debug) -espduino.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +espduino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 espduino.menu.lvl.None____=None espduino.menu.lvl.None____.build.debug_level= +espduino.menu.optim.Smallest=None +espduino.menu.optim.Smallest.build.debug_optim= +espduino.menu.optim.Lite=Lite +espduino.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL espduino.menu.lvl.TLS_MEM=TLS_MEM @@ -2571,6 +2599,7 @@ espectro.serial.disableRTS=true espectro.build.mcu=esp8266 espectro.build.core=esp8266 espectro.build.spiffs_pagesize=256 +espectro.build.debug_optim= espectro.build.debug_port= espectro.build.debug_level= espectro.menu.xtal.80=80 MHz @@ -2673,15 +2702,17 @@ espectro.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEA espectro.menu.dbg.Disabled=Disabled espectro.menu.dbg.Disabled.build.debug_port= espectro.menu.dbg.Serial=Serial -espectro.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +espectro.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial espectro.menu.dbg.Serial1=Serial1 -espectro.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -espectro.menu.dbg.Serial-dbg=Serial (full debug) -espectro.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -espectro.menu.dbg.Serial1-dbg=Serial1 (full debug) -espectro.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +espectro.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 espectro.menu.lvl.None____=None espectro.menu.lvl.None____.build.debug_level= +espectro.menu.optim.Smallest=None +espectro.menu.optim.Smallest.build.debug_optim= +espectro.menu.optim.Lite=Lite +espectro.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL espectro.menu.lvl.TLS_MEM=TLS_MEM @@ -2787,6 +2818,7 @@ espino.serial.disableRTS=true espino.build.mcu=esp8266 espino.build.core=esp8266 espino.build.spiffs_pagesize=256 +espino.build.debug_optim= espino.build.debug_port= espino.build.debug_level= espino.menu.xtal.80=80 MHz @@ -2892,15 +2924,17 @@ espino.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATU espino.menu.dbg.Disabled=Disabled espino.menu.dbg.Disabled.build.debug_port= espino.menu.dbg.Serial=Serial -espino.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +espino.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial espino.menu.dbg.Serial1=Serial1 -espino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -espino.menu.dbg.Serial-dbg=Serial (full debug) -espino.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -espino.menu.dbg.Serial1-dbg=Serial1 (full debug) -espino.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +espino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 espino.menu.lvl.None____=None espino.menu.lvl.None____.build.debug_level= +espino.menu.optim.Smallest=None +espino.menu.optim.Smallest.build.debug_optim= +espino.menu.optim.Lite=Lite +espino.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL espino.menu.lvl.TLS_MEM=TLS_MEM @@ -3006,6 +3040,7 @@ espresso_lite_v1.serial.disableRTS=true espresso_lite_v1.build.mcu=esp8266 espresso_lite_v1.build.core=esp8266 espresso_lite_v1.build.spiffs_pagesize=256 +espresso_lite_v1.build.debug_optim= espresso_lite_v1.build.debug_port= espresso_lite_v1.build.debug_level= espresso_lite_v1.menu.xtal.80=80 MHz @@ -3111,15 +3146,17 @@ espresso_lite_v1.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -D espresso_lite_v1.menu.dbg.Disabled=Disabled espresso_lite_v1.menu.dbg.Disabled.build.debug_port= espresso_lite_v1.menu.dbg.Serial=Serial -espresso_lite_v1.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +espresso_lite_v1.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial espresso_lite_v1.menu.dbg.Serial1=Serial1 -espresso_lite_v1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -espresso_lite_v1.menu.dbg.Serial-dbg=Serial (full debug) -espresso_lite_v1.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -espresso_lite_v1.menu.dbg.Serial1-dbg=Serial1 (full debug) -espresso_lite_v1.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +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____.build.debug_level= +espresso_lite_v1.menu.optim.Smallest=None +espresso_lite_v1.menu.optim.Smallest.build.debug_optim= +espresso_lite_v1.menu.optim.Lite=Lite +espresso_lite_v1.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL espresso_lite_v1.menu.lvl.TLS_MEM=TLS_MEM @@ -3225,6 +3262,7 @@ espresso_lite_v2.serial.disableRTS=true espresso_lite_v2.build.mcu=esp8266 espresso_lite_v2.build.core=esp8266 espresso_lite_v2.build.spiffs_pagesize=256 +espresso_lite_v2.build.debug_optim= espresso_lite_v2.build.debug_port= espresso_lite_v2.build.debug_level= espresso_lite_v2.menu.xtal.80=80 MHz @@ -3330,15 +3368,17 @@ espresso_lite_v2.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -D espresso_lite_v2.menu.dbg.Disabled=Disabled espresso_lite_v2.menu.dbg.Disabled.build.debug_port= espresso_lite_v2.menu.dbg.Serial=Serial -espresso_lite_v2.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +espresso_lite_v2.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial espresso_lite_v2.menu.dbg.Serial1=Serial1 -espresso_lite_v2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -espresso_lite_v2.menu.dbg.Serial-dbg=Serial (full debug) -espresso_lite_v2.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -espresso_lite_v2.menu.dbg.Serial1-dbg=Serial1 (full debug) -espresso_lite_v2.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +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____.build.debug_level= +espresso_lite_v2.menu.optim.Smallest=None +espresso_lite_v2.menu.optim.Smallest.build.debug_optim= +espresso_lite_v2.menu.optim.Lite=Lite +espresso_lite_v2.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL espresso_lite_v2.menu.lvl.TLS_MEM=TLS_MEM @@ -3453,6 +3493,7 @@ sonoff.serial.disableRTS=true sonoff.build.mcu=esp8266 sonoff.build.core=esp8266 sonoff.build.spiffs_pagesize=256 +sonoff.build.debug_optim= sonoff.build.debug_port= sonoff.build.debug_level= sonoff.menu.xtal.80=80 MHz @@ -3587,15 +3628,17 @@ sonoff.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATU sonoff.menu.dbg.Disabled=Disabled sonoff.menu.dbg.Disabled.build.debug_port= sonoff.menu.dbg.Serial=Serial -sonoff.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +sonoff.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial sonoff.menu.dbg.Serial1=Serial1 -sonoff.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -sonoff.menu.dbg.Serial-dbg=Serial (full debug) -sonoff.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -sonoff.menu.dbg.Serial1-dbg=Serial1 (full debug) -sonoff.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +sonoff.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 sonoff.menu.lvl.None____=None sonoff.menu.lvl.None____.build.debug_level= +sonoff.menu.optim.Smallest=None +sonoff.menu.optim.Smallest.build.debug_optim= +sonoff.menu.optim.Lite=Lite +sonoff.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL sonoff.menu.lvl.TLS_MEM=TLS_MEM @@ -3701,6 +3744,7 @@ inventone.serial.disableRTS=true inventone.build.mcu=esp8266 inventone.build.core=esp8266 inventone.build.spiffs_pagesize=256 +inventone.build.debug_optim= inventone.build.debug_port= inventone.build.debug_level= inventone.menu.xtal.80=80 MHz @@ -3803,15 +3847,17 @@ inventone.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FE inventone.menu.dbg.Disabled=Disabled inventone.menu.dbg.Disabled.build.debug_port= inventone.menu.dbg.Serial=Serial -inventone.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +inventone.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial inventone.menu.dbg.Serial1=Serial1 -inventone.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -inventone.menu.dbg.Serial-dbg=Serial (full debug) -inventone.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -inventone.menu.dbg.Serial1-dbg=Serial1 (full debug) -inventone.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +inventone.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 inventone.menu.lvl.None____=None inventone.menu.lvl.None____.build.debug_level= +inventone.menu.optim.Smallest=None +inventone.menu.optim.Smallest.build.debug_optim= +inventone.menu.optim.Lite=Lite +inventone.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL inventone.menu.lvl.TLS_MEM=TLS_MEM @@ -3917,6 +3963,7 @@ d1_wroom_02.serial.disableRTS=true d1_wroom_02.build.mcu=esp8266 d1_wroom_02.build.core=esp8266 d1_wroom_02.build.spiffs_pagesize=256 +d1_wroom_02.build.debug_optim= d1_wroom_02.build.debug_port= d1_wroom_02.build.debug_level= d1_wroom_02.menu.xtal.80=80 MHz @@ -4035,15 +4082,17 @@ d1_wroom_02.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_ d1_wroom_02.menu.dbg.Disabled=Disabled d1_wroom_02.menu.dbg.Disabled.build.debug_port= d1_wroom_02.menu.dbg.Serial=Serial -d1_wroom_02.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +d1_wroom_02.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial d1_wroom_02.menu.dbg.Serial1=Serial1 -d1_wroom_02.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -d1_wroom_02.menu.dbg.Serial-dbg=Serial (full debug) -d1_wroom_02.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -d1_wroom_02.menu.dbg.Serial1-dbg=Serial1 (full debug) -d1_wroom_02.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +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____.build.debug_level= +d1_wroom_02.menu.optim.Smallest=None +d1_wroom_02.menu.optim.Smallest.build.debug_optim= +d1_wroom_02.menu.optim.Lite=Lite +d1_wroom_02.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL d1_wroom_02.menu.lvl.TLS_MEM=TLS_MEM @@ -4149,6 +4198,7 @@ d1_mini.serial.disableRTS=true d1_mini.build.mcu=esp8266 d1_mini.build.core=esp8266 d1_mini.build.spiffs_pagesize=256 +d1_mini.build.debug_optim= d1_mini.build.debug_port= d1_mini.build.debug_level= d1_mini.menu.xtal.80=80 MHz @@ -4251,15 +4301,17 @@ d1_mini.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT d1_mini.menu.dbg.Disabled=Disabled d1_mini.menu.dbg.Disabled.build.debug_port= d1_mini.menu.dbg.Serial=Serial -d1_mini.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +d1_mini.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial d1_mini.menu.dbg.Serial1=Serial1 -d1_mini.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -d1_mini.menu.dbg.Serial-dbg=Serial (full debug) -d1_mini.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -d1_mini.menu.dbg.Serial1-dbg=Serial1 (full debug) -d1_mini.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +d1_mini.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 d1_mini.menu.lvl.None____=None d1_mini.menu.lvl.None____.build.debug_level= +d1_mini.menu.optim.Smallest=None +d1_mini.menu.optim.Smallest.build.debug_optim= +d1_mini.menu.optim.Lite=Lite +d1_mini.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL d1_mini.menu.lvl.TLS_MEM=TLS_MEM @@ -4365,6 +4417,7 @@ d1_mini_clone.serial.disableRTS=true d1_mini_clone.build.mcu=esp8266 d1_mini_clone.build.core=esp8266 d1_mini_clone.build.spiffs_pagesize=256 +d1_mini_clone.build.debug_optim= d1_mini_clone.build.debug_port= d1_mini_clone.build.debug_level= d1_mini_clone.menu.xtal.80=80 MHz @@ -4484,15 +4537,17 @@ d1_mini_clone.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWI d1_mini_clone.menu.dbg.Disabled=Disabled d1_mini_clone.menu.dbg.Disabled.build.debug_port= d1_mini_clone.menu.dbg.Serial=Serial -d1_mini_clone.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +d1_mini_clone.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial d1_mini_clone.menu.dbg.Serial1=Serial1 -d1_mini_clone.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -d1_mini_clone.menu.dbg.Serial-dbg=Serial (full debug) -d1_mini_clone.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -d1_mini_clone.menu.dbg.Serial1-dbg=Serial1 (full debug) -d1_mini_clone.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +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____.build.debug_level= +d1_mini_clone.menu.optim.Smallest=None +d1_mini_clone.menu.optim.Smallest.build.debug_optim= +d1_mini_clone.menu.optim.Lite=Lite +d1_mini_clone.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL d1_mini_clone.menu.lvl.TLS_MEM=TLS_MEM @@ -4598,6 +4653,7 @@ d1_mini_lite.serial.disableRTS=true d1_mini_lite.build.mcu=esp8266 d1_mini_lite.build.core=esp8266 d1_mini_lite.build.spiffs_pagesize=256 +d1_mini_lite.build.debug_optim= d1_mini_lite.build.debug_port= d1_mini_lite.build.debug_level= d1_mini_lite.menu.xtal.80=80 MHz @@ -4732,15 +4788,17 @@ d1_mini_lite.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP d1_mini_lite.menu.dbg.Disabled=Disabled d1_mini_lite.menu.dbg.Disabled.build.debug_port= d1_mini_lite.menu.dbg.Serial=Serial -d1_mini_lite.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +d1_mini_lite.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial d1_mini_lite.menu.dbg.Serial1=Serial1 -d1_mini_lite.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -d1_mini_lite.menu.dbg.Serial-dbg=Serial (full debug) -d1_mini_lite.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -d1_mini_lite.menu.dbg.Serial1-dbg=Serial1 (full debug) -d1_mini_lite.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +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____.build.debug_level= +d1_mini_lite.menu.optim.Smallest=None +d1_mini_lite.menu.optim.Smallest.build.debug_optim= +d1_mini_lite.menu.optim.Lite=Lite +d1_mini_lite.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL d1_mini_lite.menu.lvl.TLS_MEM=TLS_MEM @@ -4846,6 +4904,7 @@ d1_mini_pro.serial.disableRTS=true d1_mini_pro.build.mcu=esp8266 d1_mini_pro.build.core=esp8266 d1_mini_pro.build.spiffs_pagesize=256 +d1_mini_pro.build.debug_optim= d1_mini_pro.build.debug_port= d1_mini_pro.build.debug_level= d1_mini_pro.menu.xtal.80=80 MHz @@ -4940,15 +4999,17 @@ d1_mini_pro.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_ d1_mini_pro.menu.dbg.Disabled=Disabled d1_mini_pro.menu.dbg.Disabled.build.debug_port= d1_mini_pro.menu.dbg.Serial=Serial -d1_mini_pro.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +d1_mini_pro.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial d1_mini_pro.menu.dbg.Serial1=Serial1 -d1_mini_pro.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -d1_mini_pro.menu.dbg.Serial-dbg=Serial (full debug) -d1_mini_pro.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -d1_mini_pro.menu.dbg.Serial1-dbg=Serial1 (full debug) -d1_mini_pro.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +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____.build.debug_level= +d1_mini_pro.menu.optim.Smallest=None +d1_mini_pro.menu.optim.Smallest.build.debug_optim= +d1_mini_pro.menu.optim.Lite=Lite +d1_mini_pro.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL d1_mini_pro.menu.lvl.TLS_MEM=TLS_MEM @@ -5054,6 +5115,7 @@ d1.serial.disableRTS=true d1.build.mcu=esp8266 d1.build.core=esp8266 d1.build.spiffs_pagesize=256 +d1.build.debug_optim= d1.build.debug_port= d1.build.debug_level= d1.menu.xtal.80=80 MHz @@ -5156,15 +5218,17 @@ d1.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES= d1.menu.dbg.Disabled=Disabled d1.menu.dbg.Disabled.build.debug_port= d1.menu.dbg.Serial=Serial -d1.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +d1.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial d1.menu.dbg.Serial1=Serial1 -d1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -d1.menu.dbg.Serial-dbg=Serial (full debug) -d1.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -d1.menu.dbg.Serial1-dbg=Serial1 (full debug) -d1.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +d1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 d1.menu.lvl.None____=None d1.menu.lvl.None____.build.debug_level= +d1.menu.optim.Smallest=None +d1.menu.optim.Smallest.build.debug_optim= +d1.menu.optim.Lite=Lite +d1.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL d1.menu.lvl.TLS_MEM=TLS_MEM @@ -5270,6 +5334,7 @@ agruminolemon.serial.disableRTS=true agruminolemon.build.mcu=esp8266 agruminolemon.build.core=esp8266 agruminolemon.build.spiffs_pagesize=256 +agruminolemon.build.debug_optim= agruminolemon.build.debug_port= agruminolemon.build.debug_level= agruminolemon.menu.xtal.80=80 MHz @@ -5388,15 +5453,17 @@ agruminolemon.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWI agruminolemon.menu.dbg.Disabled=Disabled agruminolemon.menu.dbg.Disabled.build.debug_port= agruminolemon.menu.dbg.Serial=Serial -agruminolemon.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +agruminolemon.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial agruminolemon.menu.dbg.Serial1=Serial1 -agruminolemon.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -agruminolemon.menu.dbg.Serial-dbg=Serial (full debug) -agruminolemon.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -agruminolemon.menu.dbg.Serial1-dbg=Serial1 (full debug) -agruminolemon.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +agruminolemon.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 agruminolemon.menu.lvl.None____=None agruminolemon.menu.lvl.None____.build.debug_level= +agruminolemon.menu.optim.Smallest=None +agruminolemon.menu.optim.Smallest.build.debug_optim= +agruminolemon.menu.optim.Lite=Lite +agruminolemon.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL agruminolemon.menu.lvl.TLS_MEM=TLS_MEM @@ -5502,6 +5569,7 @@ nodemcu.serial.disableRTS=true nodemcu.build.mcu=esp8266 nodemcu.build.core=esp8266 nodemcu.build.spiffs_pagesize=256 +nodemcu.build.debug_optim= nodemcu.build.debug_port= nodemcu.build.debug_level= nodemcu.menu.xtal.80=80 MHz @@ -5604,15 +5672,17 @@ nodemcu.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT nodemcu.menu.dbg.Disabled=Disabled nodemcu.menu.dbg.Disabled.build.debug_port= nodemcu.menu.dbg.Serial=Serial -nodemcu.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +nodemcu.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial nodemcu.menu.dbg.Serial1=Serial1 -nodemcu.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -nodemcu.menu.dbg.Serial-dbg=Serial (full debug) -nodemcu.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -nodemcu.menu.dbg.Serial1-dbg=Serial1 (full debug) -nodemcu.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +nodemcu.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 nodemcu.menu.lvl.None____=None nodemcu.menu.lvl.None____.build.debug_level= +nodemcu.menu.optim.Smallest=None +nodemcu.menu.optim.Smallest.build.debug_optim= +nodemcu.menu.optim.Lite=Lite +nodemcu.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL nodemcu.menu.lvl.TLS_MEM=TLS_MEM @@ -5718,6 +5788,7 @@ nodemcuv2.serial.disableRTS=true nodemcuv2.build.mcu=esp8266 nodemcuv2.build.core=esp8266 nodemcuv2.build.spiffs_pagesize=256 +nodemcuv2.build.debug_optim= nodemcuv2.build.debug_port= nodemcuv2.build.debug_level= nodemcuv2.menu.xtal.80=80 MHz @@ -5824,15 +5895,17 @@ nodemcuv2.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FE nodemcuv2.menu.dbg.Disabled=Disabled nodemcuv2.menu.dbg.Disabled.build.debug_port= nodemcuv2.menu.dbg.Serial=Serial -nodemcuv2.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +nodemcuv2.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial nodemcuv2.menu.dbg.Serial1=Serial1 -nodemcuv2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -nodemcuv2.menu.dbg.Serial-dbg=Serial (full debug) -nodemcuv2.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -nodemcuv2.menu.dbg.Serial1-dbg=Serial1 (full debug) -nodemcuv2.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +nodemcuv2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 nodemcuv2.menu.lvl.None____=None nodemcuv2.menu.lvl.None____.build.debug_level= +nodemcuv2.menu.optim.Smallest=None +nodemcuv2.menu.optim.Smallest.build.debug_optim= +nodemcuv2.menu.optim.Lite=Lite +nodemcuv2.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL nodemcuv2.menu.lvl.TLS_MEM=TLS_MEM @@ -5938,6 +6011,7 @@ modwifi.serial.disableRTS=true modwifi.build.mcu=esp8266 modwifi.build.core=esp8266 modwifi.build.spiffs_pagesize=256 +modwifi.build.debug_optim= modwifi.build.debug_port= modwifi.build.debug_level= modwifi.menu.xtal.80=80 MHz @@ -6071,15 +6145,17 @@ modwifi.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT modwifi.menu.dbg.Disabled=Disabled modwifi.menu.dbg.Disabled.build.debug_port= modwifi.menu.dbg.Serial=Serial -modwifi.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +modwifi.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial modwifi.menu.dbg.Serial1=Serial1 -modwifi.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -modwifi.menu.dbg.Serial-dbg=Serial (full debug) -modwifi.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -modwifi.menu.dbg.Serial1-dbg=Serial1 (full debug) -modwifi.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +modwifi.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 modwifi.menu.lvl.None____=None modwifi.menu.lvl.None____.build.debug_level= +modwifi.menu.optim.Smallest=None +modwifi.menu.optim.Smallest.build.debug_optim= +modwifi.menu.optim.Lite=Lite +modwifi.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL modwifi.menu.lvl.TLS_MEM=TLS_MEM @@ -6185,6 +6261,7 @@ phoenix_v1.serial.disableRTS=true phoenix_v1.build.mcu=esp8266 phoenix_v1.build.core=esp8266 phoenix_v1.build.spiffs_pagesize=256 +phoenix_v1.build.debug_optim= phoenix_v1.build.debug_port= phoenix_v1.build.debug_level= phoenix_v1.menu.xtal.80=80 MHz @@ -6290,15 +6367,17 @@ phoenix_v1.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_F phoenix_v1.menu.dbg.Disabled=Disabled phoenix_v1.menu.dbg.Disabled.build.debug_port= phoenix_v1.menu.dbg.Serial=Serial -phoenix_v1.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +phoenix_v1.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial phoenix_v1.menu.dbg.Serial1=Serial1 -phoenix_v1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -phoenix_v1.menu.dbg.Serial-dbg=Serial (full debug) -phoenix_v1.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -phoenix_v1.menu.dbg.Serial1-dbg=Serial1 (full debug) -phoenix_v1.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +phoenix_v1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 phoenix_v1.menu.lvl.None____=None phoenix_v1.menu.lvl.None____.build.debug_level= +phoenix_v1.menu.optim.Smallest=None +phoenix_v1.menu.optim.Smallest.build.debug_optim= +phoenix_v1.menu.optim.Lite=Lite +phoenix_v1.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL phoenix_v1.menu.lvl.TLS_MEM=TLS_MEM @@ -6404,6 +6483,7 @@ phoenix_v2.serial.disableRTS=true phoenix_v2.build.mcu=esp8266 phoenix_v2.build.core=esp8266 phoenix_v2.build.spiffs_pagesize=256 +phoenix_v2.build.debug_optim= phoenix_v2.build.debug_port= phoenix_v2.build.debug_level= phoenix_v2.menu.xtal.80=80 MHz @@ -6509,15 +6589,17 @@ phoenix_v2.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_F phoenix_v2.menu.dbg.Disabled=Disabled phoenix_v2.menu.dbg.Disabled.build.debug_port= phoenix_v2.menu.dbg.Serial=Serial -phoenix_v2.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +phoenix_v2.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial phoenix_v2.menu.dbg.Serial1=Serial1 -phoenix_v2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -phoenix_v2.menu.dbg.Serial-dbg=Serial (full debug) -phoenix_v2.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -phoenix_v2.menu.dbg.Serial1-dbg=Serial1 (full debug) -phoenix_v2.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +phoenix_v2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 phoenix_v2.menu.lvl.None____=None phoenix_v2.menu.lvl.None____.build.debug_level= +phoenix_v2.menu.optim.Smallest=None +phoenix_v2.menu.optim.Smallest.build.debug_optim= +phoenix_v2.menu.optim.Lite=Lite +phoenix_v2.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL phoenix_v2.menu.lvl.TLS_MEM=TLS_MEM @@ -6623,6 +6705,7 @@ eduinowifi.serial.disableRTS=true eduinowifi.build.mcu=esp8266 eduinowifi.build.core=esp8266 eduinowifi.build.spiffs_pagesize=256 +eduinowifi.build.debug_optim= eduinowifi.build.debug_port= eduinowifi.build.debug_level= eduinowifi.menu.xtal.80=80 MHz @@ -6725,15 +6808,17 @@ eduinowifi.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_F eduinowifi.menu.dbg.Disabled=Disabled eduinowifi.menu.dbg.Disabled.build.debug_port= eduinowifi.menu.dbg.Serial=Serial -eduinowifi.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +eduinowifi.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial eduinowifi.menu.dbg.Serial1=Serial1 -eduinowifi.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -eduinowifi.menu.dbg.Serial-dbg=Serial (full debug) -eduinowifi.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -eduinowifi.menu.dbg.Serial1-dbg=Serial1 (full debug) -eduinowifi.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +eduinowifi.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 eduinowifi.menu.lvl.None____=None eduinowifi.menu.lvl.None____.build.debug_level= +eduinowifi.menu.optim.Smallest=None +eduinowifi.menu.optim.Smallest.build.debug_optim= +eduinowifi.menu.optim.Lite=Lite +eduinowifi.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL eduinowifi.menu.lvl.TLS_MEM=TLS_MEM @@ -6839,6 +6924,7 @@ wiolink.serial.disableRTS=true wiolink.build.mcu=esp8266 wiolink.build.core=esp8266 wiolink.build.spiffs_pagesize=256 +wiolink.build.debug_optim= wiolink.build.debug_port= wiolink.build.debug_level= wiolink.menu.xtal.80=80 MHz @@ -6941,15 +7027,17 @@ wiolink.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT wiolink.menu.dbg.Disabled=Disabled wiolink.menu.dbg.Disabled.build.debug_port= wiolink.menu.dbg.Serial=Serial -wiolink.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +wiolink.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial wiolink.menu.dbg.Serial1=Serial1 -wiolink.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -wiolink.menu.dbg.Serial-dbg=Serial (full debug) -wiolink.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -wiolink.menu.dbg.Serial1-dbg=Serial1 (full debug) -wiolink.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +wiolink.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 wiolink.menu.lvl.None____=None wiolink.menu.lvl.None____.build.debug_level= +wiolink.menu.optim.Smallest=None +wiolink.menu.optim.Smallest.build.debug_optim= +wiolink.menu.optim.Lite=Lite +wiolink.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL wiolink.menu.lvl.TLS_MEM=TLS_MEM @@ -7055,6 +7143,7 @@ blynk.serial.disableRTS=true blynk.build.mcu=esp8266 blynk.build.core=esp8266 blynk.build.spiffs_pagesize=256 +blynk.build.debug_optim= blynk.build.debug_port= blynk.build.debug_level= blynk.menu.xtal.80=80 MHz @@ -7157,15 +7246,17 @@ blynk.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATUR blynk.menu.dbg.Disabled=Disabled blynk.menu.dbg.Disabled.build.debug_port= blynk.menu.dbg.Serial=Serial -blynk.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +blynk.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial blynk.menu.dbg.Serial1=Serial1 -blynk.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -blynk.menu.dbg.Serial-dbg=Serial (full debug) -blynk.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -blynk.menu.dbg.Serial1-dbg=Serial1 (full debug) -blynk.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +blynk.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 blynk.menu.lvl.None____=None blynk.menu.lvl.None____.build.debug_level= +blynk.menu.optim.Smallest=None +blynk.menu.optim.Smallest.build.debug_optim= +blynk.menu.optim.Lite=Lite +blynk.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL blynk.menu.lvl.TLS_MEM=TLS_MEM @@ -7271,6 +7362,7 @@ thing.serial.disableRTS=true thing.build.mcu=esp8266 thing.build.core=esp8266 thing.build.spiffs_pagesize=256 +thing.build.debug_optim= thing.build.debug_port= thing.build.debug_level= thing.menu.xtal.80=80 MHz @@ -7373,15 +7465,17 @@ thing.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATUR thing.menu.dbg.Disabled=Disabled thing.menu.dbg.Disabled.build.debug_port= thing.menu.dbg.Serial=Serial -thing.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +thing.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial thing.menu.dbg.Serial1=Serial1 -thing.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -thing.menu.dbg.Serial-dbg=Serial (full debug) -thing.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -thing.menu.dbg.Serial1-dbg=Serial1 (full debug) -thing.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +thing.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 thing.menu.lvl.None____=None thing.menu.lvl.None____.build.debug_level= +thing.menu.optim.Smallest=None +thing.menu.optim.Smallest.build.debug_optim= +thing.menu.optim.Lite=Lite +thing.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL thing.menu.lvl.TLS_MEM=TLS_MEM @@ -7487,6 +7581,7 @@ thingdev.serial.disableRTS=true thingdev.build.mcu=esp8266 thingdev.build.core=esp8266 thingdev.build.spiffs_pagesize=256 +thingdev.build.debug_optim= thingdev.build.debug_port= thingdev.build.debug_level= thingdev.menu.xtal.80=80 MHz @@ -7589,15 +7684,17 @@ thingdev.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEA thingdev.menu.dbg.Disabled=Disabled thingdev.menu.dbg.Disabled.build.debug_port= thingdev.menu.dbg.Serial=Serial -thingdev.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +thingdev.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial thingdev.menu.dbg.Serial1=Serial1 -thingdev.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -thingdev.menu.dbg.Serial-dbg=Serial (full debug) -thingdev.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -thingdev.menu.dbg.Serial1-dbg=Serial1 (full debug) -thingdev.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +thingdev.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 thingdev.menu.lvl.None____=None thingdev.menu.lvl.None____.build.debug_level= +thingdev.menu.optim.Smallest=None +thingdev.menu.optim.Smallest.build.debug_optim= +thingdev.menu.optim.Lite=Lite +thingdev.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL thingdev.menu.lvl.TLS_MEM=TLS_MEM @@ -7703,6 +7800,7 @@ esp210.build.mcu=esp8266 esp210.build.core=esp8266 esp210.build.variant=generic esp210.build.spiffs_pagesize=256 +esp210.build.debug_optim= esp210.build.debug_port= esp210.build.debug_level= esp210.menu.xtal.80=80 MHz @@ -7805,15 +7903,17 @@ esp210.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATU esp210.menu.dbg.Disabled=Disabled esp210.menu.dbg.Disabled.build.debug_port= esp210.menu.dbg.Serial=Serial -esp210.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +esp210.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial esp210.menu.dbg.Serial1=Serial1 -esp210.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -esp210.menu.dbg.Serial-dbg=Serial (full debug) -esp210.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -esp210.menu.dbg.Serial1-dbg=Serial1 (full debug) -esp210.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +esp210.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 esp210.menu.lvl.None____=None esp210.menu.lvl.None____.build.debug_level= +esp210.menu.optim.Smallest=None +esp210.menu.optim.Smallest.build.debug_optim= +esp210.menu.optim.Lite=Lite +esp210.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL esp210.menu.lvl.TLS_MEM=TLS_MEM @@ -7919,6 +8019,7 @@ espinotee.serial.disableRTS=true espinotee.build.mcu=esp8266 espinotee.build.core=esp8266 espinotee.build.spiffs_pagesize=256 +espinotee.build.debug_optim= espinotee.build.debug_port= espinotee.build.debug_level= espinotee.menu.xtal.80=80 MHz @@ -8021,15 +8122,17 @@ espinotee.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FE espinotee.menu.dbg.Disabled=Disabled espinotee.menu.dbg.Disabled.build.debug_port= espinotee.menu.dbg.Serial=Serial -espinotee.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +espinotee.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial espinotee.menu.dbg.Serial1=Serial1 -espinotee.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -espinotee.menu.dbg.Serial-dbg=Serial (full debug) -espinotee.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -espinotee.menu.dbg.Serial1-dbg=Serial1 (full debug) -espinotee.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +espinotee.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 espinotee.menu.lvl.None____=None espinotee.menu.lvl.None____.build.debug_level= +espinotee.menu.optim.Smallest=None +espinotee.menu.optim.Smallest.build.debug_optim= +espinotee.menu.optim.Lite=Lite +espinotee.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL espinotee.menu.lvl.TLS_MEM=TLS_MEM @@ -8135,6 +8238,7 @@ wifi_kit_8.serial.disableRTS=true wifi_kit_8.build.mcu=esp8266 wifi_kit_8.build.core=esp8266 wifi_kit_8.build.spiffs_pagesize=256 +wifi_kit_8.build.debug_optim= wifi_kit_8.build.debug_port= wifi_kit_8.build.debug_level= wifi_kit_8.menu.xtal.80=80 MHz @@ -8237,15 +8341,17 @@ wifi_kit_8.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_F wifi_kit_8.menu.dbg.Disabled=Disabled wifi_kit_8.menu.dbg.Disabled.build.debug_port= wifi_kit_8.menu.dbg.Serial=Serial -wifi_kit_8.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +wifi_kit_8.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial wifi_kit_8.menu.dbg.Serial1=Serial1 -wifi_kit_8.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -wifi_kit_8.menu.dbg.Serial-dbg=Serial (full debug) -wifi_kit_8.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -wifi_kit_8.menu.dbg.Serial1-dbg=Serial1 (full debug) -wifi_kit_8.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +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____.build.debug_level= +wifi_kit_8.menu.optim.Smallest=None +wifi_kit_8.menu.optim.Smallest.build.debug_optim= +wifi_kit_8.menu.optim.Lite=Lite +wifi_kit_8.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL wifi_kit_8.menu.lvl.TLS_MEM=TLS_MEM @@ -8351,6 +8457,7 @@ wifiduino.serial.disableRTS=true wifiduino.build.mcu=esp8266 wifiduino.build.core=esp8266 wifiduino.build.spiffs_pagesize=256 +wifiduino.build.debug_optim= wifiduino.build.debug_port= wifiduino.build.debug_level= wifiduino.menu.xtal.80=80 MHz @@ -8453,15 +8560,17 @@ wifiduino.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FE wifiduino.menu.dbg.Disabled=Disabled wifiduino.menu.dbg.Disabled.build.debug_port= wifiduino.menu.dbg.Serial=Serial -wifiduino.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +wifiduino.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial wifiduino.menu.dbg.Serial1=Serial1 -wifiduino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -wifiduino.menu.dbg.Serial-dbg=Serial (full debug) -wifiduino.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -wifiduino.menu.dbg.Serial1-dbg=Serial1 (full debug) -wifiduino.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +wifiduino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 wifiduino.menu.lvl.None____=None wifiduino.menu.lvl.None____.build.debug_level= +wifiduino.menu.optim.Smallest=None +wifiduino.menu.optim.Smallest.build.debug_optim= +wifiduino.menu.optim.Lite=Lite +wifiduino.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL wifiduino.menu.lvl.TLS_MEM=TLS_MEM @@ -8584,6 +8693,7 @@ wifinfo.serial.disableRTS=true wifinfo.build.mcu=esp8266 wifinfo.build.core=esp8266 wifinfo.build.spiffs_pagesize=256 +wifinfo.build.debug_optim= wifinfo.build.debug_port= wifinfo.build.debug_level= wifinfo.menu.xtal.80=80 MHz @@ -8725,15 +8835,17 @@ wifinfo.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEAT wifinfo.menu.dbg.Disabled=Disabled wifinfo.menu.dbg.Disabled.build.debug_port= wifinfo.menu.dbg.Serial=Serial -wifinfo.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +wifinfo.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial wifinfo.menu.dbg.Serial1=Serial1 -wifinfo.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -wifinfo.menu.dbg.Serial-dbg=Serial (full debug) -wifinfo.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -wifinfo.menu.dbg.Serial1-dbg=Serial1 (full debug) -wifinfo.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +wifinfo.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 wifinfo.menu.lvl.None____=None wifinfo.menu.lvl.None____.build.debug_level= +wifinfo.menu.optim.Smallest=None +wifinfo.menu.optim.Smallest.build.debug_optim= +wifinfo.menu.optim.Lite=Lite +wifinfo.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL wifinfo.menu.lvl.TLS_MEM=TLS_MEM @@ -8839,6 +8951,7 @@ cw01.serial.disableRTS=true cw01.build.mcu=esp8266 cw01.build.core=esp8266 cw01.build.spiffs_pagesize=256 +cw01.build.debug_optim= cw01.build.debug_port= cw01.build.debug_level= cw01.menu.xtal.80=80 MHz @@ -8944,15 +9057,17 @@ cw01.menu.ip.hb6f.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURE cw01.menu.dbg.Disabled=Disabled cw01.menu.dbg.Disabled.build.debug_port= cw01.menu.dbg.Serial=Serial -cw01.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls +cw01.menu.dbg.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial cw01.menu.dbg.Serial1=Serial1 -cw01.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls -cw01.menu.dbg.Serial-dbg=Serial (full debug) -cw01.menu.dbg.Serial-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial -Og -cw01.menu.dbg.Serial1-dbg=Serial1 (full debug) -cw01.menu.dbg.Serial1-dbg.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -Og +cw01.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 cw01.menu.lvl.None____=None cw01.menu.lvl.None____.build.debug_level= +cw01.menu.optim.Smallest=None +cw01.menu.optim.Smallest.build.debug_optim= +cw01.menu.optim.Lite=Lite +cw01.menu.optim.Lite.build.debug_optim=-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.build.debug_level= -DDEBUG_ESP_SSL cw01.menu.lvl.TLS_MEM=TLS_MEM diff --git a/doc/faq/a02-my-esp-crashes.rst b/doc/faq/a02-my-esp-crashes.rst index 0f77fb999f..5a5f6e06f6 100644 --- a/doc/faq/a02-my-esp-crashes.rst +++ b/doc/faq/a02-my-esp-crashes.rst @@ -281,17 +281,17 @@ dropped. The same procedure applies to crashes caused by exceptions. Improving Exception Decoder Results ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -When you select a ``Debug port`` 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 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. - -If you are not using the ``Debug port`` and need to improve the results of the -Exception Decoder, you can add ``-Og`` or ``-fno-optimize-sibling-calls`` -to your build options. For details on how to do this, review +When you select ``Debug Priority: 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 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. + +If you are not using the ``Debug Priority`` and need to improve the results of +the Exception Decoder, you can add ``-Og`` or ``-fno-optimize-sibling-calls`` +to your build options. For details on how to do this, read `Global Build Options `__. For non-Arduino IDE build platforms, you may need to research how to add diff --git a/doc/ideoptions.rst b/doc/ideoptions.rst index b39c4144d1..4de1fc83b2 100644 --- a/doc/ideoptions.rst +++ b/doc/ideoptions.rst @@ -129,6 +129,34 @@ There are a number of options. - The other ones may be used when asked by a maintainer or if you are a developper trying to debug some issues. +Debug Priority +~~~~~~~~~~~~~~ + +Due to the limited resources on the device, the compiler's default optimizations +focus on creating the smallest code size (``.bin`` file). For the GCC compiler, +the option ``-Os`` contains the base set of optimizations we use. This set is +fine for release but not ideal for debugging. + +Our available view of a crash is the `Stack Dump `__ +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. + +``Debug Priority`` for a more complete Exception Decoder report change selection. +- ``Lite`` uses ``-fno-optimize-sibling-calls`` to modify the ``-Os`` option + set - to place more caller addresses on the Stack. +- ``Optimum`` uses the ``-Og`` option. GCC considers this the ideal optimization + for the "edit-compile-debug cycle" ... "producing debuggable code". You can + review the specifics at + `GCC's Optimize Options `__ + From their list of the optimization flags that are suppressed, it should yield + a better matchup between crash address and source code than we get with + ``Lite`` selection. The code size will be larger than the ``Lite`` selection. + This option will also address the leaf function issue in a later compiler + update. +- ``None`` no changes for debugging continue using ``-Os``. + lwIP variant ~~~~~~~~~~~~ diff --git a/platform.txt b/platform.txt index 5ddc20b0da..8fdf88a32c 100644 --- a/platform.txt +++ b/platform.txt @@ -70,7 +70,7 @@ compiler.path={runtime.tools.xtensa-lx106-elf-gcc.path}/bin/ compiler.sdk.path={runtime.platform.path}/tools/sdk 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 -Os {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 -Os {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+ compiler.libraries.ldflags= diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 9069de08bb..694bb56d37 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1045,6 +1045,7 @@ ( '.build.core', 'esp8266' ), ( '.build.variant', 'generic' ), ( '.build.spiffs_pagesize', '256' ), + ( '.build.debug_optim', '' ), ( '.build.debug_port', '' ), ( '.build.debug_level', '' ), ]), @@ -1355,15 +1356,17 @@ def all_debug (): ( '.menu.dbg.Disabled', 'Disabled' ), ( '.menu.dbg.Disabled.build.debug_port', '' ), ( '.menu.dbg.Serial', 'Serial' ), - ( '.menu.dbg.Serial.build.debug_port', '-DDEBUG_ESP_PORT=Serial -Os -fno-optimize-sibling-calls' ), + ( '.menu.dbg.Serial.build.debug_port', '-DDEBUG_ESP_PORT=Serial' ), ( '.menu.dbg.Serial1', 'Serial1' ), - ( '.menu.dbg.Serial1.build.debug_port', '-DDEBUG_ESP_PORT=Serial1 -Os -fno-optimize-sibling-calls' ), - ( '.menu.dbg.Serial-dbg', 'Serial (full debug)' ), - ( '.menu.dbg.Serial-dbg.build.debug_port', '-DDEBUG_ESP_PORT=Serial -Og' ), - ( '.menu.dbg.Serial1-dbg', 'Serial1 (full debug)' ), - ( '.menu.dbg.Serial1-dbg.build.debug_port', '-DDEBUG_ESP_PORT=Serial1 -Og' ), + ( '.menu.dbg.Serial1.build.debug_port', '-DDEBUG_ESP_PORT=Serial1' ), ( '.menu.lvl.None____', 'None' ), ( '.menu.lvl.None____.build.debug_level', '' ), + ( '.menu.optim.Smallest', 'None' ), + ( '.menu.optim.Smallest.build.debug_optim', '' ), + ( '.menu.optim.Lite', 'Lite' ), + ( '.menu.optim.Lite.build.debug_optim', '-fno-optimize-sibling-calls' ), + ( '.menu.optim.Full', 'Optimum' ), + ( '.menu.optim.Full.build.debug_optim', '-Og' ), ]) for optlist in options: @@ -1744,6 +1747,7 @@ def all_boards (): print('menu.ResetMethod=Reset Method') print('menu.dbg=Debug port') print('menu.lvl=Debug Level') + print('menu.optim=Debug Priority') print('menu.ip=lwIP Variant') print('menu.vt=VTables') print('menu.exception=C++ Exceptions') From 9a6ea125f347c1a8b02392e1a708efd904c5ea82 Mon Sep 17 00:00:00 2001 From: M Hightower <27247790+mhightower83@users.noreply.github.com> Date: Thu, 2 Feb 2023 09:44:54 -0800 Subject: [PATCH 08/14] 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. --- boards.txt | 154 ++++++++++++++++----------------- doc/faq/a02-my-esp-crashes.rst | 44 +++++++--- doc/ideoptions.rst | 42 ++++----- platform.txt | 2 +- tools/boards.txt.py | 6 +- 5 files changed, 130 insertions(+), 118 deletions(-) diff --git a/boards.txt b/boards.txt index 04dc1f1e47..35a4b5ad71 100644 --- a/boards.txt +++ b/boards.txt @@ -17,7 +17,7 @@ menu.FlashFreq=Flash Frequency menu.ResetMethod=Reset Method menu.dbg=Debug port menu.lvl=Debug Level -menu.optim=Debug Priority +menu.optim=Debug Optimization menu.ip=lwIP Variant menu.vt=VTables menu.exception=C++ Exceptions @@ -400,9 +400,9 @@ generic.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 generic.menu.lvl.None____=None generic.menu.lvl.None____.build.debug_level= generic.menu.optim.Smallest=None -generic.menu.optim.Smallest.build.debug_optim= +generic.menu.optim.Smallest.build.debug_optim=-Os generic.menu.optim.Lite=Lite -generic.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -752,9 +752,9 @@ esp8285.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 esp8285.menu.lvl.None____=None esp8285.menu.lvl.None____.build.debug_level= esp8285.menu.optim.Smallest=None -esp8285.menu.optim.Smallest.build.debug_optim= +esp8285.menu.optim.Smallest.build.debug_optim=-Os esp8285.menu.optim.Lite=Lite -esp8285.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -1027,9 +1027,9 @@ gen4iod.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 gen4iod.menu.lvl.None____=None gen4iod.menu.lvl.None____.build.debug_level= gen4iod.menu.optim.Smallest=None -gen4iod.menu.optim.Smallest.build.debug_optim= +gen4iod.menu.optim.Smallest.build.debug_optim=-Os gen4iod.menu.optim.Lite=Lite -gen4iod.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -1246,9 +1246,9 @@ huzzah.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 huzzah.menu.lvl.None____=None huzzah.menu.lvl.None____.build.debug_level= huzzah.menu.optim.Smallest=None -huzzah.menu.optim.Smallest.build.debug_optim= +huzzah.menu.optim.Smallest.build.debug_optim=-Os huzzah.menu.optim.Lite=Lite -huzzah.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -1559,9 +1559,9 @@ wifi_slot.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 wifi_slot.menu.lvl.None____=None wifi_slot.menu.lvl.None____.build.debug_level= wifi_slot.menu.optim.Smallest=None -wifi_slot.menu.optim.Smallest.build.debug_optim= +wifi_slot.menu.optim.Smallest.build.debug_optim=-Os wifi_slot.menu.optim.Lite=Lite -wifi_slot.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -1790,9 +1790,9 @@ arduino-esp8266.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 arduino-esp8266.menu.lvl.None____=None arduino-esp8266.menu.lvl.None____.build.debug_level= arduino-esp8266.menu.optim.Smallest=None -arduino-esp8266.menu.optim.Smallest.build.debug_optim= +arduino-esp8266.menu.optim.Smallest.build.debug_optim=-Os arduino-esp8266.menu.optim.Lite=Lite -arduino-esp8266.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -2042,9 +2042,9 @@ espmxdevkit.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 espmxdevkit.menu.lvl.None____=None espmxdevkit.menu.lvl.None____.build.debug_level= espmxdevkit.menu.optim.Smallest=None -espmxdevkit.menu.optim.Smallest.build.debug_optim= +espmxdevkit.menu.optim.Smallest.build.debug_optim=-Os espmxdevkit.menu.optim.Lite=Lite -espmxdevkit.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -2262,9 +2262,9 @@ oak.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 oak.menu.lvl.None____=None oak.menu.lvl.None____.build.debug_level= oak.menu.optim.Smallest=None -oak.menu.optim.Smallest.build.debug_optim= +oak.menu.optim.Smallest.build.debug_optim=-Os oak.menu.optim.Lite=Lite -oak.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -2489,9 +2489,9 @@ espduino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 espduino.menu.lvl.None____=None espduino.menu.lvl.None____.build.debug_level= espduino.menu.optim.Smallest=None -espduino.menu.optim.Smallest.build.debug_optim= +espduino.menu.optim.Smallest.build.debug_optim=-Os espduino.menu.optim.Lite=Lite -espduino.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -2708,9 +2708,9 @@ espectro.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 espectro.menu.lvl.None____=None espectro.menu.lvl.None____.build.debug_level= espectro.menu.optim.Smallest=None -espectro.menu.optim.Smallest.build.debug_optim= +espectro.menu.optim.Smallest.build.debug_optim=-Os espectro.menu.optim.Lite=Lite -espectro.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -2930,9 +2930,9 @@ espino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 espino.menu.lvl.None____=None espino.menu.lvl.None____.build.debug_level= espino.menu.optim.Smallest=None -espino.menu.optim.Smallest.build.debug_optim= +espino.menu.optim.Smallest.build.debug_optim=-Os espino.menu.optim.Lite=Lite -espino.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -3152,9 +3152,9 @@ 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____.build.debug_level= espresso_lite_v1.menu.optim.Smallest=None -espresso_lite_v1.menu.optim.Smallest.build.debug_optim= +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=-fno-optimize-sibling-calls +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 @@ -3374,9 +3374,9 @@ 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____.build.debug_level= espresso_lite_v2.menu.optim.Smallest=None -espresso_lite_v2.menu.optim.Smallest.build.debug_optim= +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=-fno-optimize-sibling-calls +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 @@ -3634,9 +3634,9 @@ sonoff.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 sonoff.menu.lvl.None____=None sonoff.menu.lvl.None____.build.debug_level= sonoff.menu.optim.Smallest=None -sonoff.menu.optim.Smallest.build.debug_optim= +sonoff.menu.optim.Smallest.build.debug_optim=-Os sonoff.menu.optim.Lite=Lite -sonoff.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -3853,9 +3853,9 @@ inventone.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 inventone.menu.lvl.None____=None inventone.menu.lvl.None____.build.debug_level= inventone.menu.optim.Smallest=None -inventone.menu.optim.Smallest.build.debug_optim= +inventone.menu.optim.Smallest.build.debug_optim=-Os inventone.menu.optim.Lite=Lite -inventone.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -4088,9 +4088,9 @@ 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____.build.debug_level= d1_wroom_02.menu.optim.Smallest=None -d1_wroom_02.menu.optim.Smallest.build.debug_optim= +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=-fno-optimize-sibling-calls +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 @@ -4307,9 +4307,9 @@ d1_mini.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 d1_mini.menu.lvl.None____=None d1_mini.menu.lvl.None____.build.debug_level= d1_mini.menu.optim.Smallest=None -d1_mini.menu.optim.Smallest.build.debug_optim= +d1_mini.menu.optim.Smallest.build.debug_optim=-Os d1_mini.menu.optim.Lite=Lite -d1_mini.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -4543,9 +4543,9 @@ 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____.build.debug_level= d1_mini_clone.menu.optim.Smallest=None -d1_mini_clone.menu.optim.Smallest.build.debug_optim= +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=-fno-optimize-sibling-calls +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 @@ -4794,9 +4794,9 @@ 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____.build.debug_level= d1_mini_lite.menu.optim.Smallest=None -d1_mini_lite.menu.optim.Smallest.build.debug_optim= +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=-fno-optimize-sibling-calls +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 @@ -5005,9 +5005,9 @@ 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____.build.debug_level= d1_mini_pro.menu.optim.Smallest=None -d1_mini_pro.menu.optim.Smallest.build.debug_optim= +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=-fno-optimize-sibling-calls +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 @@ -5224,9 +5224,9 @@ d1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 d1.menu.lvl.None____=None d1.menu.lvl.None____.build.debug_level= d1.menu.optim.Smallest=None -d1.menu.optim.Smallest.build.debug_optim= +d1.menu.optim.Smallest.build.debug_optim=-Os d1.menu.optim.Lite=Lite -d1.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -5459,9 +5459,9 @@ agruminolemon.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 agruminolemon.menu.lvl.None____=None agruminolemon.menu.lvl.None____.build.debug_level= agruminolemon.menu.optim.Smallest=None -agruminolemon.menu.optim.Smallest.build.debug_optim= +agruminolemon.menu.optim.Smallest.build.debug_optim=-Os agruminolemon.menu.optim.Lite=Lite -agruminolemon.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -5678,9 +5678,9 @@ nodemcu.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 nodemcu.menu.lvl.None____=None nodemcu.menu.lvl.None____.build.debug_level= nodemcu.menu.optim.Smallest=None -nodemcu.menu.optim.Smallest.build.debug_optim= +nodemcu.menu.optim.Smallest.build.debug_optim=-Os nodemcu.menu.optim.Lite=Lite -nodemcu.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -5901,9 +5901,9 @@ nodemcuv2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 nodemcuv2.menu.lvl.None____=None nodemcuv2.menu.lvl.None____.build.debug_level= nodemcuv2.menu.optim.Smallest=None -nodemcuv2.menu.optim.Smallest.build.debug_optim= +nodemcuv2.menu.optim.Smallest.build.debug_optim=-Os nodemcuv2.menu.optim.Lite=Lite -nodemcuv2.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -6151,9 +6151,9 @@ modwifi.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 modwifi.menu.lvl.None____=None modwifi.menu.lvl.None____.build.debug_level= modwifi.menu.optim.Smallest=None -modwifi.menu.optim.Smallest.build.debug_optim= +modwifi.menu.optim.Smallest.build.debug_optim=-Os modwifi.menu.optim.Lite=Lite -modwifi.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -6373,9 +6373,9 @@ phoenix_v1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 phoenix_v1.menu.lvl.None____=None phoenix_v1.menu.lvl.None____.build.debug_level= phoenix_v1.menu.optim.Smallest=None -phoenix_v1.menu.optim.Smallest.build.debug_optim= +phoenix_v1.menu.optim.Smallest.build.debug_optim=-Os phoenix_v1.menu.optim.Lite=Lite -phoenix_v1.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -6595,9 +6595,9 @@ phoenix_v2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 phoenix_v2.menu.lvl.None____=None phoenix_v2.menu.lvl.None____.build.debug_level= phoenix_v2.menu.optim.Smallest=None -phoenix_v2.menu.optim.Smallest.build.debug_optim= +phoenix_v2.menu.optim.Smallest.build.debug_optim=-Os phoenix_v2.menu.optim.Lite=Lite -phoenix_v2.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -6814,9 +6814,9 @@ eduinowifi.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 eduinowifi.menu.lvl.None____=None eduinowifi.menu.lvl.None____.build.debug_level= eduinowifi.menu.optim.Smallest=None -eduinowifi.menu.optim.Smallest.build.debug_optim= +eduinowifi.menu.optim.Smallest.build.debug_optim=-Os eduinowifi.menu.optim.Lite=Lite -eduinowifi.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -7033,9 +7033,9 @@ wiolink.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 wiolink.menu.lvl.None____=None wiolink.menu.lvl.None____.build.debug_level= wiolink.menu.optim.Smallest=None -wiolink.menu.optim.Smallest.build.debug_optim= +wiolink.menu.optim.Smallest.build.debug_optim=-Os wiolink.menu.optim.Lite=Lite -wiolink.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -7252,9 +7252,9 @@ blynk.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 blynk.menu.lvl.None____=None blynk.menu.lvl.None____.build.debug_level= blynk.menu.optim.Smallest=None -blynk.menu.optim.Smallest.build.debug_optim= +blynk.menu.optim.Smallest.build.debug_optim=-Os blynk.menu.optim.Lite=Lite -blynk.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -7471,9 +7471,9 @@ thing.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 thing.menu.lvl.None____=None thing.menu.lvl.None____.build.debug_level= thing.menu.optim.Smallest=None -thing.menu.optim.Smallest.build.debug_optim= +thing.menu.optim.Smallest.build.debug_optim=-Os thing.menu.optim.Lite=Lite -thing.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -7690,9 +7690,9 @@ thingdev.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 thingdev.menu.lvl.None____=None thingdev.menu.lvl.None____.build.debug_level= thingdev.menu.optim.Smallest=None -thingdev.menu.optim.Smallest.build.debug_optim= +thingdev.menu.optim.Smallest.build.debug_optim=-Os thingdev.menu.optim.Lite=Lite -thingdev.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -7909,9 +7909,9 @@ esp210.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 esp210.menu.lvl.None____=None esp210.menu.lvl.None____.build.debug_level= esp210.menu.optim.Smallest=None -esp210.menu.optim.Smallest.build.debug_optim= +esp210.menu.optim.Smallest.build.debug_optim=-Os esp210.menu.optim.Lite=Lite -esp210.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -8128,9 +8128,9 @@ espinotee.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 espinotee.menu.lvl.None____=None espinotee.menu.lvl.None____.build.debug_level= espinotee.menu.optim.Smallest=None -espinotee.menu.optim.Smallest.build.debug_optim= +espinotee.menu.optim.Smallest.build.debug_optim=-Os espinotee.menu.optim.Lite=Lite -espinotee.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -8347,9 +8347,9 @@ 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____.build.debug_level= wifi_kit_8.menu.optim.Smallest=None -wifi_kit_8.menu.optim.Smallest.build.debug_optim= +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=-fno-optimize-sibling-calls +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 @@ -8566,9 +8566,9 @@ wifiduino.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 wifiduino.menu.lvl.None____=None wifiduino.menu.lvl.None____.build.debug_level= wifiduino.menu.optim.Smallest=None -wifiduino.menu.optim.Smallest.build.debug_optim= +wifiduino.menu.optim.Smallest.build.debug_optim=-Os wifiduino.menu.optim.Lite=Lite -wifiduino.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -8841,9 +8841,9 @@ wifinfo.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 wifinfo.menu.lvl.None____=None wifinfo.menu.lvl.None____.build.debug_level= wifinfo.menu.optim.Smallest=None -wifinfo.menu.optim.Smallest.build.debug_optim= +wifinfo.menu.optim.Smallest.build.debug_optim=-Os wifinfo.menu.optim.Lite=Lite -wifinfo.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 @@ -9063,9 +9063,9 @@ cw01.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 cw01.menu.lvl.None____=None cw01.menu.lvl.None____.build.debug_level= cw01.menu.optim.Smallest=None -cw01.menu.optim.Smallest.build.debug_optim= +cw01.menu.optim.Smallest.build.debug_optim=-Os cw01.menu.optim.Lite=Lite -cw01.menu.optim.Lite.build.debug_optim=-fno-optimize-sibling-calls +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 diff --git a/doc/faq/a02-my-esp-crashes.rst b/doc/faq/a02-my-esp-crashes.rst index 5a5f6e06f6..2e58e6a8f9 100644 --- a/doc/faq/a02-my-esp-crashes.rst +++ b/doc/faq/a02-my-esp-crashes.rst @@ -281,26 +281,47 @@ dropped. The same procedure applies to crashes caused by exceptions. Improving Exception Decoder Results ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -When you select ``Debug Priority: Lite`` on the Arduino IDE Tools menu, it +Due to the limited resources on the device, our default compiler optimizations +focus on creating the smallest code size (``.bin`` file). For the GCC compiler, +the option ``-Os`` contains the base set of optimizations we use. This set is +fine for release but not ideal for debugging. + +Our view of a crash is often the `Stack Dump `__ +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 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. +stack overflows. You only want to do this in a debug setting. This option does +not help the chained function issue. -If you are not using the ``Debug Priority`` and need to improve the results of -the Exception Decoder, you can add ``-Og`` or ``-fno-optimize-sibling-calls`` -to your build options. For details on how to do this, read -`Global Build Options `__. +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 ``-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 `__ + +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 `__. For non-Arduino IDE build platforms, you may need to research how to add build options. -For projects that become too large to flash with a global debug build option, -you could target the optimization to specific modules of interest by adding -``#pragma GCC optimize("Og")``. - 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 @@ -308,7 +329,8 @@ 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 ``. +macro ``DEBUG_LEAF_FUNCTION()`` from ``#include ``. The ``-Og`` option +will address the leaf function issue in a later compiler update. Other Causes for Crashes diff --git a/doc/ideoptions.rst b/doc/ideoptions.rst index 4de1fc83b2..e6c998fba8 100644 --- a/doc/ideoptions.rst +++ b/doc/ideoptions.rst @@ -127,36 +127,26 @@ There are a number of options. - The last (``NoAssert - NDEBUG``) is even quieter than the first (some internal guards are skipped to save more flash). - 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 Priority -~~~~~~~~~~~~~~ +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. -Due to the limited resources on the device, the compiler's default optimizations -focus on creating the smallest code size (``.bin`` file). For the GCC compiler, -the option ``-Os`` contains the base set of optimizations we use. This set is -fine for release but not ideal for debugging. - -Our available view of a crash is the `Stack Dump `__ -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. - -``Debug Priority`` for a more complete Exception Decoder report change selection. -- ``Lite`` uses ``-fno-optimize-sibling-calls`` to modify the ``-Os`` option - set - to place more caller addresses on the Stack. -- ``Optimum`` uses the ``-Og`` option. GCC considers this the ideal optimization - for the "edit-compile-debug cycle" ... "producing debuggable code". You can - review the specifics at - `GCC's Optimize Options `__ - From their list of the optimization flags that are suppressed, it should yield - a better matchup between crash address and source code than we get with - ``Lite`` selection. The code size will be larger than the ``Lite`` selection. - This option will also address the leaf function issue in a later compiler - update. +``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. + It turns off more optimizations that can make debugging difficult. - ``None`` no changes for debugging continue using ``-Os``. +For more topic depth, read `Improving Exception Decoder Results `__ + + lwIP variant ~~~~~~~~~~~~ diff --git a/platform.txt b/platform.txt index 8fdf88a32c..5d99d603c1 100644 --- a/platform.txt +++ b/platform.txt @@ -70,7 +70,7 @@ compiler.path={runtime.tools.xtensa-lx106-elf-gcc.path}/bin/ compiler.sdk.path={runtime.platform.path}/tools/sdk 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 -Os {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" +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+ compiler.libraries.ldflags= diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 694bb56d37..9524bd57c2 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1362,9 +1362,9 @@ def all_debug (): ( '.menu.lvl.None____', 'None' ), ( '.menu.lvl.None____.build.debug_level', '' ), ( '.menu.optim.Smallest', 'None' ), - ( '.menu.optim.Smallest.build.debug_optim', '' ), + ( '.menu.optim.Smallest.build.debug_optim', '-Os' ), ( '.menu.optim.Lite', 'Lite' ), - ( '.menu.optim.Lite.build.debug_optim', '-fno-optimize-sibling-calls' ), + ( '.menu.optim.Lite.build.debug_optim', '-Os -fno-optimize-sibling-calls' ), ( '.menu.optim.Full', 'Optimum' ), ( '.menu.optim.Full.build.debug_optim', '-Og' ), ]) @@ -1747,7 +1747,7 @@ def all_boards (): print('menu.ResetMethod=Reset Method') print('menu.dbg=Debug port') print('menu.lvl=Debug Level') - print('menu.optim=Debug Priority') + print('menu.optim=Debug Optimization') print('menu.ip=lwIP Variant') print('menu.vt=VTables') print('menu.exception=C++ Exceptions') From 8e49b333639e957267a4e585f28eea5c68170765 Mon Sep 17 00:00:00 2001 From: M Hightower <27247790+mhightower83@users.noreply.github.com> Date: Thu, 2 Feb 2023 11:32:37 -0800 Subject: [PATCH 09/14] Add fallback value for build.debug_optim to platform.txt --- doc/ideoptions.rst | 3 +++ platform.txt | 3 +++ tools/platformio-build.py | 19 ++++++++++++++----- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/doc/ideoptions.rst b/doc/ideoptions.rst index e6c998fba8..2d808cda34 100644 --- a/doc/ideoptions.rst +++ b/doc/ideoptions.rst @@ -144,6 +144,9 @@ release but not ideal for debugging. It turns off more optimizations that can make debugging difficult. - ``None`` no changes for debugging continue using ``-Os``. +Take note some sketches may start working after changing the optimization. +Or fail less often. + For more topic depth, read `Improving Exception Decoder Results `__ diff --git a/platform.txt b/platform.txt index 5d99d603c1..1f084a8109 100644 --- a/platform.txt +++ b/platform.txt @@ -44,6 +44,9 @@ build.stdcpp_level=-std=gnu++17 build.stacksmash_flags= +# legacy fallback +build.debug_optim=-Os + build.float=-u _printf_float -u _scanf_float build.led= diff --git a/tools/platformio-build.py b/tools/platformio-build.py index 4582108c73..ddea1ce202 100644 --- a/tools/platformio-build.py +++ b/tools/platformio-build.py @@ -205,6 +205,13 @@ def scons_patched_match_splitext(path, suffixes=None): LIBPATH=[NONOSDK_LIBPATH], ) +# +# debug +# +for type in env["build_type"]): + if type.startsWith("debug"): + env.Append(some_extra_options=["-Og"]) + # # lwIP # @@ -249,11 +256,13 @@ def scons_patched_match_splitext(path, suffixes=None): ) lwip_lib = "lwip2-536-feat" -# -# debug -# -if "DEBUG_ESP_PORT" in flatten_cppdefines: - env.Append(CCFLAGS=[("-Os"), ("-fno-optimize-sibling-calls")]) +#D # +#D # debug +#D # +#D if "DEBUG_ESP_PORT" in flatten_cppdefines: +#D env.Append(CCFLAGS=[("-Os"), ("-fno-optimize-sibling-calls")]) +#D env.Append(CCFLAGS=["-Og"]) +#D if "BUILD_TYPE" in # # Waveform From aab4d56f85bd71af506f3388b75cb5b8c16581c1 Mon Sep 17 00:00:00 2001 From: M Hightower <27247790+mhightower83@users.noreply.github.com> Date: Thu, 2 Feb 2023 18:46:07 -0800 Subject: [PATCH 10/14] update text and undo changes to platformio-build.py --- doc/faq/a02-my-esp-crashes.rst | 30 +++++++++++++++--------------- doc/ideoptions.rst | 11 +++++++---- tools/platformio-build.py | 15 --------------- 3 files changed, 22 insertions(+), 34 deletions(-) diff --git a/doc/faq/a02-my-esp-crashes.rst b/doc/faq/a02-my-esp-crashes.rst index 2e58e6a8f9..a3212993b0 100644 --- a/doc/faq/a02-my-esp-crashes.rst +++ b/doc/faq/a02-my-esp-crashes.rst @@ -282,21 +282,21 @@ 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). For the GCC compiler, -the option ``-Os`` contains the base set of optimizations we use. This set is -fine for release but not ideal for debugging. +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 `__ +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. +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 @@ -309,18 +309,18 @@ 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 ``-Og``. GCC considers this the ideal optimization for the -"edit-compile-debug cycle" ... "producing debuggable code." You can read the +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 `__ 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. +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 `__. -For non-Arduino IDE build platforms, you may need to research how to add -build options. +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. diff --git a/doc/ideoptions.rst b/doc/ideoptions.rst index 2d808cda34..f591772548 100644 --- a/doc/ideoptions.rst +++ b/doc/ideoptions.rst @@ -137,15 +137,18 @@ 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. - It turns off more optimizations that can make debugging difficult. + 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. +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 `__ diff --git a/tools/platformio-build.py b/tools/platformio-build.py index ddea1ce202..83b7d7830a 100644 --- a/tools/platformio-build.py +++ b/tools/platformio-build.py @@ -205,13 +205,6 @@ def scons_patched_match_splitext(path, suffixes=None): LIBPATH=[NONOSDK_LIBPATH], ) -# -# debug -# -for type in env["build_type"]): - if type.startsWith("debug"): - env.Append(some_extra_options=["-Og"]) - # # lwIP # @@ -256,14 +249,6 @@ def scons_patched_match_splitext(path, suffixes=None): ) lwip_lib = "lwip2-536-feat" -#D # -#D # debug -#D # -#D if "DEBUG_ESP_PORT" in flatten_cppdefines: -#D env.Append(CCFLAGS=[("-Os"), ("-fno-optimize-sibling-calls")]) -#D env.Append(CCFLAGS=["-Og"]) -#D if "BUILD_TYPE" in - # # Waveform # From 94e165d74cbbbff56ef4a076e1e1a973fd2c64d1 Mon Sep 17 00:00:00 2001 From: M Hightower <27247790+mhightower83@users.noreply.github.com> Date: Fri, 3 Feb 2023 18:57:40 -0800 Subject: [PATCH 11/14] tweak text --- doc/Troubleshooting/stack_dump.rst | 7 ++++--- doc/faq/a02-my-esp-crashes.rst | 8 ++++---- platform.txt | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/doc/Troubleshooting/stack_dump.rst b/doc/Troubleshooting/stack_dump.rst index 2052260a50..ef320392e7 100644 --- a/doc/Troubleshooting/stack_dump.rst +++ b/doc/Troubleshooting/stack_dump.rst @@ -57,11 +57,12 @@ the hex after are the stack dump. Decode ~~~~~~ -It's possible to decode the Stack to readable information. For more info see the `Esp Exception Decoder `__ tool. +It's possible to decode the Stack to readable information. +You can get a copy and read about the `Esp Exception Decoder `__ 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 :alt: ESP Exception Decoder ESP Exception Decoder - -For more on troubleshooting, read `FAQ: My ESP Crashes <../faq/a02-my-esp-crashes.rst>`__. diff --git a/doc/faq/a02-my-esp-crashes.rst b/doc/faq/a02-my-esp-crashes.rst index a3212993b0..2937c3e9f4 100644 --- a/doc/faq/a02-my-esp-crashes.rst +++ b/doc/faq/a02-my-esp-crashes.rst @@ -302,10 +302,10 @@ 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 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. +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 diff --git a/platform.txt b/platform.txt index 1f084a8109..7e88e48db5 100644 --- a/platform.txt +++ b/platform.txt @@ -44,7 +44,7 @@ build.stdcpp_level=-std=gnu++17 build.stacksmash_flags= -# legacy fallback +# Default - never leave undefined build.debug_optim=-Os build.float=-u _printf_float -u _scanf_float From ab7a02a63b1451ff7701868ddf93edc2e003c70c Mon Sep 17 00:00:00 2001 From: M Hightower <27247790+mhightower83@users.noreply.github.com> Date: Sun, 5 Feb 2023 14:02:50 -0800 Subject: [PATCH 12/14] Added ':orphan:' mark to a06-global-build-options.rst --- doc/faq/a06-global-build-options.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/faq/a06-global-build-options.rst b/doc/faq/a06-global-build-options.rst index 231dbc6baf..3e86b88a58 100644 --- a/doc/faq/a06-global-build-options.rst +++ b/doc/faq/a06-global-build-options.rst @@ -1,3 +1,5 @@ +:orphan: + How to specify global build defines and options =============================================== From 58ad3847569bc64d47ce98f0ec8ffea1495b1c10 Mon Sep 17 00:00:00 2001 From: M Hightower <27247790+mhightower83@users.noreply.github.com> Date: Mon, 13 Feb 2023 11:55:07 -0800 Subject: [PATCH 13/14] Update doc. Added link in page index to 'Improving Exception Decoder Results' --- doc/faq/a02-my-esp-crashes.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/faq/a02-my-esp-crashes.rst b/doc/faq/a02-my-esp-crashes.rst index 2937c3e9f4..a80f2478b6 100644 --- a/doc/faq/a02-my-esp-crashes.rst +++ b/doc/faq/a02-my-esp-crashes.rst @@ -11,6 +11,7 @@ My ESP crashes running some code. How to troubleshoot it? - `Exception <#exception>`__ - `Watchdog <#watchdog>`__ - `Exception Decoder <#exception-decoder>`__ +- `Improving Exception Decoder Results <#improving-exception-decoder-results>`__ - `Other Common Causes for Crashes <#other-causes-for-crashes>`__ - `If at the Wall, Enter an Issue Report <#if-at-the-wall-enter-an-issue-report>`__ @@ -332,6 +333,12 @@ function's body. Or instead, for a debug build conditional option, use the macro ``DEBUG_LEAF_FUNCTION()`` from ``#include ``. The ``-Og`` option will address the leaf function issue in a later compiler update. +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 ~~~~~~~~~~~~~~~~~~~~~~~~ From 462252faa408aef46360df022fefcba541928949 Mon Sep 17 00:00:00 2001 From: M Hightower <27247790+mhightower83@users.noreply.github.com> Date: Tue, 28 Mar 2023 17:42:19 -0700 Subject: [PATCH 14/14] Update text to reference PR#8868 improvements for leaf function. --- doc/faq/a02-my-esp-crashes.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/faq/a02-my-esp-crashes.rst b/doc/faq/a02-my-esp-crashes.rst index a80f2478b6..0134dda666 100644 --- a/doc/faq/a02-my-esp-crashes.rst +++ b/doc/faq/a02-my-esp-crashes.rst @@ -330,8 +330,8 @@ 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 ``. The ``-Og`` option -will address the leaf function issue in a later compiler update. +macro ``DEBUG_LEAF_FUNCTION()`` from ``#include ``. 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