From b66848e1b45d4b84968edf300dbfc715b043f09f Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Tue, 8 Feb 2022 21:47:22 +0300 Subject: [PATCH 01/35] some reworking of boards.txt.py --- tools/boards.txt.py | 436 ++++++++++++++++++++++++++------------------ 1 file changed, 257 insertions(+), 179 deletions(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 89efe7f6ca..9121a67ff3 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1371,7 +1371,7 @@ def all_debug (): ################################################################ # flash size -def flash_map (flashsize_kb, fs_kb = 0, conf_name = ''): +def flash_map (flashsize_kb, fs_kb = 0, confname = ''): # mapping: # flash | reserved | empty | spiffs | eeprom | rf-cal | sdk-wifi-settings @@ -1405,15 +1405,57 @@ def flash_map (flashsize_kb, fs_kb = 0, conf_name = ''): fs_end = fs_blocksize * (int)((fs_end - fs_start)/fs_blocksize) + fs_start max_ota_size = min(max_upload_size, fs_start / 2) # =(max_upload_size+empty_size)/2 + + if fs_kb == 0: + fs_start = fs_end + page = 0 + fs_blocksize = 0 + else: + page = 0x100 + + # menu output + + #d.update(collections.OrderedDict([ + # ( menub + 'eeprom_start', "0x%05X" % eeprom_start ), + # ])) + strsize = str(int(flashsize_kb / 1024)) + 'M' if (flashsize_kb >= 1024) else str(flashsize_kb) + 'K' strfs = str(int(fs_kb / 1024)) + 'M' if (fs_kb >= 1024) else str(fs_kb) + 'K' strfs_strip = str(int(fs_kb / 1024)) + 'M' if (fs_kb >= 1024) else str(fs_kb) if (fs_kb > 0) else '' ld = 'eagle.flash.' + strsize.lower() + strfs_strip.lower() + '.ld' + menu = '.menu.eesz.' + strsize + strfs_strip menub = menu + '.build.' desc = 'none' if (fs_kb == 0) else strfs + 'B' - d = collections.OrderedDict([ + + return { + "confname": confname, + "flashsize_kb": flashsize_kb, + "ld": ld, + "menu": menu, + "menub": menub, + "desc": desc, + "spi": spi, + "strsize": strsize, + "fs_start": fs_start, + "max_upload_size": max_upload_size, + "max_ota_size": max_ota_size, + "fs_start": fs_start, + "fs_end": fs_end, + "fs_pagesize": page, + "fs_blocksize": fs_blocksize, + "fs_kb": fs_kb, + "eeprom_start": eeprom_start, + "eeprom_size_kb": eeprom_size_kb, + "rfcal_addr": rfcal_addr, + "rfcal_size_kb": rfcal_size_kb, + "sdkwifi_size_kb": sdkwifi_size_kb + } + + +def menu_generate (*, ld, menu, strsize, desc, max_ota_size, menub, rfcal_addr, fs_start, fs_end, fs_blocksize, fs_kb, **kwargs): + out = collections.OrderedDict([ ( menu, strsize + 'B (FS:' + desc + ' OTA:~%iKB)' % (max_ota_size / 1024)), ( menub + 'flash_size', strsize ), #( menub + 'flash_size_bytes', "0x%X" % (flashsize_kb * 1024)), @@ -1424,196 +1466,209 @@ def flash_map (flashsize_kb, fs_kb = 0, conf_name = ''): ]) if fs_kb > 0: - d.update(collections.OrderedDict([ + out.update(collections.OrderedDict([ ( menub + 'spiffs_start', "0x%05X" % fs_start ), ( menub + 'spiffs_end', "0x%05X" % fs_end ), ( menub + 'spiffs_blocksize', "%i" % fs_blocksize ), ])) - #d.update(collections.OrderedDict([ - # ( menub + 'eeprom_start', "0x%05X" % eeprom_start ), - # ])) + return out - if ldshow: - if ldgen: - checkdir() - - ldbackupdir = lddir + "backup/" - if not os.path.isdir(ldbackupdir): - os.mkdir(ldbackupdir) - if os.path.isfile(lddir + ld) and not os.path.isfile(ldbackupdir + ld): - os.rename(lddir + ld, ldbackupdir + ld) - realstdout = sys.stdout - sys.stdout = open(lddir + ld, 'w') - - if fs_kb == 0: - fs_start = fs_end - page = 0 - fs_blocksize = 0 - else: - page = 0x100 - - if not conf_name == '': - if not conf_name in c_flash_map: - c_flash_map[conf_name] = collections.OrderedDict([]) - c_flash_map[conf_name][flashsize_kb] = \ - '.eeprom_start = ' + hex(spi + eeprom_start) + ', ' \ - + '.fs_start = ' + hex(spi + fs_start) + ', ' \ - + '.fs_end = ' + hex(spi + fs_end) + ', ' \ - + '.fs_block_size = ' + hex(fs_blocksize)+ ', ' \ - + '.fs_page_size = ' + hex(page) + ', ' \ - - print("/* Flash Split for %s chips */" % strsize) - print("/* sketch @0x%X (~%dKB) (%dB) */" % (spi, (max_upload_size / 1024), max_upload_size)) - empty_size = fs_start - max_upload_size - if empty_size > 0: - print("/* empty @0x%X (~%dKB) (%dB) */" % (spi + max_upload_size, empty_size / 1024, empty_size)) - print("/* spiffs @0x%X (~%dKB) (%dB) */" % (spi + fs_start, ((fs_end - fs_start) / 1024), fs_end - fs_start)) - print("/* eeprom @0x%X (%dKB) */" % (spi + rfcal_addr - eeprom_size_kb * 1024, eeprom_size_kb)) - print("/* rfcal @0x%X (%dKB) */" % (spi + rfcal_addr, rfcal_size_kb)) - print("/* wifi @0x%X (%dKB) */" % (spi + rfcal_addr + rfcal_size_kb * 1024, sdkwifi_size_kb)) - print("") - print("MEMORY") - print("{") - print(" dport0_0_seg : org = 0x3FF00000, len = 0x10") - print(" dram0_0_seg : org = 0x3FFE8000, len = 0x14000") - # Moved to ld/eagle.app.v6.common.ld.h as a 2nd MEMORY command. - # print(" iram1_0_seg : org = 0x40100000, len = MMU_IRAM_SIZE") - print(" irom0_0_seg : org = 0x40201010, len = 0x%x" % max_upload_size) - print("}") - print("") - print("PROVIDE ( _FS_start = 0x%08X );" % (spi + fs_start)) - print("PROVIDE ( _FS_end = 0x%08X );" % (spi + fs_end)) - print("PROVIDE ( _FS_page = 0x%X );" % page) - print("PROVIDE ( _FS_block = 0x%X );" % fs_blocksize) - print("PROVIDE ( _EEPROM_start = 0x%08x );" % (spi + eeprom_start)) - # Re-add deprecated symbols pointing to the same address as the new standard ones - print("/* The following symbols are DEPRECATED and will be REMOVED in a future release */") - print("PROVIDE ( _SPIFFS_start = 0x%08X );" % (spi + fs_start)) - print("PROVIDE ( _SPIFFS_end = 0x%08X );" % (spi + fs_end)) - print("PROVIDE ( _SPIFFS_page = 0x%X );" % page) - print("PROVIDE ( _SPIFFS_block = 0x%X );" % fs_blocksize) - print("") - print('INCLUDE "local.eagle.app.v6.common.ld"') +def all_menu_generate (mapping): + d = { + 'autoflash': { + '.menu.eesz.autoflash': 'Mapping defined by Hardware and Sketch', + '.menu.eesz.autoflash.build.flash_size': '16M', + '.menu.eesz.autoflash.build.flash_ld': 'eagle.flash.auto.ld', + '.menu.eesz.autoflash.build.extra_flags': '-DFLASH_MAP_SUPPORT=1', + '.menu.eesz.autoflash.upload.maximum_size': '1044464', + } + } - if ldgen: - sys.stdout.close() - sys.stdout = realstdout + for k, values in mapping.items(): + items = collections.OrderedDict([]) + for v in values: + items.update(menu_generate(**v)) + d[k] = items return d -def all_flash_map (): - f512 = collections.OrderedDict([]) - f1m = collections.OrderedDict([]) - f2m = collections.OrderedDict([]) - f4m = collections.OrderedDict([]) - f8m = collections.OrderedDict([]) - f16m = collections.OrderedDict([]) - - global c_flash_map - c_flash_map = collections.OrderedDict([]) - - # flash(KB) spiffs(KB) confname(C) - - f1m.update( flash_map( 1024, 64, 'OTA_FS' )) - f1m.update( flash_map( 1024, 128 )) - f1m.update( flash_map( 1024, 144 )) - f1m.update( flash_map( 1024, 160 )) - f1m.update( flash_map( 1024, 192 )) - f1m.update( flash_map( 1024, 256 )) - f1m.update( flash_map( 1024, 512, 'MAX_FS' )) - f1m.update( flash_map( 1024, 0, 'NO_FS' )) - - f2m.update( flash_map( 2*1024, 64 )) - f2m.update( flash_map( 2*1024, 128 )) - f2m.update( flash_map( 2*1024, 256, 'OTA_FS' )) - f2m.update( flash_map( 2*1024, 512 )) - f2m.update( flash_map( 2*1024, 1024, 'MAX_FS' )) - f2m.update( flash_map( 2*1024, 0, 'NO_FS' )) - - f4m.update( flash_map( 4*1024, 2*1024, 'OTA_FS' )) - f4m.update( flash_map( 4*1024, 3*1024, 'MAX_FS' )) - f4m.update( flash_map( 4*1024, 1024 )) - f4m.update( flash_map( 4*1024, 0, 'NO_FS' )) - - f8m.update( flash_map( 8*1024, 6*1024, 'OTA_FS' )) - f8m.update( flash_map( 8*1024, 7*1024, 'MAX_FS' )) - f8m.update( flash_map( 8*1024, 0, 'NO_FS' )) - - f16m.update(flash_map( 16*1024, 14*1024, 'OTA_FS' )) - f16m.update(flash_map( 16*1024, 15*1024, 'MAX_FS' )) - f16m.update(flash_map( 16*1024, 0, 'NO_FS' )) - - f512.update(flash_map( 512, 32, 'OTA_FS' )) - f512.update(flash_map( 512, 64 )) - f512.update(flash_map( 512, 128, 'MAX_FS' )) - f512.update(flash_map( 512, 0, 'NO_FS' )) +def ldscript_generate (*, ld, strsize, spi, max_upload_size, fs_start, fs_end, fs_pagesize, fs_blocksize, rfcal_addr, rfcal_size_kb, sdkwifi_size_kb, eeprom_start, eeprom_size_kb, **kwargs): + if ldgen: + checkdir() + + ldbackupdir = lddir + "backup/" + if not os.path.isdir(ldbackupdir): + os.mkdir(ldbackupdir) + if os.path.isfile(lddir + ld) and not os.path.isfile(ldbackupdir + ld): + os.rename(lddir + ld, ldbackupdir + ld) + realstdout = sys.stdout + sys.stdout = open(lddir + ld, 'w') + + print("/* Flash Split for %s chips */" % strsize) + print("/* sketch @0x%X (~%dKB) (%dB) */" % (spi, (max_upload_size / 1024), max_upload_size)) + empty_size = fs_start - max_upload_size + if empty_size > 0: + print("/* empty @0x%X (~%dKB) (%dB) */" % (spi + max_upload_size, empty_size / 1024, empty_size)) + print("/* spiffs @0x%X (~%dKB) (%dB) */" % (spi + fs_start, ((fs_end - fs_start) / 1024), fs_end - fs_start)) + print("/* eeprom @0x%X (%dKB) */" % (spi + rfcal_addr - eeprom_size_kb * 1024, eeprom_size_kb)) + print("/* rfcal @0x%X (%dKB) */" % (spi + rfcal_addr, rfcal_size_kb)) + print("/* wifi @0x%X (%dKB) */" % (spi + rfcal_addr + rfcal_size_kb * 1024, sdkwifi_size_kb)) + print("") + print("MEMORY") + print("{") + print(" dport0_0_seg : org = 0x3FF00000, len = 0x10") + print(" dram0_0_seg : org = 0x3FFE8000, len = 0x14000") + # Moved to ld/eagle.app.v6.common.ld.h as a 2nd MEMORY command. + # print(" iram1_0_seg : org = 0x40100000, len = MMU_IRAM_SIZE") + print(" irom0_0_seg : org = 0x40201010, len = 0x%x" % max_upload_size) + print("}") + print("") + print("PROVIDE ( _FS_start = 0x%08X );" % (spi + fs_start)) + print("PROVIDE ( _FS_end = 0x%08X );" % (spi + fs_end)) + print("PROVIDE ( _FS_page = 0x%X );" % fs_pagesize) + print("PROVIDE ( _FS_block = 0x%X );" % fs_blocksize) + print("PROVIDE ( _EEPROM_start = 0x%08x );" % (spi + eeprom_start)) + # Re-add deprecated symbols pointing to the same address as the new standard ones + print("/* The following symbols are DEPRECATED and will be REMOVED in a future release */") + print("PROVIDE ( _SPIFFS_start = 0x%08X );" % (spi + fs_start)) + print("PROVIDE ( _SPIFFS_end = 0x%08X );" % (spi + fs_end)) + print("PROVIDE ( _SPIFFS_page = 0x%X );" % fs_pagesize) + print("PROVIDE ( _SPIFFS_block = 0x%X );" % fs_blocksize) + print("") + print('INCLUDE "local.eagle.app.v6.common.ld"') if ldgen: - print("generated: ldscripts (in %s)" % lddir) + sys.stdout.close() + sys.stdout = realstdout + print("generated: %s" % (lddir + ld)) - if ldshow: - if ldgen: - realstdout = sys.stdout - sys.stdout = open('cores/esp8266/FlashMap.h', 'w') - - define = '\n' - define += '// - do not edit - autogenerated by boards.txt.py\n' - define += '\n' - define += '#ifndef __FLASH_MAP_H\n' - define += '#define __FLASH_MAP_H\n' - define += '\n' - define += '#include \n' - define += '#include \n' - define += '\n' - define += 'typedef struct\n' - define += '{\n' - define += ' uint32_t eeprom_start;\n' - define += ' uint32_t fs_start;\n' - define += ' uint32_t fs_end;\n' - define += ' uint32_t fs_block_size;\n' - define += ' uint32_t fs_page_size;\n' - define += ' uint32_t flash_size_kb;\n' - define += '} flash_map_s;\n' - define += '\n' - define += '/*\n' - define += ' Following definitions map the above structure, one per line.\n' - define += ' FLASH_MAP_* is a user choice in sketch:\n' - define += ' `FLASH_MAP_SETUP_CONFIG(FLASH_MAP_OTA_FS)`\n' - define += ' Configuration is made at boot with detected flash chip size (last argument 512..16384)\n' - define += ' Other values are defined from `tools/boards.txt.py`.\n' - define += '*/\n' - for i in c_flash_map: - define += '\n#define FLASH_MAP_' + i + ' \\\n { \\\n' - for d in c_flash_map[i]: - define += ' { ' + c_flash_map[i][d] + '.flash_size_kb = ' + str(d) + ' }, \\\n' - define += ' }\n' - define += '\n#endif // __FLASH_MAP_H\n' - - print(define) - - if ldgen: - sys.stdout.close() - sys.stdout = realstdout - print("generated: flash map config file (in cores/esp8266/FlashMap.h)") - return { - 'autoflash': { - '.menu.eesz.autoflash': 'Mapping defined by Hardware and Sketch', - '.menu.eesz.autoflash.build.flash_size': '16M', - '.menu.eesz.autoflash.build.flash_ld': 'eagle.flash.auto.ld', - '.menu.eesz.autoflash.build.extra_flags': '-DFLASH_MAP_SUPPORT=1', - '.menu.eesz.autoflash.upload.maximum_size': '1044464', - }, - '512K': f512, - '1M': f1m, - '2M': f2m, - '4M': f4m, - '8M': f8m, - '16M': f16m - } +def all_ldscript_generate (mapping): + for v in mapping.values(): + for i in v: + ldscript_generate(**i) + + +def all_flashmap_generate (mapping): + if flashmapgen: + realstdout = sys.stdout + sys.stdout = open(flashmap_h, "w") + + def as_address(value, mapping): + return "0x%08x" % (value + mapping["spi"]) + + def as_hex(value, _): + return "0x%x" % value + + def as_dec(value, _): + return "%d" % value + + fields = [ + ["fs_start", as_address], + ["fs_end", as_address], + ["fs_blocksize", as_hex], + ["fs_pagesize", as_hex], + ["eeprom_start", as_address], + ["flashsize_kb", as_dec], + ] + + print("// - DO NOT EDIT - autogenerated by boards.txt.py") + print() + print("#pragma once") + print() + print("#include ") + print("#include ") + print() + print("typedef struct") + print("{") + for field, _ in fields: + print(" uint32_t %s;" % field) + print("} flash_map_s;") + print() + print("/*") + print(" Following definitions map the above structure, one per line.") + print(" FLASH_MAP_* is a user choice in sketch:") + print(" `FLASH_MAP_SETUP_CONFIG(FLASH_MAP_OTA_FS)`") + print(" Configuration is made at boot with detected flash chip size (last argument 512..16384)") + print(" Other values are defined from `tools/boards.txt.py`.") + print("*/") + print() + + conflines = collections.OrderedDict([]) + for _, flash_maps in mapping.items(): + for flash_map in flash_maps: + confname = flash_map.get("confname") + if not confname: + continue + + if not conflines.get(confname): + conflines[confname] = [] + + line = ", ".join(".%s = %s" % ((f, mod(flash_map[f], flash_map)) + if mod else flash_map[f]) for f, mod in fields) + conflines[confname].append("{ %s }, \\" % line) + + for confname, lines in conflines.items(): + print("#define FLASH_MAP_%s \\" % confname) + print(" { \\") + for line in lines: + print(" %s" % line) + print(" }") + print() + + if flashmapgen: + sys.stdout.close() + sys.stdout = realstdout + print("generated: flash map config file %s" % flashmap_h) + + +def all_flash_map (): + # flash(KB) fs(KB) flashmap(optional) + return collections.OrderedDict([ + ["1M", [ + flash_map( 1024, 64, "OTA_FS" ), + flash_map( 1024, 128 ), + flash_map( 1024, 144 ), + flash_map( 1024, 160 ), + flash_map( 1024, 192 ), + flash_map( 1024, 256 ), + flash_map( 1024, 512, "MAX_FS" ), + flash_map( 1024, 0, "NO_FS" ), + ]], + ["2M", [ + flash_map( 2*1024, 64 ), + flash_map( 2*1024, 128 ), + flash_map( 2*1024, 256, "OTA_FS" ), + flash_map( 2*1024, 512 ), + flash_map( 2*1024, 1024, "MAX_FS" ), + flash_map( 2*1024, 0, "NO_FS" ), + ]], + ["4M", [ + flash_map( 4*1024, 2*1024, "OTA_FS" ), + flash_map( 4*1024, 3*1024, "MAX_FS" ), + flash_map( 4*1024, 1024 ), + flash_map( 4*1024, 0, "NO_FS"), + ]], + ["8M", [ + flash_map( 8*1024, 6*1024, "OTA_FS" ), + flash_map( 8*1024, 7*1024, "MAX_FS" ), + flash_map( 8*1024, 0, "NO_FS" ), + ]], + ["16M", [ + flash_map( 16*1024, 14*1024, "OTA_FS" ), + flash_map( 16*1024, 15*1024, "MAX_FS" ), + flash_map( 16*1024, 0, "NO_FS" ), + ]], + ["512K", [ + flash_map( 512, 32, "OTA_FS" ), + flash_map( 512, 64 ), + flash_map( 512, 128, "MAX_FS" ), + flash_map( 512, 0, "NO_FS" ), + ]] + ]) ################################################################ # builtin led @@ -1678,7 +1733,7 @@ def all_boards (): realstdout = sys.stdout sys.stdout = open("boards.local.txt", 'w') - macros.update(all_flash_map()) + macros.update(all_menu_generate(all_flash_map())) macros.update(all_debug()) macros.update(led('led', led_default, range(0,led_max+1))) macros.update(led('led216', 2, { 16 })) @@ -1902,6 +1957,8 @@ def usage (name,ret): print(" --boardnames - prints a list of board names, one per line") print(" --ld - show ldscripts") print(" --ldgen - replace ldscripts") + print(" --flashmap - shows FlashMap.h") + print(" --flashmapgen - replace FlashMap.h") print(" --package - show package") print(" --packagegen - replace board:[] in package") print(" --doc - shows doc/boards.rst") @@ -1939,6 +1996,8 @@ def usage (name,ret): nofloat = False ldgen = False ldshow = False +flashmapshow = False +flashmapgen = False boardsgen = False boardsshow = False @@ -1954,7 +2013,9 @@ def usage (name,ret): docshow = False docgen = False customspeeds = [] + lddir = "tools/sdk/ld/" +flashmap_h = "cores/esp8266/FlashMap.h" #### vvvv cmdline parsing starts @@ -1963,7 +2024,11 @@ def usage (name,ret): [ "help", "led=", "speed=", "board=", "customspeed=", "nofloat", "noextra4kheap", "allowWPS", "boardslocalgen", "filter=", "xfilter=", "boardnames", - "ld", "ldgen", "boards", "boardsgen", "package", "packagegen", "doc", "docgen", + "ld", "ldgen", + "flashmap", "flashmapgen", + "boards", "boardsgen", + "package", "packagegen", + "doc", "docgen", "allgen"] ) except getopt.GetoptError as err: print(str(err)) # will print something like "option -a not recognized" @@ -2024,6 +2089,13 @@ def usage (name,ret): ldshow = True ldgen = True + elif o in ("--flashmap"): + flashmapshow = True + + elif o in ("--flashmapgen"): + flashmapshow = True + flashmapgen = True + elif o in ("--boardsshow"): boardsshow = True @@ -2052,6 +2124,8 @@ def usage (name,ret): elif o in ("--allgen"): ldshow = True ldgen = True + flashmapshow = True + flashmapgen = True boardsshow = True boardsgen = True packageshow = True @@ -2106,7 +2180,11 @@ def usage (name,ret): did = False if ldshow: - all_flash_map() + all_ldscript_generate(all_flash_map()) + did = True + +if flashmapshow: + all_flashmap_generate(all_flash_map()) did = True if boardsshow: From e45a85b61974faf52a794b00bb537f8302b6d0c9 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Mon, 14 Feb 2022 12:21:20 +0300 Subject: [PATCH 02/35] same names as original map --- cores/esp8266/FlashMap.h | 8 +--- tools/boards.txt.py | 86 ++++++++++++++++++++-------------------- 2 files changed, 45 insertions(+), 49 deletions(-) diff --git a/cores/esp8266/FlashMap.h b/cores/esp8266/FlashMap.h index 996228fdc2..b168462804 100644 --- a/cores/esp8266/FlashMap.h +++ b/cores/esp8266/FlashMap.h @@ -1,8 +1,6 @@ +// - DO NOT EDIT - autogenerated by boards.txt.py -// - do not edit - autogenerated by boards.txt.py - -#ifndef __FLASH_MAP_H -#define __FLASH_MAP_H +#pragma once #include #include @@ -55,5 +53,3 @@ typedef struct { .eeprom_start = 0x4027b000, .fs_start = 0x4027b000, .fs_end = 0x4027b000, .fs_block_size = 0x0, .fs_page_size = 0x0, .flash_size_kb = 512 }, \ } -#endif // __FLASH_MAP_H - diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 9121a67ff3..57a755a797 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1371,7 +1371,7 @@ def all_debug (): ################################################################ # flash size -def flash_map (flashsize_kb, fs_kb = 0, confname = ''): +def flash_map (flash_size_kb, fs_kb = 0, name = ''): # mapping: # flash | reserved | empty | spiffs | eeprom | rf-cal | sdk-wifi-settings @@ -1382,36 +1382,36 @@ def flash_map (flashsize_kb, fs_kb = 0, confname = ''): eeprom_size_kb = 4 rfcal_size_kb = 4 sdkwifi_size_kb = 12 - fs_end = (flashsize_kb - sdkwifi_size_kb - rfcal_size_kb - eeprom_size_kb) * 1024 + fs_end = (flash_size_kb - sdkwifi_size_kb - rfcal_size_kb - eeprom_size_kb) * 1024 # For legacy reasons (#6531), the EEPROM sector needs to be at the old # FS_end calculated without regards to block size eeprom_start = fs_end - rfcal_addr = (flashsize_kb - sdkwifi_size_kb - rfcal_size_kb) * 1024 - if flashsize_kb <= 1024: - max_upload_size = (flashsize_kb - (fs_kb + eeprom_size_kb + rfcal_size_kb + sdkwifi_size_kb)) * 1024 - reserved + rfcal_addr = (flash_size_kb - sdkwifi_size_kb - rfcal_size_kb) * 1024 + if flash_size_kb <= 1024: + max_upload_size = (flash_size_kb - (fs_kb + eeprom_size_kb + rfcal_size_kb + sdkwifi_size_kb)) * 1024 - reserved fs_start = fs_end - fs_kb * 1024 else: max_upload_size = 1024 * 1024 - reserved - fs_start = (flashsize_kb - fs_kb) * 1024 + fs_start = (flash_size_kb - fs_kb) * 1024 if fs_kb < 512: - fs_blocksize = 4096 + fs_block_size = 4096 else: - fs_blocksize = 8192 + fs_block_size = 8192 # Adjust FS_end to be a multiple of the block size - fs_end = fs_blocksize * (int)((fs_end - fs_start)/fs_blocksize) + fs_start + fs_end = fs_block_size * (int)((fs_end - fs_start)/fs_block_size) + fs_start max_ota_size = min(max_upload_size, fs_start / 2) # =(max_upload_size+empty_size)/2 if fs_kb == 0: fs_start = fs_end - page = 0 - fs_blocksize = 0 + fs_page_size = 0 + fs_block_size = 0 else: - page = 0x100 + fs_page_size = 0x100 # menu output @@ -1419,7 +1419,7 @@ def flash_map (flashsize_kb, fs_kb = 0, confname = ''): # ( menub + 'eeprom_start', "0x%05X" % eeprom_start ), # ])) - strsize = str(int(flashsize_kb / 1024)) + 'M' if (flashsize_kb >= 1024) else str(flashsize_kb) + 'K' + strsize = str(int(flash_size_kb / 1024)) + 'M' if (flash_size_kb >= 1024) else str(flash_size_kb) + 'K' strfs = str(int(fs_kb / 1024)) + 'M' if (fs_kb >= 1024) else str(fs_kb) + 'K' strfs_strip = str(int(fs_kb / 1024)) + 'M' if (fs_kb >= 1024) else str(fs_kb) if (fs_kb > 0) else '' @@ -1430,8 +1430,7 @@ def flash_map (flashsize_kb, fs_kb = 0, confname = ''): desc = 'none' if (fs_kb == 0) else strfs + 'B' return { - "confname": confname, - "flashsize_kb": flashsize_kb, + "flash_map_name": name, "ld": ld, "menu": menu, "menub": menub, @@ -1443,22 +1442,23 @@ def flash_map (flashsize_kb, fs_kb = 0, confname = ''): "max_ota_size": max_ota_size, "fs_start": fs_start, "fs_end": fs_end, - "fs_pagesize": page, - "fs_blocksize": fs_blocksize, + "fs_page_size": fs_page_size, + "fs_block_size": fs_block_size, "fs_kb": fs_kb, "eeprom_start": eeprom_start, "eeprom_size_kb": eeprom_size_kb, "rfcal_addr": rfcal_addr, "rfcal_size_kb": rfcal_size_kb, - "sdkwifi_size_kb": sdkwifi_size_kb + "sdkwifi_size_kb": sdkwifi_size_kb, + "flash_size_kb": flash_size_kb, } -def menu_generate (*, ld, menu, strsize, desc, max_ota_size, menub, rfcal_addr, fs_start, fs_end, fs_blocksize, fs_kb, **kwargs): +def menu_generate (*, ld, menu, strsize, desc, max_ota_size, menub, rfcal_addr, fs_start, fs_end, fs_block_size, fs_kb, **kwargs): out = collections.OrderedDict([ ( menu, strsize + 'B (FS:' + desc + ' OTA:~%iKB)' % (max_ota_size / 1024)), ( menub + 'flash_size', strsize ), - #( menub + 'flash_size_bytes', "0x%X" % (flashsize_kb * 1024)), + #( menub + 'flash_size_bytes', "0x%X" % (flash_size_kb * 1024)), ( menub + 'flash_ld', ld ), ( menub + 'spiffs_pagesize', '256' ), #( menu + '.upload.maximum_size', "%i" % max_upload_size ), @@ -1469,7 +1469,7 @@ def menu_generate (*, ld, menu, strsize, desc, max_ota_size, menub, rfcal_addr, out.update(collections.OrderedDict([ ( menub + 'spiffs_start', "0x%05X" % fs_start ), ( menub + 'spiffs_end', "0x%05X" % fs_end ), - ( menub + 'spiffs_blocksize', "%i" % fs_blocksize ), + ( menub + 'spiffs_blocksize', "%i" % fs_block_size ), ])) return out @@ -1495,7 +1495,7 @@ def all_menu_generate (mapping): return d -def ldscript_generate (*, ld, strsize, spi, max_upload_size, fs_start, fs_end, fs_pagesize, fs_blocksize, rfcal_addr, rfcal_size_kb, sdkwifi_size_kb, eeprom_start, eeprom_size_kb, **kwargs): +def ldscript_generate (*, ld, strsize, spi, max_upload_size, fs_start, fs_end, fs_page_size, fs_block_size, rfcal_addr, rfcal_size_kb, sdkwifi_size_kb, eeprom_start, eeprom_size_kb, **kwargs): if ldgen: checkdir() @@ -1528,15 +1528,15 @@ def ldscript_generate (*, ld, strsize, spi, max_upload_size, fs_start, fs_end, f print("") print("PROVIDE ( _FS_start = 0x%08X );" % (spi + fs_start)) print("PROVIDE ( _FS_end = 0x%08X );" % (spi + fs_end)) - print("PROVIDE ( _FS_page = 0x%X );" % fs_pagesize) - print("PROVIDE ( _FS_block = 0x%X );" % fs_blocksize) + print("PROVIDE ( _FS_page = 0x%X );" % fs_page_size) + print("PROVIDE ( _FS_block = 0x%X );" % fs_block_size) print("PROVIDE ( _EEPROM_start = 0x%08x );" % (spi + eeprom_start)) # Re-add deprecated symbols pointing to the same address as the new standard ones print("/* The following symbols are DEPRECATED and will be REMOVED in a future release */") print("PROVIDE ( _SPIFFS_start = 0x%08X );" % (spi + fs_start)) print("PROVIDE ( _SPIFFS_end = 0x%08X );" % (spi + fs_end)) - print("PROVIDE ( _SPIFFS_page = 0x%X );" % fs_pagesize) - print("PROVIDE ( _SPIFFS_block = 0x%X );" % fs_blocksize) + print("PROVIDE ( _SPIFFS_page = 0x%X );" % fs_page_size) + print("PROVIDE ( _SPIFFS_block = 0x%X );" % fs_block_size) print("") print('INCLUDE "local.eagle.app.v6.common.ld"') @@ -1552,7 +1552,7 @@ def all_ldscript_generate (mapping): ldscript_generate(**i) -def all_flashmap_generate (mapping): +def all_flashmap_generate (flash_map_groups): if flashmapgen: realstdout = sys.stdout sys.stdout = open(flashmap_h, "w") @@ -1567,12 +1567,12 @@ def as_dec(value, _): return "%d" % value fields = [ - ["fs_start", as_address], - ["fs_end", as_address], - ["fs_blocksize", as_hex], - ["fs_pagesize", as_hex], - ["eeprom_start", as_address], - ["flashsize_kb", as_dec], + ["eeprom_start", as_address], + ["fs_start", as_address], + ["fs_end", as_address], + ["fs_block_size", as_hex], + ["fs_page_size", as_hex], + ["flash_size_kb", as_dec], ] print("// - DO NOT EDIT - autogenerated by boards.txt.py") @@ -1597,22 +1597,22 @@ def as_dec(value, _): print("*/") print() - conflines = collections.OrderedDict([]) - for _, flash_maps in mapping.items(): + ordered_maps = collections.OrderedDict([]) + for _, flash_maps in flash_map_groups.items(): for flash_map in flash_maps: - confname = flash_map.get("confname") - if not confname: + name = flash_map.get("flash_map_name") + if not name: continue - if not conflines.get(confname): - conflines[confname] = [] + if not ordered_maps.get(name): + ordered_maps[name] = [] line = ", ".join(".%s = %s" % ((f, mod(flash_map[f], flash_map)) if mod else flash_map[f]) for f, mod in fields) - conflines[confname].append("{ %s }, \\" % line) + ordered_maps[name].append("{ %s }, \\" % line) - for confname, lines in conflines.items(): - print("#define FLASH_MAP_%s \\" % confname) + for name, lines in ordered_maps.items(): + print("#define FLASH_MAP_%s \\" % name.upper()) print(" { \\") for line in lines: print(" %s" % line) @@ -1626,7 +1626,7 @@ def as_dec(value, _): def all_flash_map (): - # flash(KB) fs(KB) flashmap(optional) + # flash(KB) fs(KB) name(optional) return collections.OrderedDict([ ["1M", [ flash_map( 1024, 64, "OTA_FS" ), From f5f5233af7f858eaef7b59336022d3b6fcf15ae9 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Sat, 30 Apr 2022 06:48:32 +0300 Subject: [PATCH 03/35] argparse, calc tests, regions --- tools/boards.txt.py | 1818 ++++++++++++++++++++++++------------------- 1 file changed, 1035 insertions(+), 783 deletions(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 57a755a797..77db9f9ea4 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -32,36 +32,38 @@ # 512K/1M/2M/4M/8M/16M: menus for flash & FS size # lwip menus for available lwip versions -from __future__ import print_function +import argparse +import doctest import os import sys import collections -import getopt -import re +import operator +import itertools import json - -requiredboards = [ 'generic', 'esp8285' ] +import contextlib ################################################################ -# serial upload speed order in menu -# default is 115 for every board unless specified with 'serial' in board -# or by user command line - -speeds = collections.OrderedDict([ - ( '57', [ 's57', 's115', 's230', 's256', 's460', 's512', 's921', 's3000' ]), - ( '115', [ 's115', 's57', 's230', 's256', 's460', 's512', 's921', 's3000' ]), - ( '230', [ 's230', 's57', 's115', 's256', 's460', 's512', 's921', 's3000' ]), - ( '256', [ 's256', 's57', 's115', 's230', 's460', 's512', 's921', 's3000' ]), - ( '460', [ 's460', 's57', 's115', 's230', 's256', 's512', 's921', 's3000' ]), - ( '512', [ 's512', 's57', 's115', 's230', 's256', 's460', 's921', 's3000' ]), - ( '921', [ 's921', 's57', 's115', 's230', 's256', 's460', 's512', 's3000' ]), - ( '3000', [ 's3000','s57', 's115', 's230', 's256', 's460', 's512', 's921' ]), - ]) +# serial upload speed order in menu, in kibibauds +# default is 115 for every board +# (unless, "serial" field from BOARDS below overrides it) + +SERIAL_SPEEDS = collections.OrderedDict([ + ( '57', ( 's57', 's115', 's230', 's256', 's460', 's512', 's921', 's3000' )), + ( '115', ( 's115', 's57', 's230', 's256', 's460', 's512', 's921', 's3000' )), + ( '230', ( 's230', 's57', 's115', 's256', 's460', 's512', 's921', 's3000' )), + ( '256', ( 's256', 's57', 's115', 's230', 's460', 's512', 's921', 's3000' )), + ( '460', ( 's460', 's57', 's115', 's230', 's256', 's512', 's921', 's3000' )), + ( '512', ( 's512', 's57', 's115', 's230', 's256', 's460', 's921', 's3000' )), + ( '921', ( 's921', 's57', 's115', 's230', 's256', 's460', 's512', 's3000' )), + ( '3000', ( 's3000','s57', 's115', 's230', 's256', 's460', 's512', 's921' )), +]) + +DEFAULT_SERIAL_SPEED = '115' ################################################################ # boards list -boards = collections.OrderedDict([ +BOARDS = collections.OrderedDict([ ( 'generic', { 'name': 'Generic ESP8266 Module', 'opts': { @@ -840,7 +842,6 @@ 'opts': { '.build.board': 'ESP8266_OAK', '.build.variant': 'oak', - '.upload.maximum_size': '1040368', }, 'macro': [ 'resetmethod_none', @@ -1015,10 +1016,11 @@ }) ]) +REQUIRED_BOARDS = ( 'generic', 'esp8285' ) ################################################################ -macros = { +MACROS = { 'defaults': collections.OrderedDict([ ( '.upload.tool', 'esptool' ), ( '.upload.maximum_data_size', '81920' ), @@ -1286,52 +1288,78 @@ } ################################################################ -# defs +# file writer helpers, we need these for *gen functions + + +class OpenWithBackupDir: + def __init__(self, path): + self.path = path + self.backup = os.path.join( + os.path.dirname(path), + "backup") + + def __enter__(self): + if not os.path.isdir(self.backup): + os.mkdir(self.backup) + + backup_path = os.path.join(self.backup, os.path.basename(self.path)) + if os.path.isfile(self.path) and not os.path.isfile(backup_path): + os.rename(self.path, backup_path) + + self._stdout = sys.stdout + sys.stdout = open(self.path, "w", newline="\n") + + return self + + def __exit__(self, *exc): + sys.stdout.close() + sys.stdout = self._stdout + if not any(exc): + print(f'wrote: {self.path}') + + +class OpenWithBackupFile: + def __init__(self, path): + self.path = path + self.orig = f'{self.path}.orig' + + def __enter__(self): + if os.path.isfile(self.orig): + os.remove(self.orig) + + if os.path.isfile(self.path): + os.rename(self.path, self.orig) + + self._stdout = sys.stdout + sys.stdout = open(self.path, "w", newline="\n") + + return self + + def __exit__(self, *exc): + sys.stdout.close() + sys.stdout = self._stdout + if not any(exc): + print(f'wrote: {self.path}') -def checkdir (): - if not os.path.isfile("boards.txt"): - print("please run me from boards.txt directory (like: ./tools/boards.txt.py -...)") - sys.exit(1) ################################################################ # debug options -# https://rosettacode.org/wiki/Combinations#Python -def comb (m, lst): - if m == 0: return [[]] - return [[x] + suffix for i, x in enumerate(lst) for suffix in comb(m - 1, lst[i + 1:])] - -def combn (lst): - all = [] - for i in range(0, len(lst)): - all += comb(i + 1, lst) - return all - -def comb1 (lst, lstplusone): - all = [] - for i in range(0, len(lst)): - all += [ [ lst[i] ] ] - if len(lstplusone): - for i in range(0, len(lstplusone)): - all += [ [ lstplusone[i] ] ] - all += [ lst ] - for i in range(0, len(lstplusone)): - all += [ lst + [ lstplusone[i] ] ] - else: - all += [ lst ] - return all +def subslices(values): + """Generate a combinations list for each possible length of the provided list. + Useful for build defines combinations, where we would like to generate + multiple menu entries for both specific flags and a combinations of them. + + >>> list(subslices(["A", "B"])) + [('A',), ('B',), ('A', 'B')] + >>> list(subslices(["A", "B", "C"])) + [('A',), ('B',), ('C',), ('A', 'B'), ('A', 'C'), ('B', 'C'), ('A', 'B', 'C')] + """ + for n, _ in enumerate(values, start=1): + for combination in itertools.combinations(values, n): + yield combination def all_debug (): - listcomb = [ 'SSL', 'TLS_MEM', 'HTTP_CLIENT', 'HTTP_SERVER' ] - listnocomb = [ 'CORE', 'WIFI', 'HTTP_UPDATE', 'UPDATER', 'OTA', 'OOM', 'MDNS' ] - listplusone = [ 'HWDT', 'HWDT_NOEXTRA4K' ] - listsingle = [ 'NoAssert-NDEBUG' ] - options = combn(listcomb) - options += comb1(listnocomb, listplusone) - options += [ listcomb + listnocomb ] - for i in range(0, len(listplusone)): - options += [ listcomb + listnocomb + [ listplusone[i] ] ] - options += [ listsingle ] debugmenu = collections.OrderedDict([ ( '.menu.dbg.Disabled', 'Disabled' ), ( '.menu.dbg.Disabled.build.debug_port', '' ), @@ -1343,228 +1371,668 @@ def all_debug (): ( '.menu.lvl.None____.build.debug_level', '' ), ]) + options = [] + + # since IDE does not allow to flag multiple options, these are split + # into two sort-of related groups. first ones end up as 'subslice' combinations + a = ( 'SSL', 'TLS_MEM', 'HTTP_CLIENT', 'HTTP_SERVER' ) + + options.extend(subslices(a)) + + # these end up as standalone options and a combined one + b = ( 'CORE', 'WIFI', 'HTTP_UPDATE', 'UPDATER', 'OTA', 'OOM', 'MDNS' ) + for flag in b: + options.append((flag,)) + options.append(b) + + # and these could only happen on their own or with grouped options + for flag in ( 'HWDT', 'HWDT_NOEXTRA4K' ): + options.append((flag,)) + options.append(b + (flag,)) + options.append(a + b + (flag,)) + + def add_menu_entry(name, menuname, flags): + debugmenu.update((( + ( f'.menu.lvl.{name}', menuname ), + ( f'.menu.lvl.{name}.build.debug_level', " {}".format(" ".join(flags)) ) + ))) + + add_menu_entry('NoAssert-NDEBUG', 'NoAssert-NDEBUG', ['-DNDEBUG']) + + # TODO make sure to prepend with space for optlist in options: - debugname = '' - debugmenuname = '' - debugdefs = '' - for opt in optlist: - space = opt.find(" ") - if space > 0: - # remove subsequent associated gcc cmdline option - simpleopt = opt[0:space] - else: - simpleopt = opt - debugname += simpleopt - if debugmenuname != '': - debugmenuname += '+' - debugmenuname += simpleopt - if opt == 'NoAssert-NDEBUG': - debugdefs += ' -DNDEBUG' - else: - debugdefs += ' -DDEBUG_ESP_' + opt - debugmenu.update(collections.OrderedDict([ - ( '.menu.lvl.' + debugname, debugmenuname ), - ( '.menu.lvl.' + debugname + '.build.debug_level', debugdefs ) - ])) + add_menu_entry( + "".join(optlist), + "+".join(optlist), + [f'-DDEBUG_ESP_{opt}' for opt in optlist]) + return { 'debug_menu': debugmenu } ################################################################ # flash size -def flash_map (flash_size_kb, fs_kb = 0, name = ''): +# TODO well, actually... it's kibi and mibi. update menu and .ld comment to use KiB and MiB? +# menu selectors remain as 1 char suffixes, still + +BYTES = 1 +KILOBYTES = 1024 +MEGABYTES = 1024 * 1024 + + +def Bytes(size): + """Just bytes + >>> Bytes(1) + 1 + >>> Bytes(1024) + 1024 + """ + return size + + +def Kilobytes(size): + """Represent N kilobytes as bytes + >>> Kilobytes(1) + 1024 + >>> Kilobytes(1024) + 1048576 + """ + return size * KILOBYTES + + +def Megabytes(size): + """Represent N megabytes as bytes + >>> Megabytes(1) + 1048576 + >>> Megabytes(1024) + 1073741824 + """ + return size * MEGABYTES + + +def humanize(size, *, decimal=False, convert=None): + """Print something intelligible instead of just the value as-is. + To use with .ld and menu, also support custom suffixes for ratios + as [RATIO, SUFFIX] pairs. + + >>> humanize(Bytes(8)) + '8B' + >>> humanize(Megabytes(1)) + '1MB' + >>> humanize(Megabytes(1) - Bytes(10)) + '1023KB' + >>> humanize(Megabytes(1) + Bytes(10)) + '1MB' + >>> humanize(Megabytes(1) + Kilobytes(512)) + '1536KB' + + """ + + if not convert: + convert = [ + [Bytes(1), 'B'], + [Kilobytes(1), 'KB'], + [Megabytes(1), 'MB'], + ] + + for ratio, suffix in reversed(convert): + if size >= ratio: + if size % ratio > (size / 4): + continue + + size = f'{size / ratio:.02f}' + if not decimal: + size = size[:-3] + + size = size.replace(".00", "") + + return f'{size}{suffix}' + + return "" + + +class Region: + """Represent certain start and end addresses (in bytes). + + >>> a = Region("", 0, 0) + >>> a.size == 0 + True + + >>> b = Region("", 0, 1024) + >>> b.start == 0 + True + >>> b.end == 1024 + True + >>> b.size == 1024 + True + + >>> Region("", 1024, 0) + Traceback (most recent call last): + ... + ValueError: start=1024 cannot be larger than end=0 + """ + + def __init__(self, name, start, end): + if start > end: + raise ValueError(f'{start=} cannot be larger than {end=}') + self.name = name + self.start = start + self.end = end + self.size = Bytes(end - start) + + def distance(self, other): + if self.end <= other.start: + return other.start - self.end + elif self.start >= other.end: + return other.end - self.start + + return None + + def __repr__(self): + return f'' + + def copy(self): + return Region(self.name, self.start, self.end) + + @staticmethod + def after(region, size): + """ + >>> a = Region("", 0, 1024) + >>> b = Region.after(a, 1024) + >>> b.start + 1024 + >>> b.end + 2048 + >>> b.size + 1024 + """ + return Region("", region.end, region.end + size) + + @staticmethod + def fromEnd(region, size): + """ + >>> a = Region("", 0, 1024) + >>> b = Region.fromEnd(a, 256) + >>> b.start + 768 + >>> b.end + 1024 + >>> b.size + 256 + """ + return Region("", region.end - size, region.end) + + @staticmethod + def fromStart(region, size): + """ + >>> a = Region("", 0, 1024) + >>> b = Region.fromStart(a, 512) + >>> b.start + 0 + >>> b.end + 512 + >>> b.size + 512 + """ + return Region("", region.start, region.start + size) + + +class Layout: + def __init__(self, region): + self.region = region + self.free = self.region.size + self.subregions = [] + + def __repr__(self): + return f'' + + def __getitem__(self, name): + for region in self.subregions: + if name == region.name: + return region + + return None + + @property + def name(self): + return self.region.name + + @property + def size(self): + return self.region.size + + @property + def used(self): + size = Bytes(0) + for region in self.subregions: + size += region.size + + return size + + @property + def start(self): + return self.region.start + + @property + def end(self): + return self.region.end + + @property + def edge(self): + return self.subregions[-1] if self.subregions else Region("", self.end, self.end) + + def push(self, region): + """ + >>> x = Layout(Region("", 0, 1024)) + >>> x.push(Region("", 1024, 2048)) + Traceback (most recent call last): + ... + ValueError: Out of bounds of + >>> x.push(Region("", -512, 0)) + Traceback (most recent call last): + ... + ValueError: Out of bounds of + >>> x.add("", 512) + + >>> x.push(Region("", 512, 768)) + Traceback (most recent call last): + ... + ValueError: Region is located before self.edge= + >>> x.add("", 1024) + Traceback (most recent call last): + ... + ValueError: No space left + """ + if self.free < region.size: + raise ValueError(f'No space left') + elif self.start > region.start or self.end < region.end: + raise ValueError(f'Out of bounds of {self.region}') + elif self.subregions and region.end > self.edge.start: + raise ValueError(f'Region is located before {self.edge=}') + + self.free = self.free - region.size + self.subregions.append(region) + + return region + + def add(self, name, size): + """ + >>> x = Layout(Region("", 0, 1024)) + >>> x.add("zero", 0) + + >>> x.add("one", 512) + + >>> x.add("two", 512) + + >>> x.add("three", 512) + Traceback (most recent call last): + ... + ValueError: No space left + """ + if self.subregions: + region = Region(name, self.edge.start - size, self.edge.start) + else: + region = Region(name, self.end - size, self.end) + + return self.push(region) + + def add_aligned(self, name, size, alignment): + """ + >>> x = Layout(Region("", 0, Megabytes(1))) + >>> x.add("", Kilobytes(20)) + + >>> r = x.add_aligned("", Kilobytes(512), Kilobytes(8)) + >>> r + + >>> r.size % Kilobytes(8) + 0 + >>> x.add("", Kilobytes(1)) + + >>> x.add_aligned("", Kilobytes(20), Kilobytes(8)) + + """ + end = self.edge.copy() + + remainder = size % alignment + if remainder: + self.add("", remainder) + size -= remainder + + return self.add(name, size) + + +class Filesystem: + """Simple wrapper around Region to supply block and page sizes.""" + + def __init__(self, region, block_size, page_size): + self.region = region + self.block_size = block_size + self.page_size = page_size + + def __bool__(self): + return self.region.size > 0 + + @property + def size(self): + return self.region.size + + @property + def start(self): + return self.region.start + + @property + def end(self): + return self.region.end + + def __repr__(self): + return f'' + +# - menu properties *will* be used in scripts, so these suffixes *must* remain the same +# flash size uses short uppercase suffix (without the B) +# fs size only adds suffix when >= 1M, no string when no fs +# plus, if must be >0, otherwise things won't work :) +# - .ld script *names* could be used in scripts, so suffixes *must* remain the same +# flash size uses short lowercase suffix (without the b) +# fs size only adds suffix when >= 1M, no string when no fs + + +def humanize_fs(size): + convert = [ + [Bytes(1), ""], + [Kilobytes(1), ""], + [Megabytes(1), "M"], + ] + + return humanize(size, convert=convert) - # mapping: - # flash | reserved | empty | spiffs | eeprom | rf-cal | sdk-wifi-settings - spi = 0x40200000 # https://github.com/esp8266/esp8266-wiki/wiki/Memory-Map +def humanize_flash(size): + convert = [ + [Bytes(1), ""], + [Kilobytes(1), "K"], + [Megabytes(1), "M"], + ] - reserved = 4112 - eeprom_size_kb = 4 - rfcal_size_kb = 4 - sdkwifi_size_kb = 12 - fs_end = (flash_size_kb - sdkwifi_size_kb - rfcal_size_kb - eeprom_size_kb) * 1024 + return humanize(size, convert=convert) - # For legacy reasons (#6531), the EEPROM sector needs to be at the old - # FS_end calculated without regards to block size - eeprom_start = fs_end - rfcal_addr = (flash_size_kb - sdkwifi_size_kb - rfcal_size_kb) * 1024 - if flash_size_kb <= 1024: - max_upload_size = (flash_size_kb - (fs_kb + eeprom_size_kb + rfcal_size_kb + sdkwifi_size_kb)) * 1024 - reserved - fs_start = fs_end - fs_kb * 1024 - else: - max_upload_size = 1024 * 1024 - reserved - fs_start = (flash_size_kb - fs_kb) * 1024 +SPI_START = 0x40200000 +SPI_SECTOR = Kilobytes(4) - if fs_kb < 512: - fs_block_size = 4096 - else: - fs_block_size = 8192 - # Adjust FS_end to be a multiple of the block size - fs_end = fs_block_size * (int)((fs_end - fs_start)/fs_block_size) + fs_start +# ref. https://github.com/esp8266/esp8266-wiki/wiki/Memory-Map +# bootloader | crc | sketch | empty | fs | eeprom | rf-cal | sdk-wifi-settings +def common_layout(name, flash_size): + # notice that we start from 0 instead of SPI start, menu needs relative addresses + # (which we then simply add where it is populated) + layout = Layout(Region(name, 0, flash_size)) + + # these are *always* at the end of the flash, so layout is populated backwards + sdkwifi = layout.add("SDK + WiFi", (SPI_SECTOR * 3)) + rfcal = layout.add("RFCAL", SPI_SECTOR) + + # eeprom sector is always there, since we don't know whether it is used or not + eeprom = layout.add("EEPROM", SPI_SECTOR) + + return layout + - max_ota_size = min(max_upload_size, fs_start / 2) # =(max_upload_size+empty_size)/2 +def flash_map (flash_size, fs_size = Bytes(0), name = ''): + """Generate template variables for the specified flash and filesystem sizes. + Name is optional and is simply passed through. - if fs_kb == 0: - fs_start = fs_end - fs_page_size = 0 - fs_block_size = 0 + >>> x = flash_map(Megabytes(2), Kilobytes(64), 'Test') + >>> x['flash_map_name'] + 'Test' + >>> x['ld'] + 'eagle.flash.2m64.ld' + >>> x['menu'] + '.menu.eesz.2M64' + >>> x['layout']['Filesystem'].size + 45056 + + """ + + layout = common_layout(name, flash_size) + + if fs_size: + if fs_size < Kilobytes(512): + fs_block_size = Kilobytes(4) + else: + fs_block_size = Kilobytes(8) + fs_page_size = Bytes(256) else: - fs_page_size = 0x100 + fs_page_size = Bytes(0) + fs_block_size = Bytes(0) + + # maintaining backwards compatibility, address is based + # on the *end of flash*, not using available space at the edge + # (e.g. with 2M64, we end up with only 44K of space) + expected_fs_size = fs_size + if fs_size and flash_size > Megabytes(1): + fs_size = fs_size - layout.used + + if fs_size: + fs = Filesystem( + layout.add_aligned("Filesystem", fs_size, fs_block_size), + fs_block_size, fs_page_size) + else: + fs = None + + # at this point, we either left with empty + app or just the app space + # we could create an app up-most to 1mb, so the rest of the space is empty + nearest = layout.edge + if layout.free > Megabytes(1): + empty = layout.push(Region("Empty", layout.start + Megabytes(1), nearest.start)) + nearest = empty + else: + empty = None - # menu output + # ref. elf2bin.py, 1st flash sector + 16bytes off crc size + 4 bytes crc + bootloader = Region.fromStart(layout.region, SPI_SECTOR) + crc = Region.after(bootloader, Bytes(20)) - #d.update(collections.OrderedDict([ - # ( menub + 'eeprom_start', "0x%05X" % eeprom_start ), - # ])) + reserved = Region("Bootloader + CRC", bootloader.start, crc.end) - strsize = str(int(flash_size_kb / 1024)) + 'M' if (flash_size_kb >= 1024) else str(flash_size_kb) + 'K' - strfs = str(int(fs_kb / 1024)) + 'M' if (fs_kb >= 1024) else str(fs_kb) + 'K' - strfs_strip = str(int(fs_kb / 1024)) + 'M' if (fs_kb >= 1024) else str(fs_kb) if (fs_kb > 0) else '' + sketch = Region("Sketch", layout.start + reserved.size, nearest.start) + layout.push(sketch) + layout.push(reserved) - ld = 'eagle.flash.' + strsize.lower() + strfs_strip.lower() + '.ld' + assert(layout.free == 0) - menu = '.menu.eesz.' + strsize + strfs_strip - menub = menu + '.build.' - desc = 'none' if (fs_kb == 0) else strfs + 'B' + ld = f'eagle.flash.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}.ld'.lower() + menu = f'.menu.eesz.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}' + + max_upload_size = layout.size - reserved.size + if empty: + max_ota_size = empty.size + else: + max_ota_size = min(Megabytes(1) - reserved.size, int(sketch.size / 2)) return { - "flash_map_name": name, - "ld": ld, - "menu": menu, - "menub": menub, - "desc": desc, - "spi": spi, - "strsize": strsize, - "fs_start": fs_start, + "layout": layout, + "flash_size": layout.region.size, + "flash_map_name": layout.region.name, + "sdkwifi": layout["SDK + WiFi"], + "rfcal": layout["RFCAL"], + "eeprom": layout["EEPROM"], + "empty": empty, + "fs": fs, + "sketch": sketch, "max_upload_size": max_upload_size, "max_ota_size": max_ota_size, - "fs_start": fs_start, - "fs_end": fs_end, - "fs_page_size": fs_page_size, - "fs_block_size": fs_block_size, - "fs_kb": fs_kb, - "eeprom_start": eeprom_start, - "eeprom_size_kb": eeprom_size_kb, - "rfcal_addr": rfcal_addr, - "rfcal_size_kb": rfcal_size_kb, - "sdkwifi_size_kb": sdkwifi_size_kb, - "flash_size_kb": flash_size_kb, + "ld": ld, + "menu": menu, } -def menu_generate (*, ld, menu, strsize, desc, max_ota_size, menub, rfcal_addr, fs_start, fs_end, fs_block_size, fs_kb, **kwargs): - out = collections.OrderedDict([ - ( menu, strsize + 'B (FS:' + desc + ' OTA:~%iKB)' % (max_ota_size / 1024)), - ( menub + 'flash_size', strsize ), - #( menub + 'flash_size_bytes', "0x%X" % (flash_size_kb * 1024)), - ( menub + 'flash_ld', ld ), - ( menub + 'spiffs_pagesize', '256' ), - #( menu + '.upload.maximum_size', "%i" % max_upload_size ), - ( menub + 'rfcal_addr', "0x%X" % rfcal_addr) +def menu_generate (*, ld, menu, max_ota_size, max_upload_size, rfcal, flash_size, fs, **kwargs): + out = [ + ( menu, f'{humanize_flash(flash_size)} (FS:{humanize(fs.size) if fs else "none"} OTA:~{humanize(max_ota_size)})' ), + ( f'{menu}.build.flash_size', humanize_flash(flash_size) ), + ( f'{menu}.build.flash_ld', ld ), + ( f'{menu}.build.rfcal_addr', f'0x{rfcal.start:05X}' ), + ] + + out.append( + ( f'{menu}.upload.maximum_size', f'{max_upload_size}' ) + ) + + if fs: + out.extend(( + ( f'{menu}.build.spiffs_start', f'0x{fs.start:05X}' ), + ( f'{menu}.build.spiffs_end', f'0x{fs.end:05X}' ), + ( f'{menu}.build.spiffs_blocksize', fs.block_size ), + ( f'{menu}.build.spiffs_pagesize', fs.page_size ), + )) + + return collections.OrderedDict(out) + + +def all_menu_generate (flash_maps): + output = { + 'autoflash': collections.OrderedDict([ + ( '.menu.eesz.autoflash', 'Mapping defined by Hardware and Sketch' ), + ( '.menu.eesz.autoflash.build.flash_size', '16M' ), + ( '.menu.eesz.autoflash.build.flash_ld', 'eagle.flash.auto.ld' ), + ( '.menu.eesz.autoflash.build.extra_flags', '-DFLASH_MAP_SUPPORT=1' ), + ( '.menu.eesz.autoflash.upload.maximum_size', '1044464' ), ]) + } - if fs_kb > 0: - out.update(collections.OrderedDict([ - ( menub + 'spiffs_start', "0x%05X" % fs_start ), - ( menub + 'spiffs_end', "0x%05X" % fs_end ), - ( menub + 'spiffs_blocksize', "%i" % fs_block_size ), - ])) + for flash_map in flash_maps: + size = humanize_flash(flash_map["layout"].size) + menu = menu_generate(**flash_map) - return out + if size in output: + output[size].update(menu) + else: + output[size] = collections.OrderedDict(menu) + return output -def all_menu_generate (mapping): - d = { - 'autoflash': { - '.menu.eesz.autoflash': 'Mapping defined by Hardware and Sketch', - '.menu.eesz.autoflash.build.flash_size': '16M', - '.menu.eesz.autoflash.build.flash_ld': 'eagle.flash.auto.ld', - '.menu.eesz.autoflash.build.extra_flags': '-DFLASH_MAP_SUPPORT=1', - '.menu.eesz.autoflash.upload.maximum_size': '1044464', - } - } - for k, values in mapping.items(): - items = collections.OrderedDict([]) - for v in values: - items.update(menu_generate(**v)) - d[k] = items - - return d - - -def ldscript_generate (*, ld, strsize, spi, max_upload_size, fs_start, fs_end, fs_page_size, fs_block_size, rfcal_addr, rfcal_size_kb, sdkwifi_size_kb, eeprom_start, eeprom_size_kb, **kwargs): - if ldgen: - checkdir() - - ldbackupdir = lddir + "backup/" - if not os.path.isdir(ldbackupdir): - os.mkdir(ldbackupdir) - if os.path.isfile(lddir + ld) and not os.path.isfile(ldbackupdir + ld): - os.rename(lddir + ld, ldbackupdir + ld) - realstdout = sys.stdout - sys.stdout = open(lddir + ld, 'w') - - print("/* Flash Split for %s chips */" % strsize) - print("/* sketch @0x%X (~%dKB) (%dB) */" % (spi, (max_upload_size / 1024), max_upload_size)) - empty_size = fs_start - max_upload_size - if empty_size > 0: - print("/* empty @0x%X (~%dKB) (%dB) */" % (spi + max_upload_size, empty_size / 1024, empty_size)) - print("/* spiffs @0x%X (~%dKB) (%dB) */" % (spi + fs_start, ((fs_end - fs_start) / 1024), fs_end - fs_start)) - print("/* eeprom @0x%X (%dKB) */" % (spi + rfcal_addr - eeprom_size_kb * 1024, eeprom_size_kb)) - print("/* rfcal @0x%X (%dKB) */" % (spi + rfcal_addr, rfcal_size_kb)) - print("/* wifi @0x%X (%dKB) */" % (spi + rfcal_addr + rfcal_size_kb * 1024, sdkwifi_size_kb)) - print("") - print("MEMORY") - print("{") - print(" dport0_0_seg : org = 0x3FF00000, len = 0x10") - print(" dram0_0_seg : org = 0x3FFE8000, len = 0x14000") - # Moved to ld/eagle.app.v6.common.ld.h as a 2nd MEMORY command. - # print(" iram1_0_seg : org = 0x40100000, len = MMU_IRAM_SIZE") - print(" irom0_0_seg : org = 0x40201010, len = 0x%x" % max_upload_size) - print("}") - print("") - print("PROVIDE ( _FS_start = 0x%08X );" % (spi + fs_start)) - print("PROVIDE ( _FS_end = 0x%08X );" % (spi + fs_end)) - print("PROVIDE ( _FS_page = 0x%X );" % fs_page_size) - print("PROVIDE ( _FS_block = 0x%X );" % fs_block_size) - print("PROVIDE ( _EEPROM_start = 0x%08x );" % (spi + eeprom_start)) - # Re-add deprecated symbols pointing to the same address as the new standard ones - print("/* The following symbols are DEPRECATED and will be REMOVED in a future release */") - print("PROVIDE ( _SPIFFS_start = 0x%08X );" % (spi + fs_start)) - print("PROVIDE ( _SPIFFS_end = 0x%08X );" % (spi + fs_end)) - print("PROVIDE ( _SPIFFS_page = 0x%X );" % fs_page_size) - print("PROVIDE ( _SPIFFS_block = 0x%X );" % fs_block_size) - print("") - print('INCLUDE "local.eagle.app.v6.common.ld"') - - if ldgen: - sys.stdout.close() - sys.stdout = realstdout - print("generated: %s" % (lddir + ld)) +def ldscript_generate (output, *, ld, layout, max_upload_size, sdkwifi, rfcal, eeprom, fs, empty, sketch, **kwargs): + context = contextlib.nullcontext + if output: + context = OpenWithBackupDir + def address(value): + return f'{SPI_START + value.start:08X}' -def all_ldscript_generate (mapping): - for v in mapping.values(): - for i in v: - ldscript_generate(**i) + def size(value): + return f'{humanize(value.size)}' + if not fs: + fs = Filesystem(Region("", eeprom.start, eeprom.start), 0, 0) -def all_flashmap_generate (flash_map_groups): - if flashmapgen: - realstdout = sys.stdout - sys.stdout = open(flashmap_h, "w") - - def as_address(value, mapping): - return "0x%08x" % (value + mapping["spi"]) + with context(os.path.join(output, ld)): + print(f'/* Flash Split for {size(layout)} chips */') + print(f'/* sketch @0x{address(sketch)} (~{size(sketch)}) ({sketch.size}B) */') + if empty: + print(f'/* empty @0x{address(empty)} (~{size(empty)}) ({empty.size}B) */') + if fs: + print(f'/* fs @0x{address(fs)} (~{size(fs)}) ({fs.size}B) */') + print(f'/* eeprom @0x{address(eeprom)} ({eeprom.size}B) */') + print(f'/* rfcal @0x{address(rfcal)} ({rfcal.size}B) */') + print(f'/* wifi @0x{address(sdkwifi)} ({sdkwifi.size}B) */') + print() + print("MEMORY") + print("{") + print(" dport0_0_seg : org = 0x3FF00000, len = 0x10") + print(" dram0_0_seg : org = 0x3FFE8000, len = 0x14000") + print(f' irom0_0_seg : org = 0x40201010, len = {hex(int(max_upload_size))}') + print("}") + print() + print(f'PROVIDE ( _FS_start = 0x{fs.start:08X} );') + print(f'PROVIDE ( _FS_end = 0x{fs.end:08X} );') + print(f'PROVIDE ( _FS_page = 0x{int(fs.page_size):08X} );') + print(f'PROVIDE ( _FS_block = 0x{int(fs.block_size):08X} );') + print(f'PROVIDE ( _EEPROM_start = 0x{fs.start:08X} );') + # Re-add deprecated symbols pointing to the same address as the new standard ones + print("/* The following symbols are DEPRECATED and will be REMOVED in a future release */") + print(f'PROVIDE ( _SPIFFS_start = 0x{fs.start:08X} );') + print(f'PROVIDE ( _SPIFFS_end = 0x{fs.end:08X} );') + print(f'PROVIDE ( _SPIFFS_page = 0x{int(fs.page_size):08X} );') + print(f'PROVIDE ( _SPIFFS_block = 0x{int(fs.block_size):08X} );') + print() + print('INCLUDE "local.eagle.app.v6.common.ld"') + + +def all_ldscript_generate (output, flash_maps): + for flash_map in flash_maps: + ldscript_generate(output, **flash_map) + + +def flashmap_generate (output, flash_maps): + """ + >>> flashmap_generate(None, (flash_map(Megabytes(1), Kilobytes(512), 'TEST'), )) + // - DO NOT EDIT - autogenerated by boards.txt.py + + #pragma once + + #include + #include + + typedef struct + { + uint32_t eeprom_start; + uint32_t fs_start; + uint32_t fs_end; + uint32_t fs_block_size; + uint32_t fs_page_size; + uint32_t flash_size_kb; + } flash_map_s; + + /* + Following definitions map the above structure, one per line. + FLASH_MAP_* is a user choice in sketch: + `FLASH_MAP_SETUP_CONFIG(FLASH_MAP_OTA_FS)` + Configuration is made at boot with detected flash chip size (last argument 512..16384) + Other values are defined from `tools/boards.txt.py`. + */ + + #define FLASH_MAP_TEST \\ + { \\ + { .eeprom_start = 0x402fb000, .fs_start = 0x4027b000, .fs_end = 0x402fb000, .fs_block_size = 0x2000, .fs_page_size = 0x100, .flash_size_kb = 1024 }, \\ + } + + """ + + def as_address(value): + return f'0x{SPI_START + value:08x}' + + def as_hex(value): + return f'0x{value:x}' + + def as_dec(value): + return f'{value:d}' + + # note that the current header version *only* has the values + # previously PROVIDEd by the .ld script + # forward those names to the correct object values + def field_values(*, layout, eeprom, fs, **kwards): + values = { + "name": layout.name, + "eeprom_start": eeprom.start, + "flash_size_kb": int(layout.size / KILOBYTES), + } - def as_hex(value, _): - return "0x%x" % value + if fs: + values.update({ + "fs_start": fs.start, + "fs_end": fs.end, + "fs_block_size": fs.block_size, + "fs_page_size": fs.page_size, + }) + else: + values.update({ + "fs_start": eeprom.start, + "fs_end": eeprom.start, + "fs_block_size": 0, + "fs_page_size": 0, + }) - def as_dec(value, _): - return "%d" % value + return values fields = [ ["eeprom_start", as_address], @@ -1575,117 +2043,110 @@ def as_dec(value, _): ["flash_size_kb", as_dec], ] - print("// - DO NOT EDIT - autogenerated by boards.txt.py") - print() - print("#pragma once") - print() - print("#include ") - print("#include ") - print() - print("typedef struct") - print("{") - for field, _ in fields: - print(" uint32_t %s;" % field) - print("} flash_map_s;") - print() - print("/*") - print(" Following definitions map the above structure, one per line.") - print(" FLASH_MAP_* is a user choice in sketch:") - print(" `FLASH_MAP_SETUP_CONFIG(FLASH_MAP_OTA_FS)`") - print(" Configuration is made at boot with detected flash chip size (last argument 512..16384)") - print(" Other values are defined from `tools/boards.txt.py`.") - print("*/") - print() + context = contextlib.nullcontext + if output: + context = OpenWithBackupFile + + with context(output): + print("// - DO NOT EDIT - autogenerated by boards.txt.py") + print() + print("#pragma once") + print() + print("#include ") + print("#include ") + print() + print("typedef struct") + print("{") + for field, _ in fields: + print(f' uint32_t {field};') + print("} flash_map_s;") + print() + print("/*") + print(" Following definitions map the above structure, one per line.") + print(" FLASH_MAP_* is a user choice in sketch:") + print(" `FLASH_MAP_SETUP_CONFIG(FLASH_MAP_OTA_FS)`") + print(" Configuration is made at boot with detected flash chip size (last argument 512..16384)") + print(" Other values are defined from `tools/boards.txt.py`.") + print("*/") + print() - ordered_maps = collections.OrderedDict([]) - for _, flash_maps in flash_map_groups.items(): + ordered_maps = collections.OrderedDict([]) for flash_map in flash_maps: - name = flash_map.get("flash_map_name") - if not name: + values = field_values(**flash_map) + if not values["name"]: continue + name = values["name"] if not ordered_maps.get(name): ordered_maps[name] = [] - line = ", ".join(".%s = %s" % ((f, mod(flash_map[f], flash_map)) - if mod else flash_map[f]) for f, mod in fields) - ordered_maps[name].append("{ %s }, \\" % line) - - for name, lines in ordered_maps.items(): - print("#define FLASH_MAP_%s \\" % name.upper()) - print(" { \\") - for line in lines: - print(" %s" % line) - print(" }") - print() - - if flashmapgen: - sys.stdout.close() - sys.stdout = realstdout - print("generated: flash map config file %s" % flashmap_h) - - -def all_flash_map (): - # flash(KB) fs(KB) name(optional) - return collections.OrderedDict([ - ["1M", [ - flash_map( 1024, 64, "OTA_FS" ), - flash_map( 1024, 128 ), - flash_map( 1024, 144 ), - flash_map( 1024, 160 ), - flash_map( 1024, 192 ), - flash_map( 1024, 256 ), - flash_map( 1024, 512, "MAX_FS" ), - flash_map( 1024, 0, "NO_FS" ), - ]], - ["2M", [ - flash_map( 2*1024, 64 ), - flash_map( 2*1024, 128 ), - flash_map( 2*1024, 256, "OTA_FS" ), - flash_map( 2*1024, 512 ), - flash_map( 2*1024, 1024, "MAX_FS" ), - flash_map( 2*1024, 0, "NO_FS" ), - ]], - ["4M", [ - flash_map( 4*1024, 2*1024, "OTA_FS" ), - flash_map( 4*1024, 3*1024, "MAX_FS" ), - flash_map( 4*1024, 1024 ), - flash_map( 4*1024, 0, "NO_FS"), - ]], - ["8M", [ - flash_map( 8*1024, 6*1024, "OTA_FS" ), - flash_map( 8*1024, 7*1024, "MAX_FS" ), - flash_map( 8*1024, 0, "NO_FS" ), - ]], - ["16M", [ - flash_map( 16*1024, 14*1024, "OTA_FS" ), - flash_map( 16*1024, 15*1024, "MAX_FS" ), - flash_map( 16*1024, 0, "NO_FS" ), - ]], - ["512K", [ - flash_map( 512, 32, "OTA_FS" ), - flash_map( 512, 64 ), - flash_map( 512, 128, "MAX_FS" ), - flash_map( 512, 0, "NO_FS" ), - ]] - ]) + line = ", ".join(f'.{field} = {mod(values[field])}' if mod + else values[field] for field, mod in fields) + ordered_maps[name].append(f'{{ {line} }}, \\') + + for name, lines in ordered_maps.items(): + print(f'#define FLASH_MAP_{name.upper()} \\') + print(" { \\") + for line in lines: + print(f' {line}') + print(" }") + print() + + +def all_flash_maps (): + # flash_map(name=...) is optional. when it is set, + # we will generate a named FlashMap.h entry + return ( + flash_map( Megabytes(1), Kilobytes(64), "OTA_FS" ), + flash_map( Megabytes(1), Kilobytes(128) ), + flash_map( Megabytes(1), Kilobytes(144) ), + flash_map( Megabytes(1), Kilobytes(160) ), + flash_map( Megabytes(1), Kilobytes(192) ), + flash_map( Megabytes(1), Kilobytes(256) ), + flash_map( Megabytes(1), Kilobytes(512), "MAX_FS" ), + flash_map( Megabytes(1), Kilobytes(0), "NO_FS" ), + + flash_map( Megabytes(2), Kilobytes(64) ), + flash_map( Megabytes(2), Kilobytes(128) ), + flash_map( Megabytes(2), Kilobytes(256), "OTA_FS" ), + flash_map( Megabytes(2), Kilobytes(512) ), + flash_map( Megabytes(2), Megabytes(1), "MAX_FS" ), + flash_map( Megabytes(2), Kilobytes(0), "NO_FS" ), + + flash_map( Megabytes(4), Megabytes(2), "OTA_FS" ), + flash_map( Megabytes(4), Megabytes(3), "MAX_FS" ), + flash_map( Megabytes(4), Megabytes(1) ), + flash_map( Megabytes(4), Kilobytes(0), "NO_FS"), + + flash_map( Megabytes(8), Megabytes(6), "OTA_FS" ), + flash_map( Megabytes(8), Megabytes(7), "MAX_FS" ), + flash_map( Megabytes(8), Kilobytes(0), "NO_FS" ), + + flash_map( Megabytes(16), Megabytes(14), "OTA_FS" ), + flash_map( Megabytes(16), Megabytes(15), "MAX_FS" ), + flash_map( Megabytes(16), Kilobytes(0), "NO_FS" ), + + flash_map( Kilobytes(512), Kilobytes(32), "OTA_FS" ), + flash_map( Kilobytes(512), Kilobytes(64) ), + flash_map( Kilobytes(512), Kilobytes(128), "MAX_FS" ), + flash_map( Kilobytes(512), Kilobytes(0), "NO_FS" ), + ) ################################################################ # builtin led def led (name, default, ledList): - led = collections.OrderedDict([ - ('.menu.led.' + str(default), str(default)), - ('.menu.led.' + str(default) + '.build.led', '-DLED_BUILTIN=' + str(default)), - ]) - for i in ledList: # Make range incluside of max (16), since there are really 16 GPIOS not 15 - if not i == default: - led.update( - collections.OrderedDict([ - ('.menu.led.' + str(i), str(i)), - ('.menu.led.' + str(i) + '.build.led', '-DLED_BUILTIN=' + str(i)), - ])) - return { name: led } + menu = collections.OrderedDict(( + (f'.menu.led.{default}', str(default)), + (f'.menu.led.{default}.build.led', f'-DLED_BUILTIN={default}'), + )) + for led in ledList: # Make range incluside of max (16), since there are really 16 GPIOS not 15 + if not led == default: + menu.update(( + (f'.menu.led.{led}', str(led)), + (f'.menu.led.{led}.build.led', f'-DLED_BUILTIN={led}'), + )) + return { name: menu } ################################################################ # sdk selection @@ -1711,502 +2172,293 @@ def sdk (): ################################################################ -def all_boards (): +def abridged_boards_txt (filtered, boards, cmdline): + def handler(path): + if filtered: + print('#') + print(f'# Abridged file created by: {cmdline}') + print('# The following boards were included: {}'.format(" ".join(boards.keys()))) + print('#') - if boardsgen or boardslocalgen: + return handler - checkdir() +def customspeeds_boards_txt (speeds): + def handler(name): + for speed in speeds: + print(f'{name}.menu.baud.{speed}={speed}') + print(f'{name}.menu.baud.{speed}.upload.speed={speed}') - if boardsgen: - # check if backup already exists - if not os.path.isfile("boards.txt.orig"): - os.rename("boards.txt", "boards.txt.orig") + return handler - realstdout = sys.stdout - sys.stdout = open("boards.txt", 'w') - else: - # make backup of boards.local.txt - if os.path.isfile("boards.local.txt"): - if not os.path.isfile("boards.local.txt.orig"): - os.rename("boards.local.txt", "boards.local.txt.orig") - realstdout = sys.stdout - sys.stdout = open("boards.local.txt", 'w') +def nofloat_boards_txt (disabled): + def handler(name): + if disabled: + print(f'{name}.build.float=') - macros.update(all_menu_generate(all_flash_map())) + return handler + + +def prepare_macros (defaults, flashmap, builtinled): + macros = defaults + macros.update(all_menu_generate(flashmap)) macros.update(all_debug()) - macros.update(led('led', led_default, range(0,led_max+1))) - macros.update(led('led216', 2, { 16 })) + macros.update(led('led', builtinled, range(0, 17))) + macros.update(led('led216', 2, (16, ))) macros.update(sdk()) - if boardfilteropt or excludeboards: - print('#') - print('# Do not create pull-requests with this abridged file!') - print('# Do as instructed further down.') - print('#') + return macros - out = "" - for a in sys.argv: - out += " " + a - print('# Abridged boards.txt or boards.local.txt created by:' + out) - out = "" - for a in boardlist: - out += " " + a - print('# The following boards were included: ' + out) + +def all_boards_generate (output, boards, macros, extra_header=[], extra_board=[]): + + context = contextlib.nullcontext + if output: + context = OpenWithBackupFile + + with context(output): + print("// - DO NOT EDIT - autogenerated by boards.txt.py") + print('# Instead, modify {cmdname} and run `{cmdname} --boards --generate`'.format( + cmdname=os.path.basename(sys.argv[0]))) print('#') + for func in extra_header: + func(output) + print() + # With Arduino IDE 1.8.7 the order of the menu items will be honored from the tools pull down list. + print('menu.BoardModel=Model') + print('menu.ESPModule=Module') + print('menu.UploadTool=Upload Tool') + print('menu.led=Builtin Led') + print('menu.baud=Upload Speed') + print('menu.xtal=CPU Frequency') + print('menu.CrystalFreq=Crystal Frequency') + print('menu.eesz=Flash Size') + print('menu.FlashMode=Flash Mode') + print('menu.FlashFreq=Flash Frequency') + print('menu.ResetMethod=Reset Method') + print('menu.dbg=Debug port') + print('menu.lvl=Debug Level') + print('menu.ip=lwIP Variant') + print('menu.vt=VTables') + print('menu.exception=C++ Exceptions') + print('menu.stacksmash=Stack Protection') + print('menu.wipe=Erase Flash') + print('menu.sdk=Espressif FW') + print('menu.ssl=SSL Support') + print('menu.mmu=MMU') + print('menu.non32xfer=Non-32-Bit Access') + print() + for name, board in boards.items(): + print('##############################################################') + print(f'{name}.name={board["name"]}') - print('#') - print('# Do not create pull-requests for this file only, CI will not accept them.') - print('# You *must* edit/modify/run ' + os.path.basename(sys.argv[0]) + ' to regenerate boards.txt.') - print('# All modified files after running with option "--allgen" must be included in the pull-request.') - print('#') - print('') - # With Arduino IDE 1.8.7 the order of the menu items will be honored from the tools pull down list. - print('menu.BoardModel=Model') - print('menu.ESPModule=Module') - print('menu.UploadTool=Upload Tool') - print('menu.led=Builtin Led') - print('menu.baud=Upload Speed') - print('menu.xtal=CPU Frequency') - print('menu.CrystalFreq=Crystal Frequency') - print('menu.eesz=Flash Size') - print('menu.FlashMode=Flash Mode') - print('menu.FlashFreq=Flash Frequency') - print('menu.ResetMethod=Reset Method') - print('menu.dbg=Debug port') - print('menu.lvl=Debug Level') - print('menu.ip=lwIP Variant') - print('menu.vt=VTables') - print('menu.exception=C++ Exceptions') - print('menu.stacksmash=Stack Protection') - print('menu.wipe=Erase Flash') - print('menu.sdk=Espressif FW') - print('menu.ssl=SSL Support') - print('menu.mmu=MMU') - print('menu.non32xfer=Non-32-Bit Access') - print('') - - missingboards = [] - boardlistsortedbydisplayedname = [ k for k in sorted(boardlist, key = lambda item: boards[item]['name']) ] - sortedrequiredfirst = requiredboards + [ item for item in boardlistsortedbydisplayedname if item not in requiredboards ] - for id in sortedrequiredfirst: - if id not in boards: - missingboards += [ id ] - continue - - print('##############################################################') - board = boards[id] - print(id + '.name=' + board['name']) - - # standalone options - if 'opts' in board: - for optname in sorted(board['opts']): - print(id + optname + '=' + board['opts'][optname]) - - # macros - macrolist = [ 'defaults', 'cpufreq_menu', 'vtable_menu', 'exception_menu', 'stacksmash_menu', 'ssl_cipher_menu', 'mmu_menu', 'non32xfer_menu' ] - if 'macro' in board: - macrolist += board['macro'] - macrolist += [ 'lwip', 'debug_menu', 'flash_erase_menu' ] - - for cs in customspeeds: - print(id + cs) - - if 'serial' in board: - macrolist += speeds[board['serial']] - else: - macrolist += speeds[default_speed] + # standalone options + if 'opts' in board: + for optname in sorted(board['opts']): + print(f'{name}{optname}={board["opts"][optname]}') - macrolist += [ 'autoflash' ] + # macros + macrolist = [ 'defaults', 'cpufreq_menu', 'vtable_menu', 'exception_menu', 'stacksmash_menu', 'ssl_cipher_menu', 'mmu_menu', 'non32xfer_menu' ] + if 'macro' in board: + macrolist += board['macro'] + macrolist += [ 'lwip', 'debug_menu', 'flash_erase_menu' ] - for block in macrolist: - for optname in macros[block]: - if not ('opts' in board) or not (optname in board['opts']): - print(id + optname + '=' + macros[block][optname]) + macrolist += SERIAL_SPEEDS[board.get("serial", DEFAULT_SERIAL_SPEED)] + macrolist += [ 'autoflash' ] - if nofloat: - print(id + '.build.float=') + for func in extra_board: + func(name) - print('') + for block in macrolist: + for optname in macros[block]: + if not ('opts' in board) or not (optname in board['opts']): + print(f'{name}{optname}={macros[block][optname]}') - if boardsgen or boardslocalgen: - sys.stdout.close() - sys.stdout = realstdout + print() - if missingboards: + +def filtered_boards(boards, path, action=operator.sub): + filters = set() + + with open(path, "r") as f: + for line in f: + if line.startswith("#"): + continue + board, _, desc = line.partition("#") + board = board.strip() + filters.add(board) + + filtered = action(set(boards.keys()), filters) + + print('Filtered boards list:') + print(" ".join(filtered)) + print() + + missing = [name for name in filtered if name not in boards.keys()] + if missing: print("No board definitions were found for the following boards:") - print(missingboards) + print(" ".join(missing)) print("") - if boardsgen: - print("generated: boards.txt") - else: - print("generated: boards.local.txt") + result = collections.OrderedDict() + for name, board in boards.items(): + if name in filtered: + result[name] = board -################################################################ + return result -def package (): - pkgfname = "package/package_esp8266com_index.template.json" - pkgfname_read = pkgfname +def prepare_boards (boards, required_boards): + boardslist = set(required_boards) | set(boards.keys()) + boardslist = boardslist - set(required_boards) + boardslist = required_boards + tuple(sorted(boardslist, key=lambda x: boards[x]["name"])) - checkdir() + out = collections.OrderedDict() + for name in boardslist: + out[name] = boards[name] - if packagegen: - pkgfname_read = pkgfname + '.orig' - if os.path.isfile(pkgfname_read): - os.remove(pkgfname_read) - os.rename(pkgfname, pkgfname_read) + return out - # read package file - with open (pkgfname_read, "r") as package_file: - filestr = package_file.read() - substitution = '"boards": [\n' - board_items = [' {\n "name": "%s"\n }' % boards[id]['name'] - for id in boards] - substitution += ',\n'.join(board_items) - substitution += '\n ],' +def boardnames (boards): + print('# Available board names. Delete or comment out the boards you do not need:') + for name, board in boards.items(): + print(f'{name: <20s} # {board["name"]}') - newfilestr = re.sub(r'"boards":[^\]]*\],', substitution, filestr, re.MULTILINE) - - # To get consistent indent/formatting read the JSON and write it out programmatically - if packagegen: - with open(pkgfname, 'w') as package_file: - filejson = json.loads(newfilestr, object_pairs_hook=collections.OrderedDict) - package_file.write(json.dumps(filejson, indent=3, separators=(',',': '))) - print("updated: %s" % pkgfname) - else: - sys.stdout.write(newfilestr) ################################################################ -def doc (): +def package_generate (output, boards): + with open(output, "r") as f: + data = json.load(f, object_pairs_hook=collections.OrderedDict) - if docgen: + target = None + for package in data["packages"]: + for platform in package["platforms"]: + if platform["name"] == "esp8266": + target = platform["boards"] - checkdir() + if not target: + raise ValueError('no "boards" field found for the platform') - # check if backup already exists - if not os.path.isfile("doc/boards.rst.orig"): - os.rename("doc/boards.rst", "doc/boards.rst.orig") + with OpenWithBackupFile(output): + target = [{"name": board["name"]} for board in boards.values()] + print(json.dumps(data, indent=3, separators=(",", ": "))) - realstdout = sys.stdout - sys.stdout = open("doc/boards.rst", 'w') +################################################################ - print('Boards') - print('======') - print('') +def doc_generate (output, boards): + context = contextlib.nullcontext + if output: + context = OpenWithBackupFile - for id in boards: - board = boards[id] - print(board['name']) - dash = "" - for i in range(len(board['name'])): - dash += '-' - print(dash) + with context(output): + print('Boards') + print('======') + print() - print('') - if 'desc' in board: - for line in board['desc']: + for board in boards.values(): + print(board['name']) + print("-" * len(board["name"])) + print() + for line in board.get("desc", []): print(line) - else: - print('No description') - print('') - - if docgen: - sys.stdout.close() - sys.stdout = realstdout - print("generated: doc/boards.rst") + print() ################################################################ +# entrypoint -def boardnames (): - print('# Available board names. Delete or comment out the boards you do not need:') +def parse_cmdline (): + parser = argparse.ArgumentParser(description="File generator for esp8266/Arduino") - for id in boards: - print('{: <20s} # {}'.format(id, boards[id]['name'])) + parser.add_argument("--test", action="store_true", help=argparse.SUPPRESS) - sys.exit(0) + parser.add_argument("--led", type=int, default=2, help="default builtin led specified for generic boards") + parser.add_argument("--nofloat", action="store_true", help="disable float support in printf and scanf") + parser.add_argument("--customspeed", action="append", default=[], help="additional serial speed option for all boards") -################################################################ -# help / usage - -def usage (name,ret): - print("") - print("boards.txt generator for esp8266/Arduino") - print("") - print("usage: %s [options]" % name) - print("") - print(" -h, --help") - print(" --led - preferred default builtin led for generic boards (default %d)" % led_default) - print(" --board - board to modify:") - print(" --filter - create a short boards.txt based on the boards listed in ") - print(" --xfilter - create a short boards.txt excluding the boards listed in ") - print(" (For --filter or --xfilter use only one)") - print(" --speed - change default serial speed") - print(" --customspeed - new serial speed for all boards") - print(" --nofloat - disable float support in printf/scanf") - print("") - print(" mandatory option (at least one):") - print("") - print(" --boards - show boards.txt") - print(" --boardsgen - replace boards.txt") - print(" --boardslocalgen - replace boards.local.txt instead of boards.txt") - print(" --boardnames - prints a list of board names, one per line") - print(" --ld - show ldscripts") - print(" --ldgen - replace ldscripts") - print(" --flashmap - shows FlashMap.h") - print(" --flashmapgen - replace FlashMap.h") - print(" --package - show package") - print(" --packagegen - replace board:[] in package") - print(" --doc - shows doc/boards.rst") - print(" --docgen - replace doc/boards.rst") - print(" --allgen - generate and replace everything") - print(" (useful for pushing on github)") - print("") - - out = "" - for s in speeds: - out += s + ' ' - print("available serial speed options (kbps):", out) - - out = "" - for b in boards: - out += b + '(' - if 'serial' in boards[b]: - out += boards[b]['serial'] - else: - out += default_speed - out += 'k) ' - print("available board names:", out) + parser.add_argument("--boardnames", action="store_true", help="prints a list of board names") - print("") + filters = parser.add_mutually_exclusive_group() + filters.add_argument("--include", nargs="?", help="resulting BOARDSFILE will include *only* the boards listed in the INCLUDE file") + filters.add_argument("--exclude", nargs="?", help="resulting BOARDSFILE will *not* include boards listed in the EXCLUDE file") - sys.exit(ret) + generators = [ + ["boards", "boardsfile", "boards.txt", "boards.txt"], + ["ld", "lddir", "tools/sdk/ld", ".ld scripts"], + ["flashmap", "flashmapfile", "cores/esp8266/FlashMap.h", "FlashMap header"], + ["package", "packagefile", "package/package_esp8266com_index.template.json", "package template .json"], + ["doc", "docfile", "doc/boards.rst", "boards documentation"], + ] -################################################################ -################################################################ -# entry point - -default_speed = '115' -led_default = 2 -led_max = 16 -nofloat = False -ldgen = False -ldshow = False -flashmapshow = False -flashmapgen = False -boardsgen = False -boardsshow = False - -boardlist = [] -boardfilterfile = "" -boardfilteropt = False -excludeboardlist = [] -excludeboards = False -boardslocalgen = False - -packageshow = False -packagegen = False -docshow = False -docgen = False -customspeeds = [] - -lddir = "tools/sdk/ld/" -flashmap_h = "cores/esp8266/FlashMap.h" - -#### vvvv cmdline parsing starts - -try: - opts, args = getopt.getopt(sys.argv[1:], "h", - [ "help", "led=", "speed=", "board=", "customspeed=", "nofloat", - "noextra4kheap", "allowWPS", - "boardslocalgen", "filter=", "xfilter=", "boardnames", - "ld", "ldgen", - "flashmap", "flashmapgen", - "boards", "boardsgen", - "package", "packagegen", - "doc", "docgen", - "allgen"] ) -except getopt.GetoptError as err: - print(str(err)) # will print something like "option -a not recognized" - usage(sys.argv[0], 1) - -no = '(not set)' -board = no - -for o, a in opts: - - if o in ("-h", "--help"): - usage(sys.argv[0], 0) - - elif o in ("--boardnames"): - boardnames() - - elif o in ("--led"): - led_default = int(a) - - elif o in ("--customspeed"): - customspeeds += [ - '.menu.baud.' + a + '=' + a, - '.menu.baud.' + a + '.upload.speed' + '=' + a ] - - elif o in ("--board"): - if not a in boards: - print("board %s not available" % a) - usage(sys.argv[0], 1) - board = a - - elif o in ("--filter"): - boardfilteropt = True - boardfilterfile = a - - elif o in ("--xfilter"): - excludeboards = True - boardfilterfile = a - - elif o in ("--speed"): - if board == no: - print("board not set") - usage(sys.argv[0], 1) - if not a in speeds: - print("speed %s not available" % a) - usage(sys.argv[0], 1) - boards[board]['serial'] = a - - elif o in ("--nofloat"): - nofloat=True - - elif o in ("--noextra4kheap", "--allowWPS"): - print('option ' + o + ' is now deprecated, without effect, and will be removed') - - elif o in ("--ld"): - ldshow = True - - elif o in ("--ldgen"): - ldshow = True - ldgen = True - - elif o in ("--flashmap"): - flashmapshow = True - - elif o in ("--flashmapgen"): - flashmapshow = True - flashmapgen = True - - elif o in ("--boardsshow"): - boardsshow = True - - elif o in ("--boardsgen"): - boardsshow = True - boardsgen = True - - elif o in ("--boardslocalgen"): - boardsshow = True - boardslocalgen = True - - elif o in ("--package"): - packageshow = True - - elif o in ("--packagegen"): - packageshow = True - packagegen = True - - elif o in ("--doc"): - docshow = True - - elif o in ("--docgen"): - docshow = True - docgen = True - - elif o in ("--allgen"): - ldshow = True - ldgen = True - flashmapshow = True - flashmapgen = True - boardsshow = True - boardsgen = True - packageshow = True - packagegen = True - docshow = True - docgen = True + for name, output, default, title in generators: + sub = parser.add_argument_group(title=title) + sub.add_argument(f'--{name}', dest="generators", action="append_const", const=name) + sub.add_argument(f'--{output}', default=default) - else: - assert False, "unhandled option" + parser.add_argument("--all", dest="generators", action="store_const", const=[ + name for name, _, _, _ in generators + ], help="Select all available generators") -#### ^^^^ cmdline parsing ends + parser.add_argument("--generate", action="store_true", help="Generate and write to selected files") -#### vvvv Filter file processing if we have one + return parser.parse_args() -if boardfilteropt and excludeboards: - print('Specify either --filter or --xfilter, not both.') - usage(sys.argv[0], 1) -if boardfilteropt or excludeboards: - if not os.path.isfile(boardfilterfile): - print('Filter file missing: ', boardfilterfile) - usage(sys.argv[0], 1) +def main (): + args = parse_cmdline() + if args.test: + doctest.testmod() + return - f = open(boardfilterfile, 'r') - for line in f: - a = line.split('#', 1)[0].strip() - if a != '': - boardlist += [ a ] - f.close() + boards = prepare_boards(BOARDS, REQUIRED_BOARDS) - if not boardslocalgen: - if boardfilteropt: - for name in requiredboards: - if name not in boardlist: - boardlist.append(name) - else: - # excludeboards: - for name in requiredboards: - if name in boardlist: - boardlist.remove(name) + filter_path = args.include or args.exclude + if filter_path: + action = operator.and_ if args.include else operator.sub + boards = filtered_boards(boards, filter_path, action) - if boardfilteropt: - print('Applying keep filter list:') - else: - print('Applying exclude filter list:') - - print(boardlist) - print('') - -#### ^^^^ Filter file processing finished - -did = False - -if ldshow: - all_ldscript_generate(all_flash_map()) - did = True - -if flashmapshow: - all_flashmap_generate(all_flash_map()) - did = True - -if boardsshow: - ldshow = False - ldgen = False - if not boardfilteropt: - if excludeboards: - excludeboardlist = boardlist - boardlist = [] - for b in boards: - if b not in excludeboardlist: - boardlist += [ b ] - all_boards() - did = True - -if packageshow: - package() - did = True - -if docshow: - doc() - did = True - -if not did: - usage(sys.argv[0], 0) + if args.boardnames: + boardnames(boards) + return + + generators = set(name for name in args.generators or []) + + if "boards" in generators: + all_boards_generate( + args.boardsfile if args.generate else None, + boards, + macros=prepare_macros(MACROS, all_flash_maps(), args.led), + extra_header=[ + abridged_boards_txt(filter_path, boards, + cmdline=" ".join(sys.argv)) + ], + extra_board=[ + nofloat_boards_txt(args.nofloat), + customspeeds_boards_txt(args.customspeed) + ]) + + if "ld" in generators: + all_ldscript_generate( + args.lddir if args.generate else None, + all_flash_maps()) + + if "flashmap" in generators: + flashmap_generate( + args.flashmapfile if args.generate else None, + all_flash_maps()) + + if "package" in generators: + package_generate( + args.packagefile if args.generate else None, + boards) + + if "doc" in generators: + doc_generate( + args.docfile if args.generate else None, + boards) + + +if __name__ == "__main__": + main() From 6ac142f0e1b0da9579a6e2aaaee1a19eced4adf1 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Sat, 30 Apr 2022 06:58:41 +0300 Subject: [PATCH 04/35] doctest prints these --- tools/boards.txt.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 77db9f9ea4..b8b4f913d2 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1494,17 +1494,15 @@ class Region: """Represent certain start and end addresses (in bytes). >>> a = Region("", 0, 0) - >>> a.size == 0 - True - + >>> a.size + 0 >>> b = Region("", 0, 1024) - >>> b.start == 0 - True - >>> b.end == 1024 - True - >>> b.size == 1024 - True - + >>> b.start + 0 + >>> b.end + 1024 + >>> b.size + 1024 >>> Region("", 1024, 0) Traceback (most recent call last): ... From b3e74af2f7ce48ec48f5721ad915fec2e75da190 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Sat, 30 Apr 2022 07:42:53 +0300 Subject: [PATCH 05/35] invalid crc location? --- tools/boards.txt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index b8b4f913d2..acbe5a175e 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1827,7 +1827,7 @@ def flash_map (flash_size, fs_size = Bytes(0), name = ''): # ref. elf2bin.py, 1st flash sector + 16bytes off crc size + 4 bytes crc bootloader = Region.fromStart(layout.region, SPI_SECTOR) - crc = Region.after(bootloader, Bytes(20)) + crc = Region.after(bootloader, Bytes(16)) reserved = Region("Bootloader + CRC", bootloader.start, crc.end) From 61cdbfeff91e2d4f7bcb437f937062e2195d1d59 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Sat, 30 Apr 2022 07:43:12 +0300 Subject: [PATCH 06/35] ide means app size, total size is different --- tools/boards.txt.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index acbe5a175e..8af1627f85 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1840,11 +1840,11 @@ def flash_map (flash_size, fs_size = Bytes(0), name = ''): ld = f'eagle.flash.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}.ld'.lower() menu = f'.menu.eesz.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}' - max_upload_size = layout.size - reserved.size + max_upload_size = Megabytes(1) - reserved.size if empty: max_ota_size = empty.size else: - max_ota_size = min(Megabytes(1) - reserved.size, int(sketch.size / 2)) + max_ota_size = min(max_upload_size, int(sketch.size / 2)) return { "layout": layout, From f4d9f8e0c3cd15cc709808b18d0465f1301dbd0f Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Sat, 30 Apr 2022 07:43:28 +0300 Subject: [PATCH 07/35] .ld locations were wrong --- tools/boards.txt.py | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 8af1627f85..d39d66e283 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1915,7 +1915,10 @@ def ldscript_generate (output, *, ld, layout, max_upload_size, sdkwifi, rfcal, e context = OpenWithBackupDir def address(value): - return f'{SPI_START + value.start:08X}' + return f'0x{SPI_START + value.start:08X}' + + def symbol(value): + return f'0x{SPI_START + value:08X}' def size(value): return f'{humanize(value.size)}' @@ -1925,33 +1928,33 @@ def size(value): with context(os.path.join(output, ld)): print(f'/* Flash Split for {size(layout)} chips */') - print(f'/* sketch @0x{address(sketch)} (~{size(sketch)}) ({sketch.size}B) */') + print(f'/* sketch @{address(sketch)} (~{size(sketch)}) ({sketch.size}B) */') if empty: - print(f'/* empty @0x{address(empty)} (~{size(empty)}) ({empty.size}B) */') + print(f'/* empty @{address(empty)} (~{size(empty)}) ({empty.size}B) */') if fs: - print(f'/* fs @0x{address(fs)} (~{size(fs)}) ({fs.size}B) */') - print(f'/* eeprom @0x{address(eeprom)} ({eeprom.size}B) */') - print(f'/* rfcal @0x{address(rfcal)} ({rfcal.size}B) */') - print(f'/* wifi @0x{address(sdkwifi)} ({sdkwifi.size}B) */') + print(f'/* fs @{address(fs)} (~{size(fs)}) ({fs.size}B) */') + print(f'/* eeprom @{address(eeprom)} ({eeprom.size}B) */') + print(f'/* rfcal @{address(rfcal)} ({rfcal.size}B) */') + print(f'/* wifi @{address(sdkwifi)} ({sdkwifi.size}B) */') print() print("MEMORY") print("{") print(" dport0_0_seg : org = 0x3FF00000, len = 0x10") print(" dram0_0_seg : org = 0x3FFE8000, len = 0x14000") - print(f' irom0_0_seg : org = 0x40201010, len = {hex(int(max_upload_size))}') + print(f' irom0_0_seg : org = {address(sketch)}, len = 0x{sketch.size:x}') print("}") print() - print(f'PROVIDE ( _FS_start = 0x{fs.start:08X} );') - print(f'PROVIDE ( _FS_end = 0x{fs.end:08X} );') - print(f'PROVIDE ( _FS_page = 0x{int(fs.page_size):08X} );') - print(f'PROVIDE ( _FS_block = 0x{int(fs.block_size):08X} );') - print(f'PROVIDE ( _EEPROM_start = 0x{fs.start:08X} );') + print(f'PROVIDE ( _FS_start = {symbol(fs.start)} );') + print(f'PROVIDE ( _FS_end = {symbol(fs.end)} );') + print(f'PROVIDE ( _FS_page = 0x{fs.page_size:X} );') + print(f'PROVIDE ( _FS_block = 0x{fs.block_size:X} );') + print(f'PROVIDE ( _EEPROM_start = {symbol(eeprom.start)} );') # Re-add deprecated symbols pointing to the same address as the new standard ones print("/* The following symbols are DEPRECATED and will be REMOVED in a future release */") - print(f'PROVIDE ( _SPIFFS_start = 0x{fs.start:08X} );') - print(f'PROVIDE ( _SPIFFS_end = 0x{fs.end:08X} );') - print(f'PROVIDE ( _SPIFFS_page = 0x{int(fs.page_size):08X} );') - print(f'PROVIDE ( _SPIFFS_block = 0x{int(fs.block_size):08X} );') + print(f'PROVIDE ( _SPIFFS_start = {symbol(fs.start)} );') + print(f'PROVIDE ( _SPIFFS_end = {symbol(fs.end)} );') + print(f'PROVIDE ( _SPIFFS_page = 0x{fs.page_size:X} );') + print(f'PROVIDE ( _SPIFFS_block = 0x{fs.block_size:X} );') print() print('INCLUDE "local.eagle.app.v6.common.ld"') From f1b8589e51b3f92cc764685a446aeed521fd929d Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Sat, 30 Apr 2022 11:24:26 +0300 Subject: [PATCH 08/35] more descriptive --- tools/boards.txt.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index d39d66e283..b6395b1423 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1825,11 +1825,20 @@ def flash_map (flash_size, fs_size = Bytes(0), name = ''): else: empty = None - # ref. elf2bin.py, 1st flash sector + 16bytes off crc size + 4 bytes crc - bootloader = Region.fromStart(layout.region, SPI_SECTOR) - crc = Region.after(bootloader, Bytes(16)) - - reserved = Region("Bootloader + CRC", bootloader.start, crc.end) + # ref. elf2bin.py, 1st flash sector is + # - 8 bytes of header + # - bootloader until the end of the sector + bootloader_header = Region.fromStart(layout.region, Bytes(8)) + bootloader = Region.after(bootloader_header, SPI_SECTOR - Bytes(8)) + + # 2nd flash sector starts with + # - 8 bytes of header + # - 4 bytes of crc len + # - 4 bytes of crc value + app_header = Region.after(bootloader, Bytes(8)) + crc = Region.after(app_header, Bytes(4) + Bytes(4)) + + reserved = Region("Bootloader + CRC", bootloader_header.start, crc.end) sketch = Region("Sketch", layout.start + reserved.size, nearest.start) layout.push(sketch) From 27318e915a59203b80abca37189b946c597a6bcb Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Sat, 30 Apr 2022 11:43:32 +0300 Subject: [PATCH 09/35] ...even more descriptive --- tools/boards.txt.py | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index b6395b1423..da7aa01054 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1828,28 +1828,24 @@ def flash_map (flash_size, fs_size = Bytes(0), name = ''): # ref. elf2bin.py, 1st flash sector is # - 8 bytes of header # - bootloader until the end of the sector - bootloader_header = Region.fromStart(layout.region, Bytes(8)) - bootloader = Region.after(bootloader_header, SPI_SECTOR - Bytes(8)) - # 2nd flash sector starts with # - 8 bytes of header # - 4 bytes of crc len # - 4 bytes of crc value - app_header = Region.after(bootloader, Bytes(8)) - crc = Region.after(app_header, Bytes(4) + Bytes(4)) - - reserved = Region("Bootloader + CRC", bootloader_header.start, crc.end) + reserved = SPI_SECTOR + Bytes(8) + Bytes(4) + Bytes(4) + sketch = layout.add("Sketch", nearest.start - (layout.start + reserved)) - sketch = Region("Sketch", layout.start + reserved.size, nearest.start) - layout.push(sketch) - layout.push(reserved) + layout.add("", Bytes(8)) + layout.add("CRC", Bytes(4) + Bytes(4)) + layout.add("Bootloader", SPI_SECTOR - Bytes(8)) + layout.add("", Bytes(8)) assert(layout.free == 0) ld = f'eagle.flash.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}.ld'.lower() menu = f'.menu.eesz.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}' - max_upload_size = Megabytes(1) - reserved.size + max_upload_size = Megabytes(1) - reserved if empty: max_ota_size = empty.size else: From e8756f88313c99caba697756e2a9fb020b424f6f Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Sat, 30 Apr 2022 11:47:27 +0300 Subject: [PATCH 10/35] also an example of pprint --- tools/boards.txt.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index da7aa01054..9d1911011d 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1787,7 +1787,18 @@ def flash_map (flash_size, fs_size = Bytes(0), name = ''): '.menu.eesz.2M64' >>> x['layout']['Filesystem'].size 45056 - + >>> import pprint + >>> pprint.pprint(x['layout'].subregions) + [, + , + , + , + , + , + , + , + , + ] """ layout = common_layout(name, flash_size) From 1028983c2270c4aae265f5b41ef38741c3a33175 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Sat, 30 Apr 2022 12:27:44 +0300 Subject: [PATCH 11/35] names --- tools/boards.txt.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 9d1911011d..4083e7dea1 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1359,7 +1359,7 @@ def subslices(values): for combination in itertools.combinations(values, n): yield combination -def all_debug (): +def debug_macros (): debugmenu = collections.OrderedDict([ ( '.menu.dbg.Disabled', 'Disabled' ), ( '.menu.dbg.Disabled.build.debug_port', '' ), @@ -1902,7 +1902,7 @@ def menu_generate (*, ld, menu, max_ota_size, max_upload_size, rfcal, flash_size return collections.OrderedDict(out) -def all_menu_generate (flash_maps): +def menu_macros (flash_maps): output = { 'autoflash': collections.OrderedDict([ ( '.menu.eesz.autoflash', 'Mapping defined by Hardware and Sketch' ), @@ -2168,7 +2168,7 @@ def led (name, default, ledList): ################################################################ # sdk selection -def sdk (): +def sdk_macros (): return { 'sdk': collections.OrderedDict([ ('.menu.sdk.nonosdk_190703', 'nonos-sdk 2.2.1+100 (190703)'), ('.menu.sdk.nonosdk_190703.build.sdk', 'NONOSDK22x_190703'), @@ -2218,11 +2218,11 @@ def handler(name): def prepare_macros (defaults, flashmap, builtinled): macros = defaults - macros.update(all_menu_generate(flashmap)) - macros.update(all_debug()) + macros.update(menu_macros(flashmap)) + macros.update(debug_macros()) macros.update(led('led', builtinled, range(0, 17))) macros.update(led('led216', 2, (16, ))) - macros.update(sdk()) + macros.update(sdk_macros()) return macros From 5040cd39fb5b329affbfadfb3c14c6a7360c308c Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Sat, 30 Apr 2022 12:31:10 +0300 Subject: [PATCH 12/35] normalize paths --- tools/boards.txt.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 4083e7dea1..8a7fe5cbca 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1293,7 +1293,7 @@ class OpenWithBackupDir: def __init__(self, path): - self.path = path + self.path = os.path.normpath(path) self.backup = os.path.join( os.path.dirname(path), "backup") @@ -1320,7 +1320,7 @@ def __exit__(self, *exc): class OpenWithBackupFile: def __init__(self, path): - self.path = path + self.path = os.path.normpath(path) self.orig = f'{self.path}.orig' def __enter__(self): From b341be904cd67a12c4a32c9c95728cf2656bd32b Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Sat, 30 Apr 2022 17:19:06 +0300 Subject: [PATCH 13/35] remember 512k boards --- tools/boards.txt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 8a7fe5cbca..8d450c7598 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1856,7 +1856,7 @@ def flash_map (flash_size, fs_size = Bytes(0), name = ''): ld = f'eagle.flash.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}.ld'.lower() menu = f'.menu.eesz.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}' - max_upload_size = Megabytes(1) - reserved + max_upload_size = min(Megabytes(1), flash_size) - reserved if empty: max_ota_size = empty.size else: From bef7b9ff40449d7bcc78274b9260e54b281750dc Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Tue, 7 Jun 2022 22:46:28 +0300 Subject: [PATCH 14/35] encoding! --- tools/boards.txt.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 8d450c7598..7266ddd5e0 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1307,7 +1307,7 @@ def __enter__(self): os.rename(self.path, backup_path) self._stdout = sys.stdout - sys.stdout = open(self.path, "w", newline="\n") + sys.stdout = open(self.path, "w", encoding="utf-8", newline="\n") return self @@ -1331,7 +1331,7 @@ def __enter__(self): os.rename(self.path, self.orig) self._stdout = sys.stdout - sys.stdout = open(self.path, "w", newline="\n") + sys.stdout = open(self.path, "w", encoding="utf-8", newline="\n") return self @@ -2298,7 +2298,7 @@ def all_boards_generate (output, boards, macros, extra_header=[], extra_board=[] def filtered_boards(boards, path, action=operator.sub): filters = set() - with open(path, "r") as f: + with open(path, "r", encoding="utf-8") as f: for line in f: if line.startswith("#"): continue @@ -2347,7 +2347,7 @@ def boardnames (boards): ################################################################ def package_generate (output, boards): - with open(output, "r") as f: + with open(output, "r", encoding="utf-8") as f: data = json.load(f, object_pairs_hook=collections.OrderedDict) target = None From fe2750f37853d7ba69c86092325e01dd6f27d8b9 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Tue, 7 Jun 2022 22:47:52 +0300 Subject: [PATCH 15/35] KB and MB in menu entries --- tools/boards.txt.py | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 7266ddd5e0..f327ad8e3d 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1734,6 +1734,18 @@ def __repr__(self): def humanize_fs(size): + """Filesystem size in properties and file names. + + Only suffixed when in greater than 1 megabyte. + Bytes() mostly stay unused. + + >>> humanize_fs(Bytes(1)) + '1' + >>> humanize_fs(Kilobytes(64)) + '64' + >>> humanize_fs(Megabytes(2)) + '2M' + """ convert = [ [Bytes(1), ""], [Kilobytes(1), ""], @@ -1744,6 +1756,15 @@ def humanize_fs(size): def humanize_flash(size): + """Flash size in properties and file names. + + >>> humanize_flash(Bytes(64)) + '64' + >>> humanize_flash(Kilobytes(512)) + '512K' + >>> humanize_flash(Megabytes(4)) + '4M' + """ convert = [ [Bytes(1), ""], [Kilobytes(1), "K"], @@ -1753,6 +1774,25 @@ def humanize_flash(size): return humanize(size, convert=convert) +def humanize_flash_menu(size): + """Menu entry in the IDE. + + >>> humanize_flash_menu(Bytes(128)) + '128' + >>> humanize_flash_menu(Kilobytes(512)) + '512KB' + >>> humanize_flash_menu(Megabytes(16)) + '16MB' + """ + convert = [ + [Bytes(1), ""], + [Kilobytes(1), "KB"], + [Megabytes(1), "MB"], + ] + + return humanize(size, convert=convert) + + SPI_START = 0x40200000 SPI_SECTOR = Kilobytes(4) @@ -1881,7 +1921,7 @@ def flash_map (flash_size, fs_size = Bytes(0), name = ''): def menu_generate (*, ld, menu, max_ota_size, max_upload_size, rfcal, flash_size, fs, **kwargs): out = [ - ( menu, f'{humanize_flash(flash_size)} (FS:{humanize(fs.size) if fs else "none"} OTA:~{humanize(max_ota_size)})' ), + ( menu, f'{humanize_flash_menu(flash_size)} (FS:{humanize(fs.size) if fs else "none"} OTA:~{humanize(max_ota_size)})' ), ( f'{menu}.build.flash_size', humanize_flash(flash_size) ), ( f'{menu}.build.flash_ld', ld ), ( f'{menu}.build.rfcal_addr', f'0x{rfcal.start:05X}' ), From 6681c4061c091377353e66e52677f5e518a10e87 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Tue, 7 Jun 2022 22:55:41 +0300 Subject: [PATCH 16/35] finalize .txt and .ld generator also note we never had 8m and 16 .ld files! --- boards.txt | 1713 ++++++++++++++------------- tools/boards.txt.py | 8 +- tools/sdk/ld/eagle.flash.16m.ld | 26 + tools/sdk/ld/eagle.flash.16m14m.ld | 16 +- tools/sdk/ld/eagle.flash.16m15m.ld | 15 +- tools/sdk/ld/eagle.flash.1m.ld | 14 +- tools/sdk/ld/eagle.flash.1m128.ld | 15 +- tools/sdk/ld/eagle.flash.1m144.ld | 15 +- tools/sdk/ld/eagle.flash.1m160.ld | 15 +- tools/sdk/ld/eagle.flash.1m192.ld | 15 +- tools/sdk/ld/eagle.flash.1m256.ld | 15 +- tools/sdk/ld/eagle.flash.1m512.ld | 15 +- tools/sdk/ld/eagle.flash.1m64.ld | 15 +- tools/sdk/ld/eagle.flash.2m.ld | 15 +- tools/sdk/ld/eagle.flash.2m128.ld | 16 +- tools/sdk/ld/eagle.flash.2m1m.ld | 15 +- tools/sdk/ld/eagle.flash.2m256.ld | 16 +- tools/sdk/ld/eagle.flash.2m512.ld | 16 +- tools/sdk/ld/eagle.flash.2m64.ld | 16 +- tools/sdk/ld/eagle.flash.4m.ld | 15 +- tools/sdk/ld/eagle.flash.4m1m.ld | 16 +- tools/sdk/ld/eagle.flash.4m2m.ld | 16 +- tools/sdk/ld/eagle.flash.4m3m.ld | 15 +- tools/sdk/ld/eagle.flash.512k.ld | 14 +- tools/sdk/ld/eagle.flash.512k128.ld | 15 +- tools/sdk/ld/eagle.flash.512k32.ld | 15 +- tools/sdk/ld/eagle.flash.512k64.ld | 15 +- tools/sdk/ld/eagle.flash.8m.ld | 26 + tools/sdk/ld/eagle.flash.8m6m.ld | 16 +- tools/sdk/ld/eagle.flash.8m7m.ld | 15 +- 30 files changed, 1149 insertions(+), 1020 deletions(-) create mode 100644 tools/sdk/ld/eagle.flash.16m.ld create mode 100644 tools/sdk/ld/eagle.flash.8m.ld diff --git a/boards.txt b/boards.txt index 7204ffdca5..5731feb220 100644 --- a/boards.txt +++ b/boards.txt @@ -1,7 +1,5 @@ -# -# Do not create pull-requests for this file only, CI will not accept them. -# You *must* edit/modify/run boards.txt.py to regenerate boards.txt. -# All modified files after running with option "--allgen" must be included in the pull-request. +// - DO NOT EDIT - autogenerated by boards.txt.py +# Instead, modify boards.txt.py and run `boards.txt.py --boards --generate` # menu.BoardModel=Model @@ -111,212 +109,234 @@ generic.menu.FlashMode.qout.build.flash_flags=-DFLASHMODE_QOUT generic.menu.FlashMode.qio=QIO (fast) generic.menu.FlashMode.qio.build.flash_mode=qio generic.menu.FlashMode.qio.build.flash_flags=-DFLASHMODE_QIO -generic.menu.eesz.1M64=1MB (FS:64KB OTA:~470KB) +generic.menu.eesz.1M64=1MB (FS:64KB OTA:~467KB) generic.menu.eesz.1M64.build.flash_size=1M generic.menu.eesz.1M64.build.flash_ld=eagle.flash.1m64.ld -generic.menu.eesz.1M64.build.spiffs_pagesize=256 generic.menu.eesz.1M64.build.rfcal_addr=0xFC000 +generic.menu.eesz.1M64.upload.maximum_size=1044464 generic.menu.eesz.1M64.build.spiffs_start=0xEB000 generic.menu.eesz.1M64.build.spiffs_end=0xFB000 generic.menu.eesz.1M64.build.spiffs_blocksize=4096 -generic.menu.eesz.1M128=1MB (FS:128KB OTA:~438KB) +generic.menu.eesz.1M64.build.spiffs_pagesize=256 +generic.menu.eesz.1M128=1MB (FS:128KB OTA:~435KB) generic.menu.eesz.1M128.build.flash_size=1M generic.menu.eesz.1M128.build.flash_ld=eagle.flash.1m128.ld -generic.menu.eesz.1M128.build.spiffs_pagesize=256 generic.menu.eesz.1M128.build.rfcal_addr=0xFC000 +generic.menu.eesz.1M128.upload.maximum_size=1044464 generic.menu.eesz.1M128.build.spiffs_start=0xDB000 generic.menu.eesz.1M128.build.spiffs_end=0xFB000 generic.menu.eesz.1M128.build.spiffs_blocksize=4096 -generic.menu.eesz.1M144=1MB (FS:144KB OTA:~430KB) +generic.menu.eesz.1M128.build.spiffs_pagesize=256 +generic.menu.eesz.1M144=1MB (FS:144KB OTA:~427KB) generic.menu.eesz.1M144.build.flash_size=1M generic.menu.eesz.1M144.build.flash_ld=eagle.flash.1m144.ld -generic.menu.eesz.1M144.build.spiffs_pagesize=256 generic.menu.eesz.1M144.build.rfcal_addr=0xFC000 +generic.menu.eesz.1M144.upload.maximum_size=1044464 generic.menu.eesz.1M144.build.spiffs_start=0xD7000 generic.menu.eesz.1M144.build.spiffs_end=0xFB000 generic.menu.eesz.1M144.build.spiffs_blocksize=4096 -generic.menu.eesz.1M160=1MB (FS:160KB OTA:~422KB) +generic.menu.eesz.1M144.build.spiffs_pagesize=256 +generic.menu.eesz.1M160=1MB (FS:160KB OTA:~419KB) generic.menu.eesz.1M160.build.flash_size=1M generic.menu.eesz.1M160.build.flash_ld=eagle.flash.1m160.ld -generic.menu.eesz.1M160.build.spiffs_pagesize=256 generic.menu.eesz.1M160.build.rfcal_addr=0xFC000 +generic.menu.eesz.1M160.upload.maximum_size=1044464 generic.menu.eesz.1M160.build.spiffs_start=0xD3000 generic.menu.eesz.1M160.build.spiffs_end=0xFB000 generic.menu.eesz.1M160.build.spiffs_blocksize=4096 -generic.menu.eesz.1M192=1MB (FS:192KB OTA:~406KB) +generic.menu.eesz.1M160.build.spiffs_pagesize=256 +generic.menu.eesz.1M192=1MB (FS:192KB OTA:~403KB) generic.menu.eesz.1M192.build.flash_size=1M generic.menu.eesz.1M192.build.flash_ld=eagle.flash.1m192.ld -generic.menu.eesz.1M192.build.spiffs_pagesize=256 generic.menu.eesz.1M192.build.rfcal_addr=0xFC000 +generic.menu.eesz.1M192.upload.maximum_size=1044464 generic.menu.eesz.1M192.build.spiffs_start=0xCB000 generic.menu.eesz.1M192.build.spiffs_end=0xFB000 generic.menu.eesz.1M192.build.spiffs_blocksize=4096 -generic.menu.eesz.1M256=1MB (FS:256KB OTA:~374KB) +generic.menu.eesz.1M192.build.spiffs_pagesize=256 +generic.menu.eesz.1M256=1MB (FS:256KB OTA:~371KB) generic.menu.eesz.1M256.build.flash_size=1M generic.menu.eesz.1M256.build.flash_ld=eagle.flash.1m256.ld -generic.menu.eesz.1M256.build.spiffs_pagesize=256 generic.menu.eesz.1M256.build.rfcal_addr=0xFC000 +generic.menu.eesz.1M256.upload.maximum_size=1044464 generic.menu.eesz.1M256.build.spiffs_start=0xBB000 generic.menu.eesz.1M256.build.spiffs_end=0xFB000 generic.menu.eesz.1M256.build.spiffs_blocksize=4096 -generic.menu.eesz.1M512=1MB (FS:512KB OTA:~246KB) +generic.menu.eesz.1M256.build.spiffs_pagesize=256 +generic.menu.eesz.1M512=1MB (FS:512KB OTA:~243KB) generic.menu.eesz.1M512.build.flash_size=1M generic.menu.eesz.1M512.build.flash_ld=eagle.flash.1m512.ld -generic.menu.eesz.1M512.build.spiffs_pagesize=256 generic.menu.eesz.1M512.build.rfcal_addr=0xFC000 +generic.menu.eesz.1M512.upload.maximum_size=1044464 generic.menu.eesz.1M512.build.spiffs_start=0x7B000 generic.menu.eesz.1M512.build.spiffs_end=0xFB000 generic.menu.eesz.1M512.build.spiffs_blocksize=8192 -generic.menu.eesz.1M=1MB (FS:none OTA:~502KB) +generic.menu.eesz.1M512.build.spiffs_pagesize=256 +generic.menu.eesz.1M=1MB (FS:none OTA:~499KB) generic.menu.eesz.1M.build.flash_size=1M generic.menu.eesz.1M.build.flash_ld=eagle.flash.1m.ld -generic.menu.eesz.1M.build.spiffs_pagesize=256 generic.menu.eesz.1M.build.rfcal_addr=0xFC000 -generic.menu.eesz.2M64=2MB (FS:64KB OTA:~992KB) +generic.menu.eesz.1M.upload.maximum_size=1044464 +generic.menu.eesz.2M64=2MB (FS:44KB OTA:~960KB) generic.menu.eesz.2M64.build.flash_size=2M generic.menu.eesz.2M64.build.flash_ld=eagle.flash.2m64.ld -generic.menu.eesz.2M64.build.spiffs_pagesize=256 generic.menu.eesz.2M64.build.rfcal_addr=0x1FC000 +generic.menu.eesz.2M64.upload.maximum_size=1044464 generic.menu.eesz.2M64.build.spiffs_start=0x1F0000 generic.menu.eesz.2M64.build.spiffs_end=0x1FB000 generic.menu.eesz.2M64.build.spiffs_blocksize=4096 -generic.menu.eesz.2M128=2MB (FS:128KB OTA:~960KB) +generic.menu.eesz.2M64.build.spiffs_pagesize=256 +generic.menu.eesz.2M128=2MB (FS:108KB OTA:~896KB) generic.menu.eesz.2M128.build.flash_size=2M generic.menu.eesz.2M128.build.flash_ld=eagle.flash.2m128.ld -generic.menu.eesz.2M128.build.spiffs_pagesize=256 generic.menu.eesz.2M128.build.rfcal_addr=0x1FC000 +generic.menu.eesz.2M128.upload.maximum_size=1044464 generic.menu.eesz.2M128.build.spiffs_start=0x1E0000 generic.menu.eesz.2M128.build.spiffs_end=0x1FB000 generic.menu.eesz.2M128.build.spiffs_blocksize=4096 -generic.menu.eesz.2M256=2MB (FS:256KB OTA:~896KB) +generic.menu.eesz.2M128.build.spiffs_pagesize=256 +generic.menu.eesz.2M256=2MB (FS:236KB OTA:~768KB) generic.menu.eesz.2M256.build.flash_size=2M generic.menu.eesz.2M256.build.flash_ld=eagle.flash.2m256.ld -generic.menu.eesz.2M256.build.spiffs_pagesize=256 generic.menu.eesz.2M256.build.rfcal_addr=0x1FC000 +generic.menu.eesz.2M256.upload.maximum_size=1044464 generic.menu.eesz.2M256.build.spiffs_start=0x1C0000 generic.menu.eesz.2M256.build.spiffs_end=0x1FB000 generic.menu.eesz.2M256.build.spiffs_blocksize=4096 -generic.menu.eesz.2M512=2MB (FS:512KB OTA:~768KB) +generic.menu.eesz.2M256.build.spiffs_pagesize=256 +generic.menu.eesz.2M512=2MB (FS:488KB OTA:~512KB) generic.menu.eesz.2M512.build.flash_size=2M generic.menu.eesz.2M512.build.flash_ld=eagle.flash.2m512.ld -generic.menu.eesz.2M512.build.spiffs_pagesize=256 generic.menu.eesz.2M512.build.rfcal_addr=0x1FC000 +generic.menu.eesz.2M512.upload.maximum_size=1044464 generic.menu.eesz.2M512.build.spiffs_start=0x180000 generic.menu.eesz.2M512.build.spiffs_end=0x1FA000 generic.menu.eesz.2M512.build.spiffs_blocksize=8192 -generic.menu.eesz.2M1M=2MB (FS:1MB OTA:~512KB) +generic.menu.eesz.2M512.build.spiffs_pagesize=256 +generic.menu.eesz.2M1M=2MB (FS:1000KB OTA:~509KB) generic.menu.eesz.2M1M.build.flash_size=2M generic.menu.eesz.2M1M.build.flash_ld=eagle.flash.2m1m.ld -generic.menu.eesz.2M1M.build.spiffs_pagesize=256 generic.menu.eesz.2M1M.build.rfcal_addr=0x1FC000 +generic.menu.eesz.2M1M.upload.maximum_size=1044464 generic.menu.eesz.2M1M.build.spiffs_start=0x100000 generic.menu.eesz.2M1M.build.spiffs_end=0x1FA000 generic.menu.eesz.2M1M.build.spiffs_blocksize=8192 -generic.menu.eesz.2M=2MB (FS:none OTA:~1019KB) +generic.menu.eesz.2M1M.build.spiffs_pagesize=256 +generic.menu.eesz.2M=2MB (FS:none OTA:~1004KB) generic.menu.eesz.2M.build.flash_size=2M generic.menu.eesz.2M.build.flash_ld=eagle.flash.2m.ld -generic.menu.eesz.2M.build.spiffs_pagesize=256 generic.menu.eesz.2M.build.rfcal_addr=0x1FC000 -generic.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +generic.menu.eesz.2M.upload.maximum_size=1044464 +generic.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) generic.menu.eesz.4M2M.build.flash_size=4M generic.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -generic.menu.eesz.4M2M.build.spiffs_pagesize=256 generic.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +generic.menu.eesz.4M2M.upload.maximum_size=1044464 generic.menu.eesz.4M2M.build.spiffs_start=0x200000 generic.menu.eesz.4M2M.build.spiffs_end=0x3FA000 generic.menu.eesz.4M2M.build.spiffs_blocksize=8192 -generic.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +generic.menu.eesz.4M2M.build.spiffs_pagesize=256 +generic.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) generic.menu.eesz.4M3M.build.flash_size=4M generic.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -generic.menu.eesz.4M3M.build.spiffs_pagesize=256 generic.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +generic.menu.eesz.4M3M.upload.maximum_size=1044464 generic.menu.eesz.4M3M.build.spiffs_start=0x100000 generic.menu.eesz.4M3M.build.spiffs_end=0x3FA000 generic.menu.eesz.4M3M.build.spiffs_blocksize=8192 -generic.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +generic.menu.eesz.4M3M.build.spiffs_pagesize=256 +generic.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) generic.menu.eesz.4M1M.build.flash_size=4M generic.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -generic.menu.eesz.4M1M.build.spiffs_pagesize=256 generic.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +generic.menu.eesz.4M1M.upload.maximum_size=1044464 generic.menu.eesz.4M1M.build.spiffs_start=0x300000 generic.menu.eesz.4M1M.build.spiffs_end=0x3FA000 generic.menu.eesz.4M1M.build.spiffs_blocksize=8192 -generic.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +generic.menu.eesz.4M1M.build.spiffs_pagesize=256 +generic.menu.eesz.4M=4MB (FS:none OTA:~3052KB) generic.menu.eesz.4M.build.flash_size=4M generic.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -generic.menu.eesz.4M.build.spiffs_pagesize=256 generic.menu.eesz.4M.build.rfcal_addr=0x3FC000 -generic.menu.eesz.8M6M=8MB (FS:6MB OTA:~1019KB) +generic.menu.eesz.4M.upload.maximum_size=1044464 +generic.menu.eesz.8M6M=8MB (FS:5MB OTA:~1MB) generic.menu.eesz.8M6M.build.flash_size=8M generic.menu.eesz.8M6M.build.flash_ld=eagle.flash.8m6m.ld -generic.menu.eesz.8M6M.build.spiffs_pagesize=256 generic.menu.eesz.8M6M.build.rfcal_addr=0x7FC000 +generic.menu.eesz.8M6M.upload.maximum_size=1044464 generic.menu.eesz.8M6M.build.spiffs_start=0x200000 generic.menu.eesz.8M6M.build.spiffs_end=0x7FA000 generic.menu.eesz.8M6M.build.spiffs_blocksize=8192 -generic.menu.eesz.8M7M=8MB (FS:7MB OTA:~512KB) +generic.menu.eesz.8M6M.build.spiffs_pagesize=256 +generic.menu.eesz.8M7M=8MB (FS:6MB OTA:~509KB) generic.menu.eesz.8M7M.build.flash_size=8M generic.menu.eesz.8M7M.build.flash_ld=eagle.flash.8m7m.ld -generic.menu.eesz.8M7M.build.spiffs_pagesize=256 generic.menu.eesz.8M7M.build.rfcal_addr=0x7FC000 +generic.menu.eesz.8M7M.upload.maximum_size=1044464 generic.menu.eesz.8M7M.build.spiffs_start=0x100000 generic.menu.eesz.8M7M.build.spiffs_end=0x7FA000 generic.menu.eesz.8M7M.build.spiffs_blocksize=8192 -generic.menu.eesz.8M=8MB (FS:none OTA:~1019KB) +generic.menu.eesz.8M7M.build.spiffs_pagesize=256 +generic.menu.eesz.8M=8MB (FS:none OTA:~6MB) generic.menu.eesz.8M.build.flash_size=8M generic.menu.eesz.8M.build.flash_ld=eagle.flash.8m.ld -generic.menu.eesz.8M.build.spiffs_pagesize=256 generic.menu.eesz.8M.build.rfcal_addr=0x7FC000 -generic.menu.eesz.16M14M=16MB (FS:14MB OTA:~1019KB) +generic.menu.eesz.8M.upload.maximum_size=1044464 +generic.menu.eesz.16M14M=16MB (FS:13MB OTA:~1MB) generic.menu.eesz.16M14M.build.flash_size=16M generic.menu.eesz.16M14M.build.flash_ld=eagle.flash.16m14m.ld -generic.menu.eesz.16M14M.build.spiffs_pagesize=256 generic.menu.eesz.16M14M.build.rfcal_addr=0xFFC000 +generic.menu.eesz.16M14M.upload.maximum_size=1044464 generic.menu.eesz.16M14M.build.spiffs_start=0x200000 generic.menu.eesz.16M14M.build.spiffs_end=0xFFA000 generic.menu.eesz.16M14M.build.spiffs_blocksize=8192 -generic.menu.eesz.16M15M=16MB (FS:15MB OTA:~512KB) +generic.menu.eesz.16M14M.build.spiffs_pagesize=256 +generic.menu.eesz.16M15M=16MB (FS:14MB OTA:~509KB) generic.menu.eesz.16M15M.build.flash_size=16M generic.menu.eesz.16M15M.build.flash_ld=eagle.flash.16m15m.ld -generic.menu.eesz.16M15M.build.spiffs_pagesize=256 generic.menu.eesz.16M15M.build.rfcal_addr=0xFFC000 +generic.menu.eesz.16M15M.upload.maximum_size=1044464 generic.menu.eesz.16M15M.build.spiffs_start=0x100000 generic.menu.eesz.16M15M.build.spiffs_end=0xFFA000 generic.menu.eesz.16M15M.build.spiffs_blocksize=8192 -generic.menu.eesz.16M=16MB (FS:none OTA:~1019KB) +generic.menu.eesz.16M15M.build.spiffs_pagesize=256 +generic.menu.eesz.16M=16MB (FS:none OTA:~14MB) generic.menu.eesz.16M.build.flash_size=16M generic.menu.eesz.16M.build.flash_ld=eagle.flash.16m.ld -generic.menu.eesz.16M.build.spiffs_pagesize=256 generic.menu.eesz.16M.build.rfcal_addr=0xFFC000 -generic.menu.eesz.512K32=512KB (FS:32KB OTA:~230KB) +generic.menu.eesz.16M.upload.maximum_size=1044464 +generic.menu.eesz.512K32=512KB (FS:32KB OTA:~227KB) generic.menu.eesz.512K32.build.flash_size=512K generic.menu.eesz.512K32.build.flash_ld=eagle.flash.512k32.ld -generic.menu.eesz.512K32.build.spiffs_pagesize=256 generic.menu.eesz.512K32.build.rfcal_addr=0x7C000 +generic.menu.eesz.512K32.upload.maximum_size=520176 generic.menu.eesz.512K32.build.spiffs_start=0x73000 generic.menu.eesz.512K32.build.spiffs_end=0x7B000 generic.menu.eesz.512K32.build.spiffs_blocksize=4096 -generic.menu.eesz.512K64=512KB (FS:64KB OTA:~214KB) +generic.menu.eesz.512K32.build.spiffs_pagesize=256 +generic.menu.eesz.512K64=512KB (FS:64KB OTA:~211KB) generic.menu.eesz.512K64.build.flash_size=512K generic.menu.eesz.512K64.build.flash_ld=eagle.flash.512k64.ld -generic.menu.eesz.512K64.build.spiffs_pagesize=256 generic.menu.eesz.512K64.build.rfcal_addr=0x7C000 +generic.menu.eesz.512K64.upload.maximum_size=520176 generic.menu.eesz.512K64.build.spiffs_start=0x6B000 generic.menu.eesz.512K64.build.spiffs_end=0x7B000 generic.menu.eesz.512K64.build.spiffs_blocksize=4096 -generic.menu.eesz.512K128=512KB (FS:128KB OTA:~182KB) +generic.menu.eesz.512K64.build.spiffs_pagesize=256 +generic.menu.eesz.512K128=512KB (FS:128KB OTA:~179KB) generic.menu.eesz.512K128.build.flash_size=512K generic.menu.eesz.512K128.build.flash_ld=eagle.flash.512k128.ld -generic.menu.eesz.512K128.build.spiffs_pagesize=256 generic.menu.eesz.512K128.build.rfcal_addr=0x7C000 +generic.menu.eesz.512K128.upload.maximum_size=520176 generic.menu.eesz.512K128.build.spiffs_start=0x5B000 generic.menu.eesz.512K128.build.spiffs_end=0x7B000 generic.menu.eesz.512K128.build.spiffs_blocksize=4096 -generic.menu.eesz.512K=512KB (FS:none OTA:~246KB) +generic.menu.eesz.512K128.build.spiffs_pagesize=256 +generic.menu.eesz.512K=512KB (FS:none OTA:~243KB) generic.menu.eesz.512K.build.flash_size=512K generic.menu.eesz.512K.build.flash_ld=eagle.flash.512k.ld -generic.menu.eesz.512K.build.spiffs_pagesize=256 generic.menu.eesz.512K.build.rfcal_addr=0x7C000 +generic.menu.eesz.512K.upload.maximum_size=520176 generic.menu.led.2=2 generic.menu.led.2.build.led=-DLED_BUILTIN=2 generic.menu.led.0=0 @@ -397,6 +417,8 @@ generic.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +generic.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG generic.menu.lvl.SSL=SSL generic.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL generic.menu.lvl.TLS_MEM=TLS_MEM @@ -441,24 +463,20 @@ generic.menu.lvl.OOM=OOM generic.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM generic.menu.lvl.MDNS=MDNS generic.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -generic.menu.lvl.HWDT=HWDT -generic.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -generic.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -generic.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K generic.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS generic.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +generic.menu.lvl.HWDT=HWDT +generic.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT generic.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT generic.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -generic.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -generic.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -generic.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -generic.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS generic.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT generic.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +generic.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +generic.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +generic.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +generic.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K generic.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K generic.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -generic.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -generic.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG generic.menu.wipe.none=Only Sketch generic.menu.wipe.none.upload.erase_cmd= generic.menu.wipe.sdk=Sketch + WiFi Settings @@ -556,112 +574,124 @@ esp8285.menu.CrystalFreq.40.build.extra_flags=-DF_CRYSTAL=40000000 esp8285.build.flash_mode=dout esp8285.build.flash_flags=-DFLASHMODE_DOUT esp8285.build.flash_freq=40 -esp8285.menu.eesz.1M64=1MB (FS:64KB OTA:~470KB) +esp8285.menu.eesz.1M64=1MB (FS:64KB OTA:~467KB) esp8285.menu.eesz.1M64.build.flash_size=1M esp8285.menu.eesz.1M64.build.flash_ld=eagle.flash.1m64.ld -esp8285.menu.eesz.1M64.build.spiffs_pagesize=256 esp8285.menu.eesz.1M64.build.rfcal_addr=0xFC000 +esp8285.menu.eesz.1M64.upload.maximum_size=1044464 esp8285.menu.eesz.1M64.build.spiffs_start=0xEB000 esp8285.menu.eesz.1M64.build.spiffs_end=0xFB000 esp8285.menu.eesz.1M64.build.spiffs_blocksize=4096 -esp8285.menu.eesz.1M128=1MB (FS:128KB OTA:~438KB) +esp8285.menu.eesz.1M64.build.spiffs_pagesize=256 +esp8285.menu.eesz.1M128=1MB (FS:128KB OTA:~435KB) esp8285.menu.eesz.1M128.build.flash_size=1M esp8285.menu.eesz.1M128.build.flash_ld=eagle.flash.1m128.ld -esp8285.menu.eesz.1M128.build.spiffs_pagesize=256 esp8285.menu.eesz.1M128.build.rfcal_addr=0xFC000 +esp8285.menu.eesz.1M128.upload.maximum_size=1044464 esp8285.menu.eesz.1M128.build.spiffs_start=0xDB000 esp8285.menu.eesz.1M128.build.spiffs_end=0xFB000 esp8285.menu.eesz.1M128.build.spiffs_blocksize=4096 -esp8285.menu.eesz.1M144=1MB (FS:144KB OTA:~430KB) +esp8285.menu.eesz.1M128.build.spiffs_pagesize=256 +esp8285.menu.eesz.1M144=1MB (FS:144KB OTA:~427KB) esp8285.menu.eesz.1M144.build.flash_size=1M esp8285.menu.eesz.1M144.build.flash_ld=eagle.flash.1m144.ld -esp8285.menu.eesz.1M144.build.spiffs_pagesize=256 esp8285.menu.eesz.1M144.build.rfcal_addr=0xFC000 +esp8285.menu.eesz.1M144.upload.maximum_size=1044464 esp8285.menu.eesz.1M144.build.spiffs_start=0xD7000 esp8285.menu.eesz.1M144.build.spiffs_end=0xFB000 esp8285.menu.eesz.1M144.build.spiffs_blocksize=4096 -esp8285.menu.eesz.1M160=1MB (FS:160KB OTA:~422KB) +esp8285.menu.eesz.1M144.build.spiffs_pagesize=256 +esp8285.menu.eesz.1M160=1MB (FS:160KB OTA:~419KB) esp8285.menu.eesz.1M160.build.flash_size=1M esp8285.menu.eesz.1M160.build.flash_ld=eagle.flash.1m160.ld -esp8285.menu.eesz.1M160.build.spiffs_pagesize=256 esp8285.menu.eesz.1M160.build.rfcal_addr=0xFC000 +esp8285.menu.eesz.1M160.upload.maximum_size=1044464 esp8285.menu.eesz.1M160.build.spiffs_start=0xD3000 esp8285.menu.eesz.1M160.build.spiffs_end=0xFB000 esp8285.menu.eesz.1M160.build.spiffs_blocksize=4096 -esp8285.menu.eesz.1M192=1MB (FS:192KB OTA:~406KB) +esp8285.menu.eesz.1M160.build.spiffs_pagesize=256 +esp8285.menu.eesz.1M192=1MB (FS:192KB OTA:~403KB) esp8285.menu.eesz.1M192.build.flash_size=1M esp8285.menu.eesz.1M192.build.flash_ld=eagle.flash.1m192.ld -esp8285.menu.eesz.1M192.build.spiffs_pagesize=256 esp8285.menu.eesz.1M192.build.rfcal_addr=0xFC000 +esp8285.menu.eesz.1M192.upload.maximum_size=1044464 esp8285.menu.eesz.1M192.build.spiffs_start=0xCB000 esp8285.menu.eesz.1M192.build.spiffs_end=0xFB000 esp8285.menu.eesz.1M192.build.spiffs_blocksize=4096 -esp8285.menu.eesz.1M256=1MB (FS:256KB OTA:~374KB) +esp8285.menu.eesz.1M192.build.spiffs_pagesize=256 +esp8285.menu.eesz.1M256=1MB (FS:256KB OTA:~371KB) esp8285.menu.eesz.1M256.build.flash_size=1M esp8285.menu.eesz.1M256.build.flash_ld=eagle.flash.1m256.ld -esp8285.menu.eesz.1M256.build.spiffs_pagesize=256 esp8285.menu.eesz.1M256.build.rfcal_addr=0xFC000 +esp8285.menu.eesz.1M256.upload.maximum_size=1044464 esp8285.menu.eesz.1M256.build.spiffs_start=0xBB000 esp8285.menu.eesz.1M256.build.spiffs_end=0xFB000 esp8285.menu.eesz.1M256.build.spiffs_blocksize=4096 -esp8285.menu.eesz.1M512=1MB (FS:512KB OTA:~246KB) +esp8285.menu.eesz.1M256.build.spiffs_pagesize=256 +esp8285.menu.eesz.1M512=1MB (FS:512KB OTA:~243KB) esp8285.menu.eesz.1M512.build.flash_size=1M esp8285.menu.eesz.1M512.build.flash_ld=eagle.flash.1m512.ld -esp8285.menu.eesz.1M512.build.spiffs_pagesize=256 esp8285.menu.eesz.1M512.build.rfcal_addr=0xFC000 +esp8285.menu.eesz.1M512.upload.maximum_size=1044464 esp8285.menu.eesz.1M512.build.spiffs_start=0x7B000 esp8285.menu.eesz.1M512.build.spiffs_end=0xFB000 esp8285.menu.eesz.1M512.build.spiffs_blocksize=8192 -esp8285.menu.eesz.1M=1MB (FS:none OTA:~502KB) +esp8285.menu.eesz.1M512.build.spiffs_pagesize=256 +esp8285.menu.eesz.1M=1MB (FS:none OTA:~499KB) esp8285.menu.eesz.1M.build.flash_size=1M esp8285.menu.eesz.1M.build.flash_ld=eagle.flash.1m.ld -esp8285.menu.eesz.1M.build.spiffs_pagesize=256 esp8285.menu.eesz.1M.build.rfcal_addr=0xFC000 -esp8285.menu.eesz.2M64=2MB (FS:64KB OTA:~992KB) +esp8285.menu.eesz.1M.upload.maximum_size=1044464 +esp8285.menu.eesz.2M64=2MB (FS:44KB OTA:~960KB) esp8285.menu.eesz.2M64.build.flash_size=2M esp8285.menu.eesz.2M64.build.flash_ld=eagle.flash.2m64.ld -esp8285.menu.eesz.2M64.build.spiffs_pagesize=256 esp8285.menu.eesz.2M64.build.rfcal_addr=0x1FC000 +esp8285.menu.eesz.2M64.upload.maximum_size=1044464 esp8285.menu.eesz.2M64.build.spiffs_start=0x1F0000 esp8285.menu.eesz.2M64.build.spiffs_end=0x1FB000 esp8285.menu.eesz.2M64.build.spiffs_blocksize=4096 -esp8285.menu.eesz.2M128=2MB (FS:128KB OTA:~960KB) +esp8285.menu.eesz.2M64.build.spiffs_pagesize=256 +esp8285.menu.eesz.2M128=2MB (FS:108KB OTA:~896KB) esp8285.menu.eesz.2M128.build.flash_size=2M esp8285.menu.eesz.2M128.build.flash_ld=eagle.flash.2m128.ld -esp8285.menu.eesz.2M128.build.spiffs_pagesize=256 esp8285.menu.eesz.2M128.build.rfcal_addr=0x1FC000 +esp8285.menu.eesz.2M128.upload.maximum_size=1044464 esp8285.menu.eesz.2M128.build.spiffs_start=0x1E0000 esp8285.menu.eesz.2M128.build.spiffs_end=0x1FB000 esp8285.menu.eesz.2M128.build.spiffs_blocksize=4096 -esp8285.menu.eesz.2M256=2MB (FS:256KB OTA:~896KB) +esp8285.menu.eesz.2M128.build.spiffs_pagesize=256 +esp8285.menu.eesz.2M256=2MB (FS:236KB OTA:~768KB) esp8285.menu.eesz.2M256.build.flash_size=2M esp8285.menu.eesz.2M256.build.flash_ld=eagle.flash.2m256.ld -esp8285.menu.eesz.2M256.build.spiffs_pagesize=256 esp8285.menu.eesz.2M256.build.rfcal_addr=0x1FC000 +esp8285.menu.eesz.2M256.upload.maximum_size=1044464 esp8285.menu.eesz.2M256.build.spiffs_start=0x1C0000 esp8285.menu.eesz.2M256.build.spiffs_end=0x1FB000 esp8285.menu.eesz.2M256.build.spiffs_blocksize=4096 -esp8285.menu.eesz.2M512=2MB (FS:512KB OTA:~768KB) +esp8285.menu.eesz.2M256.build.spiffs_pagesize=256 +esp8285.menu.eesz.2M512=2MB (FS:488KB OTA:~512KB) esp8285.menu.eesz.2M512.build.flash_size=2M esp8285.menu.eesz.2M512.build.flash_ld=eagle.flash.2m512.ld -esp8285.menu.eesz.2M512.build.spiffs_pagesize=256 esp8285.menu.eesz.2M512.build.rfcal_addr=0x1FC000 +esp8285.menu.eesz.2M512.upload.maximum_size=1044464 esp8285.menu.eesz.2M512.build.spiffs_start=0x180000 esp8285.menu.eesz.2M512.build.spiffs_end=0x1FA000 esp8285.menu.eesz.2M512.build.spiffs_blocksize=8192 -esp8285.menu.eesz.2M1M=2MB (FS:1MB OTA:~512KB) +esp8285.menu.eesz.2M512.build.spiffs_pagesize=256 +esp8285.menu.eesz.2M1M=2MB (FS:1000KB OTA:~509KB) esp8285.menu.eesz.2M1M.build.flash_size=2M esp8285.menu.eesz.2M1M.build.flash_ld=eagle.flash.2m1m.ld -esp8285.menu.eesz.2M1M.build.spiffs_pagesize=256 esp8285.menu.eesz.2M1M.build.rfcal_addr=0x1FC000 +esp8285.menu.eesz.2M1M.upload.maximum_size=1044464 esp8285.menu.eesz.2M1M.build.spiffs_start=0x100000 esp8285.menu.eesz.2M1M.build.spiffs_end=0x1FA000 esp8285.menu.eesz.2M1M.build.spiffs_blocksize=8192 -esp8285.menu.eesz.2M=2MB (FS:none OTA:~1019KB) +esp8285.menu.eesz.2M1M.build.spiffs_pagesize=256 +esp8285.menu.eesz.2M=2MB (FS:none OTA:~1004KB) esp8285.menu.eesz.2M.build.flash_size=2M esp8285.menu.eesz.2M.build.flash_ld=eagle.flash.2m.ld -esp8285.menu.eesz.2M.build.spiffs_pagesize=256 esp8285.menu.eesz.2M.build.rfcal_addr=0x1FC000 +esp8285.menu.eesz.2M.upload.maximum_size=1044464 esp8285.menu.led.2=2 esp8285.menu.led.2.build.led=-DLED_BUILTIN=2 esp8285.menu.led.0=0 @@ -742,6 +772,8 @@ esp8285.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +esp8285.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG esp8285.menu.lvl.SSL=SSL esp8285.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL esp8285.menu.lvl.TLS_MEM=TLS_MEM @@ -786,24 +818,20 @@ esp8285.menu.lvl.OOM=OOM esp8285.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM esp8285.menu.lvl.MDNS=MDNS esp8285.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -esp8285.menu.lvl.HWDT=HWDT -esp8285.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -esp8285.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -esp8285.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K esp8285.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS esp8285.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +esp8285.menu.lvl.HWDT=HWDT +esp8285.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT esp8285.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT esp8285.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -esp8285.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -esp8285.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -esp8285.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -esp8285.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS esp8285.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT esp8285.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +esp8285.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +esp8285.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +esp8285.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +esp8285.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K esp8285.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K esp8285.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -esp8285.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -esp8285.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG esp8285.menu.wipe.none=Only Sketch esp8285.menu.wipe.none.upload.erase_cmd= esp8285.menu.wipe.sdk=Sketch + WiFi Settings @@ -904,80 +932,88 @@ gen4iod.menu.FlashMode.qio=QIO (fast) gen4iod.menu.FlashMode.qio.build.flash_mode=qio gen4iod.menu.FlashMode.qio.build.flash_flags=-DFLASHMODE_QIO gen4iod.build.flash_freq=80 -gen4iod.menu.eesz.2M64=2MB (FS:64KB OTA:~992KB) +gen4iod.menu.eesz.2M64=2MB (FS:44KB OTA:~960KB) gen4iod.menu.eesz.2M64.build.flash_size=2M gen4iod.menu.eesz.2M64.build.flash_ld=eagle.flash.2m64.ld -gen4iod.menu.eesz.2M64.build.spiffs_pagesize=256 gen4iod.menu.eesz.2M64.build.rfcal_addr=0x1FC000 +gen4iod.menu.eesz.2M64.upload.maximum_size=1044464 gen4iod.menu.eesz.2M64.build.spiffs_start=0x1F0000 gen4iod.menu.eesz.2M64.build.spiffs_end=0x1FB000 gen4iod.menu.eesz.2M64.build.spiffs_blocksize=4096 -gen4iod.menu.eesz.2M128=2MB (FS:128KB OTA:~960KB) +gen4iod.menu.eesz.2M64.build.spiffs_pagesize=256 +gen4iod.menu.eesz.2M128=2MB (FS:108KB OTA:~896KB) gen4iod.menu.eesz.2M128.build.flash_size=2M gen4iod.menu.eesz.2M128.build.flash_ld=eagle.flash.2m128.ld -gen4iod.menu.eesz.2M128.build.spiffs_pagesize=256 gen4iod.menu.eesz.2M128.build.rfcal_addr=0x1FC000 +gen4iod.menu.eesz.2M128.upload.maximum_size=1044464 gen4iod.menu.eesz.2M128.build.spiffs_start=0x1E0000 gen4iod.menu.eesz.2M128.build.spiffs_end=0x1FB000 gen4iod.menu.eesz.2M128.build.spiffs_blocksize=4096 -gen4iod.menu.eesz.2M256=2MB (FS:256KB OTA:~896KB) +gen4iod.menu.eesz.2M128.build.spiffs_pagesize=256 +gen4iod.menu.eesz.2M256=2MB (FS:236KB OTA:~768KB) gen4iod.menu.eesz.2M256.build.flash_size=2M gen4iod.menu.eesz.2M256.build.flash_ld=eagle.flash.2m256.ld -gen4iod.menu.eesz.2M256.build.spiffs_pagesize=256 gen4iod.menu.eesz.2M256.build.rfcal_addr=0x1FC000 +gen4iod.menu.eesz.2M256.upload.maximum_size=1044464 gen4iod.menu.eesz.2M256.build.spiffs_start=0x1C0000 gen4iod.menu.eesz.2M256.build.spiffs_end=0x1FB000 gen4iod.menu.eesz.2M256.build.spiffs_blocksize=4096 -gen4iod.menu.eesz.2M512=2MB (FS:512KB OTA:~768KB) +gen4iod.menu.eesz.2M256.build.spiffs_pagesize=256 +gen4iod.menu.eesz.2M512=2MB (FS:488KB OTA:~512KB) gen4iod.menu.eesz.2M512.build.flash_size=2M gen4iod.menu.eesz.2M512.build.flash_ld=eagle.flash.2m512.ld -gen4iod.menu.eesz.2M512.build.spiffs_pagesize=256 gen4iod.menu.eesz.2M512.build.rfcal_addr=0x1FC000 +gen4iod.menu.eesz.2M512.upload.maximum_size=1044464 gen4iod.menu.eesz.2M512.build.spiffs_start=0x180000 gen4iod.menu.eesz.2M512.build.spiffs_end=0x1FA000 gen4iod.menu.eesz.2M512.build.spiffs_blocksize=8192 -gen4iod.menu.eesz.2M1M=2MB (FS:1MB OTA:~512KB) +gen4iod.menu.eesz.2M512.build.spiffs_pagesize=256 +gen4iod.menu.eesz.2M1M=2MB (FS:1000KB OTA:~509KB) gen4iod.menu.eesz.2M1M.build.flash_size=2M gen4iod.menu.eesz.2M1M.build.flash_ld=eagle.flash.2m1m.ld -gen4iod.menu.eesz.2M1M.build.spiffs_pagesize=256 gen4iod.menu.eesz.2M1M.build.rfcal_addr=0x1FC000 +gen4iod.menu.eesz.2M1M.upload.maximum_size=1044464 gen4iod.menu.eesz.2M1M.build.spiffs_start=0x100000 gen4iod.menu.eesz.2M1M.build.spiffs_end=0x1FA000 gen4iod.menu.eesz.2M1M.build.spiffs_blocksize=8192 -gen4iod.menu.eesz.2M=2MB (FS:none OTA:~1019KB) +gen4iod.menu.eesz.2M1M.build.spiffs_pagesize=256 +gen4iod.menu.eesz.2M=2MB (FS:none OTA:~1004KB) gen4iod.menu.eesz.2M.build.flash_size=2M gen4iod.menu.eesz.2M.build.flash_ld=eagle.flash.2m.ld -gen4iod.menu.eesz.2M.build.spiffs_pagesize=256 gen4iod.menu.eesz.2M.build.rfcal_addr=0x1FC000 -gen4iod.menu.eesz.512K32=512KB (FS:32KB OTA:~230KB) +gen4iod.menu.eesz.2M.upload.maximum_size=1044464 +gen4iod.menu.eesz.512K32=512KB (FS:32KB OTA:~227KB) gen4iod.menu.eesz.512K32.build.flash_size=512K gen4iod.menu.eesz.512K32.build.flash_ld=eagle.flash.512k32.ld -gen4iod.menu.eesz.512K32.build.spiffs_pagesize=256 gen4iod.menu.eesz.512K32.build.rfcal_addr=0x7C000 +gen4iod.menu.eesz.512K32.upload.maximum_size=520176 gen4iod.menu.eesz.512K32.build.spiffs_start=0x73000 gen4iod.menu.eesz.512K32.build.spiffs_end=0x7B000 gen4iod.menu.eesz.512K32.build.spiffs_blocksize=4096 -gen4iod.menu.eesz.512K64=512KB (FS:64KB OTA:~214KB) +gen4iod.menu.eesz.512K32.build.spiffs_pagesize=256 +gen4iod.menu.eesz.512K64=512KB (FS:64KB OTA:~211KB) gen4iod.menu.eesz.512K64.build.flash_size=512K gen4iod.menu.eesz.512K64.build.flash_ld=eagle.flash.512k64.ld -gen4iod.menu.eesz.512K64.build.spiffs_pagesize=256 gen4iod.menu.eesz.512K64.build.rfcal_addr=0x7C000 +gen4iod.menu.eesz.512K64.upload.maximum_size=520176 gen4iod.menu.eesz.512K64.build.spiffs_start=0x6B000 gen4iod.menu.eesz.512K64.build.spiffs_end=0x7B000 gen4iod.menu.eesz.512K64.build.spiffs_blocksize=4096 -gen4iod.menu.eesz.512K128=512KB (FS:128KB OTA:~182KB) +gen4iod.menu.eesz.512K64.build.spiffs_pagesize=256 +gen4iod.menu.eesz.512K128=512KB (FS:128KB OTA:~179KB) gen4iod.menu.eesz.512K128.build.flash_size=512K gen4iod.menu.eesz.512K128.build.flash_ld=eagle.flash.512k128.ld -gen4iod.menu.eesz.512K128.build.spiffs_pagesize=256 gen4iod.menu.eesz.512K128.build.rfcal_addr=0x7C000 +gen4iod.menu.eesz.512K128.upload.maximum_size=520176 gen4iod.menu.eesz.512K128.build.spiffs_start=0x5B000 gen4iod.menu.eesz.512K128.build.spiffs_end=0x7B000 gen4iod.menu.eesz.512K128.build.spiffs_blocksize=4096 -gen4iod.menu.eesz.512K=512KB (FS:none OTA:~246KB) +gen4iod.menu.eesz.512K128.build.spiffs_pagesize=256 +gen4iod.menu.eesz.512K=512KB (FS:none OTA:~243KB) gen4iod.menu.eesz.512K.build.flash_size=512K gen4iod.menu.eesz.512K.build.flash_ld=eagle.flash.512k.ld -gen4iod.menu.eesz.512K.build.spiffs_pagesize=256 gen4iod.menu.eesz.512K.build.rfcal_addr=0x7C000 +gen4iod.menu.eesz.512K.upload.maximum_size=520176 gen4iod.menu.ip.lm2f=v2 Lower Memory gen4iod.menu.ip.lm2f.build.lwip_include=lwip2/include gen4iod.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -1010,6 +1046,8 @@ gen4iod.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +gen4iod.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG gen4iod.menu.lvl.SSL=SSL gen4iod.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL gen4iod.menu.lvl.TLS_MEM=TLS_MEM @@ -1054,24 +1092,20 @@ gen4iod.menu.lvl.OOM=OOM gen4iod.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM gen4iod.menu.lvl.MDNS=MDNS gen4iod.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -gen4iod.menu.lvl.HWDT=HWDT -gen4iod.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -gen4iod.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -gen4iod.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K gen4iod.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS gen4iod.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +gen4iod.menu.lvl.HWDT=HWDT +gen4iod.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT gen4iod.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT gen4iod.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -gen4iod.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -gen4iod.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -gen4iod.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -gen4iod.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS gen4iod.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT gen4iod.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +gen4iod.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +gen4iod.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +gen4iod.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +gen4iod.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K gen4iod.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K gen4iod.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -gen4iod.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -gen4iod.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG gen4iod.menu.wipe.none=Only Sketch gen4iod.menu.wipe.none.upload.erase_cmd= gen4iod.menu.wipe.sdk=Sketch + WiFi Settings @@ -1161,35 +1195,38 @@ huzzah.upload.resetmethod=--before default_reset --after hard_reset huzzah.build.flash_mode=qio huzzah.build.flash_flags=-DFLASHMODE_QIO huzzah.build.flash_freq=40 -huzzah.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +huzzah.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) huzzah.menu.eesz.4M2M.build.flash_size=4M huzzah.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -huzzah.menu.eesz.4M2M.build.spiffs_pagesize=256 huzzah.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +huzzah.menu.eesz.4M2M.upload.maximum_size=1044464 huzzah.menu.eesz.4M2M.build.spiffs_start=0x200000 huzzah.menu.eesz.4M2M.build.spiffs_end=0x3FA000 huzzah.menu.eesz.4M2M.build.spiffs_blocksize=8192 -huzzah.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +huzzah.menu.eesz.4M2M.build.spiffs_pagesize=256 +huzzah.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) huzzah.menu.eesz.4M3M.build.flash_size=4M huzzah.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -huzzah.menu.eesz.4M3M.build.spiffs_pagesize=256 huzzah.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +huzzah.menu.eesz.4M3M.upload.maximum_size=1044464 huzzah.menu.eesz.4M3M.build.spiffs_start=0x100000 huzzah.menu.eesz.4M3M.build.spiffs_end=0x3FA000 huzzah.menu.eesz.4M3M.build.spiffs_blocksize=8192 -huzzah.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +huzzah.menu.eesz.4M3M.build.spiffs_pagesize=256 +huzzah.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) huzzah.menu.eesz.4M1M.build.flash_size=4M huzzah.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -huzzah.menu.eesz.4M1M.build.spiffs_pagesize=256 huzzah.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +huzzah.menu.eesz.4M1M.upload.maximum_size=1044464 huzzah.menu.eesz.4M1M.build.spiffs_start=0x300000 huzzah.menu.eesz.4M1M.build.spiffs_end=0x3FA000 huzzah.menu.eesz.4M1M.build.spiffs_blocksize=8192 -huzzah.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +huzzah.menu.eesz.4M1M.build.spiffs_pagesize=256 +huzzah.menu.eesz.4M=4MB (FS:none OTA:~3052KB) huzzah.menu.eesz.4M.build.flash_size=4M huzzah.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -huzzah.menu.eesz.4M.build.spiffs_pagesize=256 huzzah.menu.eesz.4M.build.rfcal_addr=0x3FC000 +huzzah.menu.eesz.4M.upload.maximum_size=1044464 huzzah.menu.ip.lm2f=v2 Lower Memory huzzah.menu.ip.lm2f.build.lwip_include=lwip2/include huzzah.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -1222,6 +1259,8 @@ huzzah.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +huzzah.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG huzzah.menu.lvl.SSL=SSL huzzah.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL huzzah.menu.lvl.TLS_MEM=TLS_MEM @@ -1266,24 +1305,20 @@ huzzah.menu.lvl.OOM=OOM huzzah.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM huzzah.menu.lvl.MDNS=MDNS huzzah.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -huzzah.menu.lvl.HWDT=HWDT -huzzah.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -huzzah.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -huzzah.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K huzzah.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS huzzah.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +huzzah.menu.lvl.HWDT=HWDT +huzzah.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT huzzah.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT huzzah.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -huzzah.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -huzzah.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -huzzah.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -huzzah.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS huzzah.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT huzzah.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +huzzah.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +huzzah.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +huzzah.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +huzzah.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K huzzah.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K huzzah.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -huzzah.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -huzzah.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG huzzah.menu.wipe.none=Only Sketch huzzah.menu.wipe.none.upload.erase_cmd= huzzah.menu.wipe.sdk=Sketch + WiFi Settings @@ -1390,112 +1425,124 @@ wifi_slot.menu.FlashMode.qout.build.flash_flags=-DFLASHMODE_QOUT wifi_slot.menu.FlashMode.qio=QIO (fast) wifi_slot.menu.FlashMode.qio.build.flash_mode=qio wifi_slot.menu.FlashMode.qio.build.flash_flags=-DFLASHMODE_QIO -wifi_slot.menu.eesz.1M64=1MB (FS:64KB OTA:~470KB) +wifi_slot.menu.eesz.1M64=1MB (FS:64KB OTA:~467KB) wifi_slot.menu.eesz.1M64.build.flash_size=1M wifi_slot.menu.eesz.1M64.build.flash_ld=eagle.flash.1m64.ld -wifi_slot.menu.eesz.1M64.build.spiffs_pagesize=256 wifi_slot.menu.eesz.1M64.build.rfcal_addr=0xFC000 +wifi_slot.menu.eesz.1M64.upload.maximum_size=1044464 wifi_slot.menu.eesz.1M64.build.spiffs_start=0xEB000 wifi_slot.menu.eesz.1M64.build.spiffs_end=0xFB000 wifi_slot.menu.eesz.1M64.build.spiffs_blocksize=4096 -wifi_slot.menu.eesz.1M128=1MB (FS:128KB OTA:~438KB) +wifi_slot.menu.eesz.1M64.build.spiffs_pagesize=256 +wifi_slot.menu.eesz.1M128=1MB (FS:128KB OTA:~435KB) wifi_slot.menu.eesz.1M128.build.flash_size=1M wifi_slot.menu.eesz.1M128.build.flash_ld=eagle.flash.1m128.ld -wifi_slot.menu.eesz.1M128.build.spiffs_pagesize=256 wifi_slot.menu.eesz.1M128.build.rfcal_addr=0xFC000 +wifi_slot.menu.eesz.1M128.upload.maximum_size=1044464 wifi_slot.menu.eesz.1M128.build.spiffs_start=0xDB000 wifi_slot.menu.eesz.1M128.build.spiffs_end=0xFB000 wifi_slot.menu.eesz.1M128.build.spiffs_blocksize=4096 -wifi_slot.menu.eesz.1M144=1MB (FS:144KB OTA:~430KB) +wifi_slot.menu.eesz.1M128.build.spiffs_pagesize=256 +wifi_slot.menu.eesz.1M144=1MB (FS:144KB OTA:~427KB) wifi_slot.menu.eesz.1M144.build.flash_size=1M wifi_slot.menu.eesz.1M144.build.flash_ld=eagle.flash.1m144.ld -wifi_slot.menu.eesz.1M144.build.spiffs_pagesize=256 wifi_slot.menu.eesz.1M144.build.rfcal_addr=0xFC000 +wifi_slot.menu.eesz.1M144.upload.maximum_size=1044464 wifi_slot.menu.eesz.1M144.build.spiffs_start=0xD7000 wifi_slot.menu.eesz.1M144.build.spiffs_end=0xFB000 wifi_slot.menu.eesz.1M144.build.spiffs_blocksize=4096 -wifi_slot.menu.eesz.1M160=1MB (FS:160KB OTA:~422KB) +wifi_slot.menu.eesz.1M144.build.spiffs_pagesize=256 +wifi_slot.menu.eesz.1M160=1MB (FS:160KB OTA:~419KB) wifi_slot.menu.eesz.1M160.build.flash_size=1M wifi_slot.menu.eesz.1M160.build.flash_ld=eagle.flash.1m160.ld -wifi_slot.menu.eesz.1M160.build.spiffs_pagesize=256 wifi_slot.menu.eesz.1M160.build.rfcal_addr=0xFC000 +wifi_slot.menu.eesz.1M160.upload.maximum_size=1044464 wifi_slot.menu.eesz.1M160.build.spiffs_start=0xD3000 wifi_slot.menu.eesz.1M160.build.spiffs_end=0xFB000 wifi_slot.menu.eesz.1M160.build.spiffs_blocksize=4096 -wifi_slot.menu.eesz.1M192=1MB (FS:192KB OTA:~406KB) +wifi_slot.menu.eesz.1M160.build.spiffs_pagesize=256 +wifi_slot.menu.eesz.1M192=1MB (FS:192KB OTA:~403KB) wifi_slot.menu.eesz.1M192.build.flash_size=1M wifi_slot.menu.eesz.1M192.build.flash_ld=eagle.flash.1m192.ld -wifi_slot.menu.eesz.1M192.build.spiffs_pagesize=256 wifi_slot.menu.eesz.1M192.build.rfcal_addr=0xFC000 +wifi_slot.menu.eesz.1M192.upload.maximum_size=1044464 wifi_slot.menu.eesz.1M192.build.spiffs_start=0xCB000 wifi_slot.menu.eesz.1M192.build.spiffs_end=0xFB000 wifi_slot.menu.eesz.1M192.build.spiffs_blocksize=4096 -wifi_slot.menu.eesz.1M256=1MB (FS:256KB OTA:~374KB) +wifi_slot.menu.eesz.1M192.build.spiffs_pagesize=256 +wifi_slot.menu.eesz.1M256=1MB (FS:256KB OTA:~371KB) wifi_slot.menu.eesz.1M256.build.flash_size=1M wifi_slot.menu.eesz.1M256.build.flash_ld=eagle.flash.1m256.ld -wifi_slot.menu.eesz.1M256.build.spiffs_pagesize=256 wifi_slot.menu.eesz.1M256.build.rfcal_addr=0xFC000 +wifi_slot.menu.eesz.1M256.upload.maximum_size=1044464 wifi_slot.menu.eesz.1M256.build.spiffs_start=0xBB000 wifi_slot.menu.eesz.1M256.build.spiffs_end=0xFB000 wifi_slot.menu.eesz.1M256.build.spiffs_blocksize=4096 -wifi_slot.menu.eesz.1M512=1MB (FS:512KB OTA:~246KB) +wifi_slot.menu.eesz.1M256.build.spiffs_pagesize=256 +wifi_slot.menu.eesz.1M512=1MB (FS:512KB OTA:~243KB) wifi_slot.menu.eesz.1M512.build.flash_size=1M wifi_slot.menu.eesz.1M512.build.flash_ld=eagle.flash.1m512.ld -wifi_slot.menu.eesz.1M512.build.spiffs_pagesize=256 wifi_slot.menu.eesz.1M512.build.rfcal_addr=0xFC000 +wifi_slot.menu.eesz.1M512.upload.maximum_size=1044464 wifi_slot.menu.eesz.1M512.build.spiffs_start=0x7B000 wifi_slot.menu.eesz.1M512.build.spiffs_end=0xFB000 wifi_slot.menu.eesz.1M512.build.spiffs_blocksize=8192 -wifi_slot.menu.eesz.1M=1MB (FS:none OTA:~502KB) +wifi_slot.menu.eesz.1M512.build.spiffs_pagesize=256 +wifi_slot.menu.eesz.1M=1MB (FS:none OTA:~499KB) wifi_slot.menu.eesz.1M.build.flash_size=1M wifi_slot.menu.eesz.1M.build.flash_ld=eagle.flash.1m.ld -wifi_slot.menu.eesz.1M.build.spiffs_pagesize=256 wifi_slot.menu.eesz.1M.build.rfcal_addr=0xFC000 -wifi_slot.menu.eesz.2M64=2MB (FS:64KB OTA:~992KB) +wifi_slot.menu.eesz.1M.upload.maximum_size=1044464 +wifi_slot.menu.eesz.2M64=2MB (FS:44KB OTA:~960KB) wifi_slot.menu.eesz.2M64.build.flash_size=2M wifi_slot.menu.eesz.2M64.build.flash_ld=eagle.flash.2m64.ld -wifi_slot.menu.eesz.2M64.build.spiffs_pagesize=256 wifi_slot.menu.eesz.2M64.build.rfcal_addr=0x1FC000 +wifi_slot.menu.eesz.2M64.upload.maximum_size=1044464 wifi_slot.menu.eesz.2M64.build.spiffs_start=0x1F0000 wifi_slot.menu.eesz.2M64.build.spiffs_end=0x1FB000 wifi_slot.menu.eesz.2M64.build.spiffs_blocksize=4096 -wifi_slot.menu.eesz.2M128=2MB (FS:128KB OTA:~960KB) +wifi_slot.menu.eesz.2M64.build.spiffs_pagesize=256 +wifi_slot.menu.eesz.2M128=2MB (FS:108KB OTA:~896KB) wifi_slot.menu.eesz.2M128.build.flash_size=2M wifi_slot.menu.eesz.2M128.build.flash_ld=eagle.flash.2m128.ld -wifi_slot.menu.eesz.2M128.build.spiffs_pagesize=256 wifi_slot.menu.eesz.2M128.build.rfcal_addr=0x1FC000 +wifi_slot.menu.eesz.2M128.upload.maximum_size=1044464 wifi_slot.menu.eesz.2M128.build.spiffs_start=0x1E0000 wifi_slot.menu.eesz.2M128.build.spiffs_end=0x1FB000 wifi_slot.menu.eesz.2M128.build.spiffs_blocksize=4096 -wifi_slot.menu.eesz.2M256=2MB (FS:256KB OTA:~896KB) +wifi_slot.menu.eesz.2M128.build.spiffs_pagesize=256 +wifi_slot.menu.eesz.2M256=2MB (FS:236KB OTA:~768KB) wifi_slot.menu.eesz.2M256.build.flash_size=2M wifi_slot.menu.eesz.2M256.build.flash_ld=eagle.flash.2m256.ld -wifi_slot.menu.eesz.2M256.build.spiffs_pagesize=256 wifi_slot.menu.eesz.2M256.build.rfcal_addr=0x1FC000 +wifi_slot.menu.eesz.2M256.upload.maximum_size=1044464 wifi_slot.menu.eesz.2M256.build.spiffs_start=0x1C0000 wifi_slot.menu.eesz.2M256.build.spiffs_end=0x1FB000 wifi_slot.menu.eesz.2M256.build.spiffs_blocksize=4096 -wifi_slot.menu.eesz.2M512=2MB (FS:512KB OTA:~768KB) +wifi_slot.menu.eesz.2M256.build.spiffs_pagesize=256 +wifi_slot.menu.eesz.2M512=2MB (FS:488KB OTA:~512KB) wifi_slot.menu.eesz.2M512.build.flash_size=2M wifi_slot.menu.eesz.2M512.build.flash_ld=eagle.flash.2m512.ld -wifi_slot.menu.eesz.2M512.build.spiffs_pagesize=256 wifi_slot.menu.eesz.2M512.build.rfcal_addr=0x1FC000 +wifi_slot.menu.eesz.2M512.upload.maximum_size=1044464 wifi_slot.menu.eesz.2M512.build.spiffs_start=0x180000 wifi_slot.menu.eesz.2M512.build.spiffs_end=0x1FA000 wifi_slot.menu.eesz.2M512.build.spiffs_blocksize=8192 -wifi_slot.menu.eesz.2M1M=2MB (FS:1MB OTA:~512KB) +wifi_slot.menu.eesz.2M512.build.spiffs_pagesize=256 +wifi_slot.menu.eesz.2M1M=2MB (FS:1000KB OTA:~509KB) wifi_slot.menu.eesz.2M1M.build.flash_size=2M wifi_slot.menu.eesz.2M1M.build.flash_ld=eagle.flash.2m1m.ld -wifi_slot.menu.eesz.2M1M.build.spiffs_pagesize=256 wifi_slot.menu.eesz.2M1M.build.rfcal_addr=0x1FC000 +wifi_slot.menu.eesz.2M1M.upload.maximum_size=1044464 wifi_slot.menu.eesz.2M1M.build.spiffs_start=0x100000 wifi_slot.menu.eesz.2M1M.build.spiffs_end=0x1FA000 wifi_slot.menu.eesz.2M1M.build.spiffs_blocksize=8192 -wifi_slot.menu.eesz.2M=2MB (FS:none OTA:~1019KB) +wifi_slot.menu.eesz.2M1M.build.spiffs_pagesize=256 +wifi_slot.menu.eesz.2M=2MB (FS:none OTA:~1004KB) wifi_slot.menu.eesz.2M.build.flash_size=2M wifi_slot.menu.eesz.2M.build.flash_ld=eagle.flash.2m.ld -wifi_slot.menu.eesz.2M.build.spiffs_pagesize=256 wifi_slot.menu.eesz.2M.build.rfcal_addr=0x1FC000 +wifi_slot.menu.eesz.2M.upload.maximum_size=1044464 wifi_slot.menu.ip.lm2f=v2 Lower Memory wifi_slot.menu.ip.lm2f.build.lwip_include=lwip2/include wifi_slot.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -1528,6 +1575,8 @@ wifi_slot.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +wifi_slot.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG 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 @@ -1572,24 +1621,20 @@ wifi_slot.menu.lvl.OOM=OOM wifi_slot.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM wifi_slot.menu.lvl.MDNS=MDNS wifi_slot.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -wifi_slot.menu.lvl.HWDT=HWDT -wifi_slot.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -wifi_slot.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -wifi_slot.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K wifi_slot.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS wifi_slot.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +wifi_slot.menu.lvl.HWDT=HWDT +wifi_slot.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT wifi_slot.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT wifi_slot.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -wifi_slot.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -wifi_slot.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -wifi_slot.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -wifi_slot.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS wifi_slot.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT wifi_slot.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +wifi_slot.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +wifi_slot.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +wifi_slot.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +wifi_slot.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K wifi_slot.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K wifi_slot.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -wifi_slot.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -wifi_slot.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG wifi_slot.menu.wipe.none=Only Sketch wifi_slot.menu.wipe.none.upload.erase_cmd= wifi_slot.menu.wipe.sdk=Sketch + WiFi Settings @@ -1691,35 +1736,38 @@ arduino-esp8266.upload.resetmethod=--before no_reset --after soft_reset arduino-esp8266.build.flash_mode=qio arduino-esp8266.build.flash_flags=-DFLASHMODE_QIO arduino-esp8266.build.flash_freq=40 -arduino-esp8266.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +arduino-esp8266.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) arduino-esp8266.menu.eesz.4M2M.build.flash_size=4M arduino-esp8266.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -arduino-esp8266.menu.eesz.4M2M.build.spiffs_pagesize=256 arduino-esp8266.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +arduino-esp8266.menu.eesz.4M2M.upload.maximum_size=1044464 arduino-esp8266.menu.eesz.4M2M.build.spiffs_start=0x200000 arduino-esp8266.menu.eesz.4M2M.build.spiffs_end=0x3FA000 arduino-esp8266.menu.eesz.4M2M.build.spiffs_blocksize=8192 -arduino-esp8266.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +arduino-esp8266.menu.eesz.4M2M.build.spiffs_pagesize=256 +arduino-esp8266.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) arduino-esp8266.menu.eesz.4M3M.build.flash_size=4M arduino-esp8266.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -arduino-esp8266.menu.eesz.4M3M.build.spiffs_pagesize=256 arduino-esp8266.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +arduino-esp8266.menu.eesz.4M3M.upload.maximum_size=1044464 arduino-esp8266.menu.eesz.4M3M.build.spiffs_start=0x100000 arduino-esp8266.menu.eesz.4M3M.build.spiffs_end=0x3FA000 arduino-esp8266.menu.eesz.4M3M.build.spiffs_blocksize=8192 -arduino-esp8266.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +arduino-esp8266.menu.eesz.4M3M.build.spiffs_pagesize=256 +arduino-esp8266.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) arduino-esp8266.menu.eesz.4M1M.build.flash_size=4M arduino-esp8266.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -arduino-esp8266.menu.eesz.4M1M.build.spiffs_pagesize=256 arduino-esp8266.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +arduino-esp8266.menu.eesz.4M1M.upload.maximum_size=1044464 arduino-esp8266.menu.eesz.4M1M.build.spiffs_start=0x300000 arduino-esp8266.menu.eesz.4M1M.build.spiffs_end=0x3FA000 arduino-esp8266.menu.eesz.4M1M.build.spiffs_blocksize=8192 -arduino-esp8266.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +arduino-esp8266.menu.eesz.4M1M.build.spiffs_pagesize=256 +arduino-esp8266.menu.eesz.4M=4MB (FS:none OTA:~3052KB) arduino-esp8266.menu.eesz.4M.build.flash_size=4M arduino-esp8266.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -arduino-esp8266.menu.eesz.4M.build.spiffs_pagesize=256 arduino-esp8266.menu.eesz.4M.build.rfcal_addr=0x3FC000 +arduino-esp8266.menu.eesz.4M.upload.maximum_size=1044464 arduino-esp8266.menu.ip.lm2f=v2 Lower Memory arduino-esp8266.menu.ip.lm2f.build.lwip_include=lwip2/include arduino-esp8266.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -1752,6 +1800,8 @@ arduino-esp8266.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +arduino-esp8266.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG 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 @@ -1796,24 +1846,20 @@ arduino-esp8266.menu.lvl.OOM=OOM arduino-esp8266.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM arduino-esp8266.menu.lvl.MDNS=MDNS arduino-esp8266.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -arduino-esp8266.menu.lvl.HWDT=HWDT -arduino-esp8266.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -arduino-esp8266.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -arduino-esp8266.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K arduino-esp8266.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS arduino-esp8266.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +arduino-esp8266.menu.lvl.HWDT=HWDT +arduino-esp8266.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT arduino-esp8266.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT arduino-esp8266.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -arduino-esp8266.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -arduino-esp8266.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -arduino-esp8266.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -arduino-esp8266.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS arduino-esp8266.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT arduino-esp8266.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +arduino-esp8266.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +arduino-esp8266.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +arduino-esp8266.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +arduino-esp8266.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K arduino-esp8266.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K arduino-esp8266.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -arduino-esp8266.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -arduino-esp8266.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG arduino-esp8266.menu.wipe.none=Only Sketch arduino-esp8266.menu.wipe.none.upload.erase_cmd= arduino-esp8266.menu.wipe.sdk=Sketch + WiFi Settings @@ -1904,67 +1950,74 @@ espmxdevkit.upload.resetmethod=--before default_reset --after hard_reset espmxdevkit.build.flash_mode=dout espmxdevkit.build.flash_flags=-DFLASHMODE_DOUT espmxdevkit.build.flash_freq=40 -espmxdevkit.menu.eesz.1M64=1MB (FS:64KB OTA:~470KB) +espmxdevkit.menu.eesz.1M64=1MB (FS:64KB OTA:~467KB) espmxdevkit.menu.eesz.1M64.build.flash_size=1M espmxdevkit.menu.eesz.1M64.build.flash_ld=eagle.flash.1m64.ld -espmxdevkit.menu.eesz.1M64.build.spiffs_pagesize=256 espmxdevkit.menu.eesz.1M64.build.rfcal_addr=0xFC000 +espmxdevkit.menu.eesz.1M64.upload.maximum_size=1044464 espmxdevkit.menu.eesz.1M64.build.spiffs_start=0xEB000 espmxdevkit.menu.eesz.1M64.build.spiffs_end=0xFB000 espmxdevkit.menu.eesz.1M64.build.spiffs_blocksize=4096 -espmxdevkit.menu.eesz.1M128=1MB (FS:128KB OTA:~438KB) +espmxdevkit.menu.eesz.1M64.build.spiffs_pagesize=256 +espmxdevkit.menu.eesz.1M128=1MB (FS:128KB OTA:~435KB) espmxdevkit.menu.eesz.1M128.build.flash_size=1M espmxdevkit.menu.eesz.1M128.build.flash_ld=eagle.flash.1m128.ld -espmxdevkit.menu.eesz.1M128.build.spiffs_pagesize=256 espmxdevkit.menu.eesz.1M128.build.rfcal_addr=0xFC000 +espmxdevkit.menu.eesz.1M128.upload.maximum_size=1044464 espmxdevkit.menu.eesz.1M128.build.spiffs_start=0xDB000 espmxdevkit.menu.eesz.1M128.build.spiffs_end=0xFB000 espmxdevkit.menu.eesz.1M128.build.spiffs_blocksize=4096 -espmxdevkit.menu.eesz.1M144=1MB (FS:144KB OTA:~430KB) +espmxdevkit.menu.eesz.1M128.build.spiffs_pagesize=256 +espmxdevkit.menu.eesz.1M144=1MB (FS:144KB OTA:~427KB) espmxdevkit.menu.eesz.1M144.build.flash_size=1M espmxdevkit.menu.eesz.1M144.build.flash_ld=eagle.flash.1m144.ld -espmxdevkit.menu.eesz.1M144.build.spiffs_pagesize=256 espmxdevkit.menu.eesz.1M144.build.rfcal_addr=0xFC000 +espmxdevkit.menu.eesz.1M144.upload.maximum_size=1044464 espmxdevkit.menu.eesz.1M144.build.spiffs_start=0xD7000 espmxdevkit.menu.eesz.1M144.build.spiffs_end=0xFB000 espmxdevkit.menu.eesz.1M144.build.spiffs_blocksize=4096 -espmxdevkit.menu.eesz.1M160=1MB (FS:160KB OTA:~422KB) +espmxdevkit.menu.eesz.1M144.build.spiffs_pagesize=256 +espmxdevkit.menu.eesz.1M160=1MB (FS:160KB OTA:~419KB) espmxdevkit.menu.eesz.1M160.build.flash_size=1M espmxdevkit.menu.eesz.1M160.build.flash_ld=eagle.flash.1m160.ld -espmxdevkit.menu.eesz.1M160.build.spiffs_pagesize=256 espmxdevkit.menu.eesz.1M160.build.rfcal_addr=0xFC000 +espmxdevkit.menu.eesz.1M160.upload.maximum_size=1044464 espmxdevkit.menu.eesz.1M160.build.spiffs_start=0xD3000 espmxdevkit.menu.eesz.1M160.build.spiffs_end=0xFB000 espmxdevkit.menu.eesz.1M160.build.spiffs_blocksize=4096 -espmxdevkit.menu.eesz.1M192=1MB (FS:192KB OTA:~406KB) +espmxdevkit.menu.eesz.1M160.build.spiffs_pagesize=256 +espmxdevkit.menu.eesz.1M192=1MB (FS:192KB OTA:~403KB) espmxdevkit.menu.eesz.1M192.build.flash_size=1M espmxdevkit.menu.eesz.1M192.build.flash_ld=eagle.flash.1m192.ld -espmxdevkit.menu.eesz.1M192.build.spiffs_pagesize=256 espmxdevkit.menu.eesz.1M192.build.rfcal_addr=0xFC000 +espmxdevkit.menu.eesz.1M192.upload.maximum_size=1044464 espmxdevkit.menu.eesz.1M192.build.spiffs_start=0xCB000 espmxdevkit.menu.eesz.1M192.build.spiffs_end=0xFB000 espmxdevkit.menu.eesz.1M192.build.spiffs_blocksize=4096 -espmxdevkit.menu.eesz.1M256=1MB (FS:256KB OTA:~374KB) +espmxdevkit.menu.eesz.1M192.build.spiffs_pagesize=256 +espmxdevkit.menu.eesz.1M256=1MB (FS:256KB OTA:~371KB) espmxdevkit.menu.eesz.1M256.build.flash_size=1M espmxdevkit.menu.eesz.1M256.build.flash_ld=eagle.flash.1m256.ld -espmxdevkit.menu.eesz.1M256.build.spiffs_pagesize=256 espmxdevkit.menu.eesz.1M256.build.rfcal_addr=0xFC000 +espmxdevkit.menu.eesz.1M256.upload.maximum_size=1044464 espmxdevkit.menu.eesz.1M256.build.spiffs_start=0xBB000 espmxdevkit.menu.eesz.1M256.build.spiffs_end=0xFB000 espmxdevkit.menu.eesz.1M256.build.spiffs_blocksize=4096 -espmxdevkit.menu.eesz.1M512=1MB (FS:512KB OTA:~246KB) +espmxdevkit.menu.eesz.1M256.build.spiffs_pagesize=256 +espmxdevkit.menu.eesz.1M512=1MB (FS:512KB OTA:~243KB) espmxdevkit.menu.eesz.1M512.build.flash_size=1M espmxdevkit.menu.eesz.1M512.build.flash_ld=eagle.flash.1m512.ld -espmxdevkit.menu.eesz.1M512.build.spiffs_pagesize=256 espmxdevkit.menu.eesz.1M512.build.rfcal_addr=0xFC000 +espmxdevkit.menu.eesz.1M512.upload.maximum_size=1044464 espmxdevkit.menu.eesz.1M512.build.spiffs_start=0x7B000 espmxdevkit.menu.eesz.1M512.build.spiffs_end=0xFB000 espmxdevkit.menu.eesz.1M512.build.spiffs_blocksize=8192 -espmxdevkit.menu.eesz.1M=1MB (FS:none OTA:~502KB) +espmxdevkit.menu.eesz.1M512.build.spiffs_pagesize=256 +espmxdevkit.menu.eesz.1M=1MB (FS:none OTA:~499KB) espmxdevkit.menu.eesz.1M.build.flash_size=1M espmxdevkit.menu.eesz.1M.build.flash_ld=eagle.flash.1m.ld -espmxdevkit.menu.eesz.1M.build.spiffs_pagesize=256 espmxdevkit.menu.eesz.1M.build.rfcal_addr=0xFC000 +espmxdevkit.menu.eesz.1M.upload.maximum_size=1044464 espmxdevkit.menu.ip.lm2f=v2 Lower Memory espmxdevkit.menu.ip.lm2f.build.lwip_include=lwip2/include espmxdevkit.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -1997,6 +2050,8 @@ espmxdevkit.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +espmxdevkit.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espmxdevkit.menu.lvl.SSL=SSL espmxdevkit.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL espmxdevkit.menu.lvl.TLS_MEM=TLS_MEM @@ -2041,24 +2096,20 @@ espmxdevkit.menu.lvl.OOM=OOM espmxdevkit.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM espmxdevkit.menu.lvl.MDNS=MDNS espmxdevkit.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -espmxdevkit.menu.lvl.HWDT=HWDT -espmxdevkit.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -espmxdevkit.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -espmxdevkit.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K espmxdevkit.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS espmxdevkit.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +espmxdevkit.menu.lvl.HWDT=HWDT +espmxdevkit.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT espmxdevkit.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT espmxdevkit.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -espmxdevkit.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -espmxdevkit.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -espmxdevkit.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -espmxdevkit.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS espmxdevkit.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT espmxdevkit.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +espmxdevkit.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +espmxdevkit.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +espmxdevkit.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +espmxdevkit.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K espmxdevkit.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K espmxdevkit.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -espmxdevkit.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -espmxdevkit.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espmxdevkit.menu.wipe.none=Only Sketch espmxdevkit.menu.wipe.none.upload.erase_cmd= espmxdevkit.menu.wipe.sdk=Sketch + WiFi Settings @@ -2093,7 +2144,6 @@ espmxdevkit.menu.eesz.autoflash.upload.maximum_size=1044464 oak.name=Digistump Oak oak.build.board=ESP8266_OAK oak.build.variant=oak -oak.upload.maximum_size=1040368 oak.upload.tool=esptool oak.upload.maximum_data_size=81920 oak.upload.wait_for_upload_port=true @@ -2149,35 +2199,38 @@ oak.upload.resetmethod=--before no_reset --after soft_reset oak.build.flash_mode=dio oak.build.flash_flags=-DFLASHMODE_DIO oak.build.flash_freq=40 -oak.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +oak.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) oak.menu.eesz.4M2M.build.flash_size=4M oak.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -oak.menu.eesz.4M2M.build.spiffs_pagesize=256 oak.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +oak.menu.eesz.4M2M.upload.maximum_size=1044464 oak.menu.eesz.4M2M.build.spiffs_start=0x200000 oak.menu.eesz.4M2M.build.spiffs_end=0x3FA000 oak.menu.eesz.4M2M.build.spiffs_blocksize=8192 -oak.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +oak.menu.eesz.4M2M.build.spiffs_pagesize=256 +oak.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) oak.menu.eesz.4M3M.build.flash_size=4M oak.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -oak.menu.eesz.4M3M.build.spiffs_pagesize=256 oak.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +oak.menu.eesz.4M3M.upload.maximum_size=1044464 oak.menu.eesz.4M3M.build.spiffs_start=0x100000 oak.menu.eesz.4M3M.build.spiffs_end=0x3FA000 oak.menu.eesz.4M3M.build.spiffs_blocksize=8192 -oak.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +oak.menu.eesz.4M3M.build.spiffs_pagesize=256 +oak.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) oak.menu.eesz.4M1M.build.flash_size=4M oak.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -oak.menu.eesz.4M1M.build.spiffs_pagesize=256 oak.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +oak.menu.eesz.4M1M.upload.maximum_size=1044464 oak.menu.eesz.4M1M.build.spiffs_start=0x300000 oak.menu.eesz.4M1M.build.spiffs_end=0x3FA000 oak.menu.eesz.4M1M.build.spiffs_blocksize=8192 -oak.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +oak.menu.eesz.4M1M.build.spiffs_pagesize=256 +oak.menu.eesz.4M=4MB (FS:none OTA:~3052KB) oak.menu.eesz.4M.build.flash_size=4M oak.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -oak.menu.eesz.4M.build.spiffs_pagesize=256 oak.menu.eesz.4M.build.rfcal_addr=0x3FC000 +oak.menu.eesz.4M.upload.maximum_size=1044464 oak.menu.ip.lm2f=v2 Lower Memory oak.menu.ip.lm2f.build.lwip_include=lwip2/include oak.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -2210,6 +2263,8 @@ oak.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +oak.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG oak.menu.lvl.SSL=SSL oak.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL oak.menu.lvl.TLS_MEM=TLS_MEM @@ -2254,24 +2309,20 @@ oak.menu.lvl.OOM=OOM oak.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM oak.menu.lvl.MDNS=MDNS oak.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -oak.menu.lvl.HWDT=HWDT -oak.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -oak.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -oak.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K oak.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS oak.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +oak.menu.lvl.HWDT=HWDT +oak.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT oak.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT oak.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -oak.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -oak.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -oak.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -oak.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS oak.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT oak.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +oak.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +oak.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +oak.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +oak.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K oak.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K oak.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -oak.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -oak.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG oak.menu.wipe.none=Only Sketch oak.menu.wipe.none.upload.erase_cmd= oak.menu.wipe.sdk=Sketch + WiFi Settings @@ -2369,35 +2420,38 @@ espduino.menu.non32xfer.safe.build.non32xferflags=-DNON32XFER_HANDLER espduino.build.flash_mode=dio espduino.build.flash_flags=-DFLASHMODE_DIO espduino.build.flash_freq=40 -espduino.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +espduino.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) espduino.menu.eesz.4M2M.build.flash_size=4M espduino.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -espduino.menu.eesz.4M2M.build.spiffs_pagesize=256 espduino.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +espduino.menu.eesz.4M2M.upload.maximum_size=1044464 espduino.menu.eesz.4M2M.build.spiffs_start=0x200000 espduino.menu.eesz.4M2M.build.spiffs_end=0x3FA000 espduino.menu.eesz.4M2M.build.spiffs_blocksize=8192 -espduino.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +espduino.menu.eesz.4M2M.build.spiffs_pagesize=256 +espduino.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) espduino.menu.eesz.4M3M.build.flash_size=4M espduino.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -espduino.menu.eesz.4M3M.build.spiffs_pagesize=256 espduino.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +espduino.menu.eesz.4M3M.upload.maximum_size=1044464 espduino.menu.eesz.4M3M.build.spiffs_start=0x100000 espduino.menu.eesz.4M3M.build.spiffs_end=0x3FA000 espduino.menu.eesz.4M3M.build.spiffs_blocksize=8192 -espduino.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +espduino.menu.eesz.4M3M.build.spiffs_pagesize=256 +espduino.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) espduino.menu.eesz.4M1M.build.flash_size=4M espduino.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -espduino.menu.eesz.4M1M.build.spiffs_pagesize=256 espduino.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +espduino.menu.eesz.4M1M.upload.maximum_size=1044464 espduino.menu.eesz.4M1M.build.spiffs_start=0x300000 espduino.menu.eesz.4M1M.build.spiffs_end=0x3FA000 espduino.menu.eesz.4M1M.build.spiffs_blocksize=8192 -espduino.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +espduino.menu.eesz.4M1M.build.spiffs_pagesize=256 +espduino.menu.eesz.4M=4MB (FS:none OTA:~3052KB) espduino.menu.eesz.4M.build.flash_size=4M espduino.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -espduino.menu.eesz.4M.build.spiffs_pagesize=256 espduino.menu.eesz.4M.build.rfcal_addr=0x3FC000 +espduino.menu.eesz.4M.upload.maximum_size=1044464 espduino.menu.ip.lm2f=v2 Lower Memory espduino.menu.ip.lm2f.build.lwip_include=lwip2/include espduino.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -2430,6 +2484,8 @@ espduino.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +espduino.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espduino.menu.lvl.SSL=SSL espduino.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL espduino.menu.lvl.TLS_MEM=TLS_MEM @@ -2474,24 +2530,20 @@ espduino.menu.lvl.OOM=OOM espduino.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM espduino.menu.lvl.MDNS=MDNS espduino.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -espduino.menu.lvl.HWDT=HWDT -espduino.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -espduino.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -espduino.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K espduino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS espduino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +espduino.menu.lvl.HWDT=HWDT +espduino.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT espduino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT espduino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -espduino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -espduino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -espduino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -espduino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS espduino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT espduino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +espduino.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +espduino.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +espduino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +espduino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K espduino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K espduino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -espduino.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -espduino.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espduino.menu.wipe.none=Only Sketch espduino.menu.wipe.none.upload.erase_cmd= espduino.menu.wipe.sdk=Sketch + WiFi Settings @@ -2581,35 +2633,38 @@ espectro.upload.resetmethod=--before default_reset --after hard_reset espectro.build.flash_mode=dio espectro.build.flash_flags=-DFLASHMODE_DIO espectro.build.flash_freq=40 -espectro.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +espectro.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) espectro.menu.eesz.4M2M.build.flash_size=4M espectro.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -espectro.menu.eesz.4M2M.build.spiffs_pagesize=256 espectro.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +espectro.menu.eesz.4M2M.upload.maximum_size=1044464 espectro.menu.eesz.4M2M.build.spiffs_start=0x200000 espectro.menu.eesz.4M2M.build.spiffs_end=0x3FA000 espectro.menu.eesz.4M2M.build.spiffs_blocksize=8192 -espectro.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +espectro.menu.eesz.4M2M.build.spiffs_pagesize=256 +espectro.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) espectro.menu.eesz.4M3M.build.flash_size=4M espectro.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -espectro.menu.eesz.4M3M.build.spiffs_pagesize=256 espectro.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +espectro.menu.eesz.4M3M.upload.maximum_size=1044464 espectro.menu.eesz.4M3M.build.spiffs_start=0x100000 espectro.menu.eesz.4M3M.build.spiffs_end=0x3FA000 espectro.menu.eesz.4M3M.build.spiffs_blocksize=8192 -espectro.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +espectro.menu.eesz.4M3M.build.spiffs_pagesize=256 +espectro.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) espectro.menu.eesz.4M1M.build.flash_size=4M espectro.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -espectro.menu.eesz.4M1M.build.spiffs_pagesize=256 espectro.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +espectro.menu.eesz.4M1M.upload.maximum_size=1044464 espectro.menu.eesz.4M1M.build.spiffs_start=0x300000 espectro.menu.eesz.4M1M.build.spiffs_end=0x3FA000 espectro.menu.eesz.4M1M.build.spiffs_blocksize=8192 -espectro.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +espectro.menu.eesz.4M1M.build.spiffs_pagesize=256 +espectro.menu.eesz.4M=4MB (FS:none OTA:~3052KB) espectro.menu.eesz.4M.build.flash_size=4M espectro.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -espectro.menu.eesz.4M.build.spiffs_pagesize=256 espectro.menu.eesz.4M.build.rfcal_addr=0x3FC000 +espectro.menu.eesz.4M.upload.maximum_size=1044464 espectro.menu.ip.lm2f=v2 Lower Memory espectro.menu.ip.lm2f.build.lwip_include=lwip2/include espectro.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -2642,6 +2697,8 @@ espectro.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +espectro.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espectro.menu.lvl.SSL=SSL espectro.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL espectro.menu.lvl.TLS_MEM=TLS_MEM @@ -2686,24 +2743,20 @@ espectro.menu.lvl.OOM=OOM espectro.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM espectro.menu.lvl.MDNS=MDNS espectro.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -espectro.menu.lvl.HWDT=HWDT -espectro.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -espectro.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -espectro.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K espectro.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS espectro.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +espectro.menu.lvl.HWDT=HWDT +espectro.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT espectro.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT espectro.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -espectro.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -espectro.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -espectro.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -espectro.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS espectro.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT espectro.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +espectro.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +espectro.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +espectro.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +espectro.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K espectro.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K espectro.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -espectro.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -espectro.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espectro.menu.wipe.none=Only Sketch espectro.menu.wipe.none.upload.erase_cmd= espectro.menu.wipe.sdk=Sketch + WiFi Settings @@ -2796,35 +2849,38 @@ espino.menu.ResetMethod.ck.upload.resetmethod=--before no_reset --after soft_res espino.build.flash_mode=qio espino.build.flash_flags=-DFLASHMODE_QIO espino.build.flash_freq=40 -espino.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +espino.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) espino.menu.eesz.4M2M.build.flash_size=4M espino.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -espino.menu.eesz.4M2M.build.spiffs_pagesize=256 espino.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +espino.menu.eesz.4M2M.upload.maximum_size=1044464 espino.menu.eesz.4M2M.build.spiffs_start=0x200000 espino.menu.eesz.4M2M.build.spiffs_end=0x3FA000 espino.menu.eesz.4M2M.build.spiffs_blocksize=8192 -espino.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +espino.menu.eesz.4M2M.build.spiffs_pagesize=256 +espino.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) espino.menu.eesz.4M3M.build.flash_size=4M espino.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -espino.menu.eesz.4M3M.build.spiffs_pagesize=256 espino.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +espino.menu.eesz.4M3M.upload.maximum_size=1044464 espino.menu.eesz.4M3M.build.spiffs_start=0x100000 espino.menu.eesz.4M3M.build.spiffs_end=0x3FA000 espino.menu.eesz.4M3M.build.spiffs_blocksize=8192 -espino.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +espino.menu.eesz.4M3M.build.spiffs_pagesize=256 +espino.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) espino.menu.eesz.4M1M.build.flash_size=4M espino.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -espino.menu.eesz.4M1M.build.spiffs_pagesize=256 espino.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +espino.menu.eesz.4M1M.upload.maximum_size=1044464 espino.menu.eesz.4M1M.build.spiffs_start=0x300000 espino.menu.eesz.4M1M.build.spiffs_end=0x3FA000 espino.menu.eesz.4M1M.build.spiffs_blocksize=8192 -espino.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +espino.menu.eesz.4M1M.build.spiffs_pagesize=256 +espino.menu.eesz.4M=4MB (FS:none OTA:~3052KB) espino.menu.eesz.4M.build.flash_size=4M espino.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -espino.menu.eesz.4M.build.spiffs_pagesize=256 espino.menu.eesz.4M.build.rfcal_addr=0x3FC000 +espino.menu.eesz.4M.upload.maximum_size=1044464 espino.menu.ip.lm2f=v2 Lower Memory espino.menu.ip.lm2f.build.lwip_include=lwip2/include espino.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -2857,6 +2913,8 @@ espino.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +espino.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espino.menu.lvl.SSL=SSL espino.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL espino.menu.lvl.TLS_MEM=TLS_MEM @@ -2901,24 +2959,20 @@ espino.menu.lvl.OOM=OOM espino.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM espino.menu.lvl.MDNS=MDNS espino.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -espino.menu.lvl.HWDT=HWDT -espino.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -espino.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -espino.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K espino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS espino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +espino.menu.lvl.HWDT=HWDT +espino.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT espino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT espino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -espino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -espino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -espino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -espino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS espino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT espino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +espino.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +espino.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +espino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +espino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K espino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K espino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -espino.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -espino.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espino.menu.wipe.none=Only Sketch espino.menu.wipe.none.upload.erase_cmd= espino.menu.wipe.sdk=Sketch + WiFi Settings @@ -3007,35 +3061,38 @@ espresso_lite_v1.menu.non32xfer.safe.build.non32xferflags=-DNON32XFER_HANDLER espresso_lite_v1.build.flash_mode=dio espresso_lite_v1.build.flash_flags=-DFLASHMODE_DIO espresso_lite_v1.build.flash_freq=40 -espresso_lite_v1.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +espresso_lite_v1.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) espresso_lite_v1.menu.eesz.4M2M.build.flash_size=4M espresso_lite_v1.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -espresso_lite_v1.menu.eesz.4M2M.build.spiffs_pagesize=256 espresso_lite_v1.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +espresso_lite_v1.menu.eesz.4M2M.upload.maximum_size=1044464 espresso_lite_v1.menu.eesz.4M2M.build.spiffs_start=0x200000 espresso_lite_v1.menu.eesz.4M2M.build.spiffs_end=0x3FA000 espresso_lite_v1.menu.eesz.4M2M.build.spiffs_blocksize=8192 -espresso_lite_v1.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +espresso_lite_v1.menu.eesz.4M2M.build.spiffs_pagesize=256 +espresso_lite_v1.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) espresso_lite_v1.menu.eesz.4M3M.build.flash_size=4M espresso_lite_v1.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -espresso_lite_v1.menu.eesz.4M3M.build.spiffs_pagesize=256 espresso_lite_v1.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +espresso_lite_v1.menu.eesz.4M3M.upload.maximum_size=1044464 espresso_lite_v1.menu.eesz.4M3M.build.spiffs_start=0x100000 espresso_lite_v1.menu.eesz.4M3M.build.spiffs_end=0x3FA000 espresso_lite_v1.menu.eesz.4M3M.build.spiffs_blocksize=8192 -espresso_lite_v1.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +espresso_lite_v1.menu.eesz.4M3M.build.spiffs_pagesize=256 +espresso_lite_v1.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) espresso_lite_v1.menu.eesz.4M1M.build.flash_size=4M espresso_lite_v1.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -espresso_lite_v1.menu.eesz.4M1M.build.spiffs_pagesize=256 espresso_lite_v1.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +espresso_lite_v1.menu.eesz.4M1M.upload.maximum_size=1044464 espresso_lite_v1.menu.eesz.4M1M.build.spiffs_start=0x300000 espresso_lite_v1.menu.eesz.4M1M.build.spiffs_end=0x3FA000 espresso_lite_v1.menu.eesz.4M1M.build.spiffs_blocksize=8192 -espresso_lite_v1.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +espresso_lite_v1.menu.eesz.4M1M.build.spiffs_pagesize=256 +espresso_lite_v1.menu.eesz.4M=4MB (FS:none OTA:~3052KB) espresso_lite_v1.menu.eesz.4M.build.flash_size=4M espresso_lite_v1.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -espresso_lite_v1.menu.eesz.4M.build.spiffs_pagesize=256 espresso_lite_v1.menu.eesz.4M.build.rfcal_addr=0x3FC000 +espresso_lite_v1.menu.eesz.4M.upload.maximum_size=1044464 espresso_lite_v1.menu.ResetMethod.nodemcu=dtr (aka nodemcu) espresso_lite_v1.menu.ResetMethod.nodemcu.upload.resetmethod=--before default_reset --after hard_reset espresso_lite_v1.menu.ResetMethod.ck=no dtr (aka ck) @@ -3072,6 +3129,8 @@ espresso_lite_v1.menu.dbg.Serial1=Serial1 espresso_lite_v1.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 espresso_lite_v1.menu.lvl.None____=None espresso_lite_v1.menu.lvl.None____.build.debug_level= +espresso_lite_v1.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +espresso_lite_v1.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG 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 @@ -3116,24 +3175,20 @@ espresso_lite_v1.menu.lvl.OOM=OOM espresso_lite_v1.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM espresso_lite_v1.menu.lvl.MDNS=MDNS espresso_lite_v1.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -espresso_lite_v1.menu.lvl.HWDT=HWDT -espresso_lite_v1.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -espresso_lite_v1.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -espresso_lite_v1.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K espresso_lite_v1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS espresso_lite_v1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +espresso_lite_v1.menu.lvl.HWDT=HWDT +espresso_lite_v1.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT espresso_lite_v1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT espresso_lite_v1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -espresso_lite_v1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -espresso_lite_v1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -espresso_lite_v1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -espresso_lite_v1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS espresso_lite_v1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT espresso_lite_v1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +espresso_lite_v1.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +espresso_lite_v1.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +espresso_lite_v1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +espresso_lite_v1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K espresso_lite_v1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K espresso_lite_v1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -espresso_lite_v1.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -espresso_lite_v1.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espresso_lite_v1.menu.wipe.none=Only Sketch espresso_lite_v1.menu.wipe.none.upload.erase_cmd= espresso_lite_v1.menu.wipe.sdk=Sketch + WiFi Settings @@ -3222,35 +3277,38 @@ espresso_lite_v2.menu.non32xfer.safe.build.non32xferflags=-DNON32XFER_HANDLER espresso_lite_v2.build.flash_mode=dio espresso_lite_v2.build.flash_flags=-DFLASHMODE_DIO espresso_lite_v2.build.flash_freq=40 -espresso_lite_v2.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +espresso_lite_v2.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) espresso_lite_v2.menu.eesz.4M2M.build.flash_size=4M espresso_lite_v2.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -espresso_lite_v2.menu.eesz.4M2M.build.spiffs_pagesize=256 espresso_lite_v2.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +espresso_lite_v2.menu.eesz.4M2M.upload.maximum_size=1044464 espresso_lite_v2.menu.eesz.4M2M.build.spiffs_start=0x200000 espresso_lite_v2.menu.eesz.4M2M.build.spiffs_end=0x3FA000 espresso_lite_v2.menu.eesz.4M2M.build.spiffs_blocksize=8192 -espresso_lite_v2.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +espresso_lite_v2.menu.eesz.4M2M.build.spiffs_pagesize=256 +espresso_lite_v2.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) espresso_lite_v2.menu.eesz.4M3M.build.flash_size=4M espresso_lite_v2.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -espresso_lite_v2.menu.eesz.4M3M.build.spiffs_pagesize=256 espresso_lite_v2.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +espresso_lite_v2.menu.eesz.4M3M.upload.maximum_size=1044464 espresso_lite_v2.menu.eesz.4M3M.build.spiffs_start=0x100000 espresso_lite_v2.menu.eesz.4M3M.build.spiffs_end=0x3FA000 espresso_lite_v2.menu.eesz.4M3M.build.spiffs_blocksize=8192 -espresso_lite_v2.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +espresso_lite_v2.menu.eesz.4M3M.build.spiffs_pagesize=256 +espresso_lite_v2.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) espresso_lite_v2.menu.eesz.4M1M.build.flash_size=4M espresso_lite_v2.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -espresso_lite_v2.menu.eesz.4M1M.build.spiffs_pagesize=256 espresso_lite_v2.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +espresso_lite_v2.menu.eesz.4M1M.upload.maximum_size=1044464 espresso_lite_v2.menu.eesz.4M1M.build.spiffs_start=0x300000 espresso_lite_v2.menu.eesz.4M1M.build.spiffs_end=0x3FA000 espresso_lite_v2.menu.eesz.4M1M.build.spiffs_blocksize=8192 -espresso_lite_v2.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +espresso_lite_v2.menu.eesz.4M1M.build.spiffs_pagesize=256 +espresso_lite_v2.menu.eesz.4M=4MB (FS:none OTA:~3052KB) espresso_lite_v2.menu.eesz.4M.build.flash_size=4M espresso_lite_v2.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -espresso_lite_v2.menu.eesz.4M.build.spiffs_pagesize=256 espresso_lite_v2.menu.eesz.4M.build.rfcal_addr=0x3FC000 +espresso_lite_v2.menu.eesz.4M.upload.maximum_size=1044464 espresso_lite_v2.menu.ResetMethod.nodemcu=dtr (aka nodemcu) espresso_lite_v2.menu.ResetMethod.nodemcu.upload.resetmethod=--before default_reset --after hard_reset espresso_lite_v2.menu.ResetMethod.ck=no dtr (aka ck) @@ -3287,6 +3345,8 @@ espresso_lite_v2.menu.dbg.Serial1=Serial1 espresso_lite_v2.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 espresso_lite_v2.menu.lvl.None____=None espresso_lite_v2.menu.lvl.None____.build.debug_level= +espresso_lite_v2.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +espresso_lite_v2.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG 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 @@ -3331,24 +3391,20 @@ espresso_lite_v2.menu.lvl.OOM=OOM espresso_lite_v2.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM espresso_lite_v2.menu.lvl.MDNS=MDNS espresso_lite_v2.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -espresso_lite_v2.menu.lvl.HWDT=HWDT -espresso_lite_v2.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -espresso_lite_v2.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -espresso_lite_v2.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K espresso_lite_v2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS espresso_lite_v2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +espresso_lite_v2.menu.lvl.HWDT=HWDT +espresso_lite_v2.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT espresso_lite_v2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT espresso_lite_v2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -espresso_lite_v2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -espresso_lite_v2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -espresso_lite_v2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -espresso_lite_v2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS espresso_lite_v2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT espresso_lite_v2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +espresso_lite_v2.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +espresso_lite_v2.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +espresso_lite_v2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +espresso_lite_v2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K espresso_lite_v2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K espresso_lite_v2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -espresso_lite_v2.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -espresso_lite_v2.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espresso_lite_v2.menu.wipe.none=Only Sketch espresso_lite_v2.menu.wipe.none.upload.erase_cmd= espresso_lite_v2.menu.wipe.sdk=Sketch + WiFi Settings @@ -3447,67 +3503,74 @@ sonoff.upload.resetmethod=--before no_reset --after soft_reset sonoff.build.flash_mode=dout sonoff.build.flash_flags=-DFLASHMODE_DOUT sonoff.build.flash_freq=40 -sonoff.menu.eesz.1M64=1MB (FS:64KB OTA:~470KB) +sonoff.menu.eesz.1M64=1MB (FS:64KB OTA:~467KB) sonoff.menu.eesz.1M64.build.flash_size=1M sonoff.menu.eesz.1M64.build.flash_ld=eagle.flash.1m64.ld -sonoff.menu.eesz.1M64.build.spiffs_pagesize=256 sonoff.menu.eesz.1M64.build.rfcal_addr=0xFC000 +sonoff.menu.eesz.1M64.upload.maximum_size=1044464 sonoff.menu.eesz.1M64.build.spiffs_start=0xEB000 sonoff.menu.eesz.1M64.build.spiffs_end=0xFB000 sonoff.menu.eesz.1M64.build.spiffs_blocksize=4096 -sonoff.menu.eesz.1M128=1MB (FS:128KB OTA:~438KB) +sonoff.menu.eesz.1M64.build.spiffs_pagesize=256 +sonoff.menu.eesz.1M128=1MB (FS:128KB OTA:~435KB) sonoff.menu.eesz.1M128.build.flash_size=1M sonoff.menu.eesz.1M128.build.flash_ld=eagle.flash.1m128.ld -sonoff.menu.eesz.1M128.build.spiffs_pagesize=256 sonoff.menu.eesz.1M128.build.rfcal_addr=0xFC000 +sonoff.menu.eesz.1M128.upload.maximum_size=1044464 sonoff.menu.eesz.1M128.build.spiffs_start=0xDB000 sonoff.menu.eesz.1M128.build.spiffs_end=0xFB000 sonoff.menu.eesz.1M128.build.spiffs_blocksize=4096 -sonoff.menu.eesz.1M144=1MB (FS:144KB OTA:~430KB) +sonoff.menu.eesz.1M128.build.spiffs_pagesize=256 +sonoff.menu.eesz.1M144=1MB (FS:144KB OTA:~427KB) sonoff.menu.eesz.1M144.build.flash_size=1M sonoff.menu.eesz.1M144.build.flash_ld=eagle.flash.1m144.ld -sonoff.menu.eesz.1M144.build.spiffs_pagesize=256 sonoff.menu.eesz.1M144.build.rfcal_addr=0xFC000 +sonoff.menu.eesz.1M144.upload.maximum_size=1044464 sonoff.menu.eesz.1M144.build.spiffs_start=0xD7000 sonoff.menu.eesz.1M144.build.spiffs_end=0xFB000 sonoff.menu.eesz.1M144.build.spiffs_blocksize=4096 -sonoff.menu.eesz.1M160=1MB (FS:160KB OTA:~422KB) +sonoff.menu.eesz.1M144.build.spiffs_pagesize=256 +sonoff.menu.eesz.1M160=1MB (FS:160KB OTA:~419KB) sonoff.menu.eesz.1M160.build.flash_size=1M sonoff.menu.eesz.1M160.build.flash_ld=eagle.flash.1m160.ld -sonoff.menu.eesz.1M160.build.spiffs_pagesize=256 sonoff.menu.eesz.1M160.build.rfcal_addr=0xFC000 +sonoff.menu.eesz.1M160.upload.maximum_size=1044464 sonoff.menu.eesz.1M160.build.spiffs_start=0xD3000 sonoff.menu.eesz.1M160.build.spiffs_end=0xFB000 sonoff.menu.eesz.1M160.build.spiffs_blocksize=4096 -sonoff.menu.eesz.1M192=1MB (FS:192KB OTA:~406KB) +sonoff.menu.eesz.1M160.build.spiffs_pagesize=256 +sonoff.menu.eesz.1M192=1MB (FS:192KB OTA:~403KB) sonoff.menu.eesz.1M192.build.flash_size=1M sonoff.menu.eesz.1M192.build.flash_ld=eagle.flash.1m192.ld -sonoff.menu.eesz.1M192.build.spiffs_pagesize=256 sonoff.menu.eesz.1M192.build.rfcal_addr=0xFC000 +sonoff.menu.eesz.1M192.upload.maximum_size=1044464 sonoff.menu.eesz.1M192.build.spiffs_start=0xCB000 sonoff.menu.eesz.1M192.build.spiffs_end=0xFB000 sonoff.menu.eesz.1M192.build.spiffs_blocksize=4096 -sonoff.menu.eesz.1M256=1MB (FS:256KB OTA:~374KB) +sonoff.menu.eesz.1M192.build.spiffs_pagesize=256 +sonoff.menu.eesz.1M256=1MB (FS:256KB OTA:~371KB) sonoff.menu.eesz.1M256.build.flash_size=1M sonoff.menu.eesz.1M256.build.flash_ld=eagle.flash.1m256.ld -sonoff.menu.eesz.1M256.build.spiffs_pagesize=256 sonoff.menu.eesz.1M256.build.rfcal_addr=0xFC000 +sonoff.menu.eesz.1M256.upload.maximum_size=1044464 sonoff.menu.eesz.1M256.build.spiffs_start=0xBB000 sonoff.menu.eesz.1M256.build.spiffs_end=0xFB000 sonoff.menu.eesz.1M256.build.spiffs_blocksize=4096 -sonoff.menu.eesz.1M512=1MB (FS:512KB OTA:~246KB) +sonoff.menu.eesz.1M256.build.spiffs_pagesize=256 +sonoff.menu.eesz.1M512=1MB (FS:512KB OTA:~243KB) sonoff.menu.eesz.1M512.build.flash_size=1M sonoff.menu.eesz.1M512.build.flash_ld=eagle.flash.1m512.ld -sonoff.menu.eesz.1M512.build.spiffs_pagesize=256 sonoff.menu.eesz.1M512.build.rfcal_addr=0xFC000 +sonoff.menu.eesz.1M512.upload.maximum_size=1044464 sonoff.menu.eesz.1M512.build.spiffs_start=0x7B000 sonoff.menu.eesz.1M512.build.spiffs_end=0xFB000 sonoff.menu.eesz.1M512.build.spiffs_blocksize=8192 -sonoff.menu.eesz.1M=1MB (FS:none OTA:~502KB) +sonoff.menu.eesz.1M512.build.spiffs_pagesize=256 +sonoff.menu.eesz.1M=1MB (FS:none OTA:~499KB) sonoff.menu.eesz.1M.build.flash_size=1M sonoff.menu.eesz.1M.build.flash_ld=eagle.flash.1m.ld -sonoff.menu.eesz.1M.build.spiffs_pagesize=256 sonoff.menu.eesz.1M.build.rfcal_addr=0xFC000 +sonoff.menu.eesz.1M.upload.maximum_size=1044464 sonoff.menu.ip.lm2f=v2 Lower Memory sonoff.menu.ip.lm2f.build.lwip_include=lwip2/include sonoff.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -3540,6 +3603,8 @@ sonoff.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +sonoff.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG sonoff.menu.lvl.SSL=SSL sonoff.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL sonoff.menu.lvl.TLS_MEM=TLS_MEM @@ -3584,24 +3649,20 @@ sonoff.menu.lvl.OOM=OOM sonoff.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM sonoff.menu.lvl.MDNS=MDNS sonoff.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -sonoff.menu.lvl.HWDT=HWDT -sonoff.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -sonoff.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -sonoff.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K sonoff.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS sonoff.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +sonoff.menu.lvl.HWDT=HWDT +sonoff.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT sonoff.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT sonoff.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -sonoff.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -sonoff.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -sonoff.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -sonoff.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS sonoff.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT sonoff.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +sonoff.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +sonoff.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +sonoff.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +sonoff.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K sonoff.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K sonoff.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -sonoff.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -sonoff.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG sonoff.menu.wipe.none=Only Sketch sonoff.menu.wipe.none.upload.erase_cmd= sonoff.menu.wipe.sdk=Sketch + WiFi Settings @@ -3691,35 +3752,38 @@ inventone.upload.resetmethod=--before default_reset --after hard_reset inventone.build.flash_mode=dio inventone.build.flash_flags=-DFLASHMODE_DIO inventone.build.flash_freq=40 -inventone.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +inventone.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) inventone.menu.eesz.4M2M.build.flash_size=4M inventone.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -inventone.menu.eesz.4M2M.build.spiffs_pagesize=256 inventone.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +inventone.menu.eesz.4M2M.upload.maximum_size=1044464 inventone.menu.eesz.4M2M.build.spiffs_start=0x200000 inventone.menu.eesz.4M2M.build.spiffs_end=0x3FA000 inventone.menu.eesz.4M2M.build.spiffs_blocksize=8192 -inventone.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +inventone.menu.eesz.4M2M.build.spiffs_pagesize=256 +inventone.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) inventone.menu.eesz.4M3M.build.flash_size=4M inventone.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -inventone.menu.eesz.4M3M.build.spiffs_pagesize=256 inventone.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +inventone.menu.eesz.4M3M.upload.maximum_size=1044464 inventone.menu.eesz.4M3M.build.spiffs_start=0x100000 inventone.menu.eesz.4M3M.build.spiffs_end=0x3FA000 inventone.menu.eesz.4M3M.build.spiffs_blocksize=8192 -inventone.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +inventone.menu.eesz.4M3M.build.spiffs_pagesize=256 +inventone.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) inventone.menu.eesz.4M1M.build.flash_size=4M inventone.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -inventone.menu.eesz.4M1M.build.spiffs_pagesize=256 inventone.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +inventone.menu.eesz.4M1M.upload.maximum_size=1044464 inventone.menu.eesz.4M1M.build.spiffs_start=0x300000 inventone.menu.eesz.4M1M.build.spiffs_end=0x3FA000 inventone.menu.eesz.4M1M.build.spiffs_blocksize=8192 -inventone.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +inventone.menu.eesz.4M1M.build.spiffs_pagesize=256 +inventone.menu.eesz.4M=4MB (FS:none OTA:~3052KB) inventone.menu.eesz.4M.build.flash_size=4M inventone.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -inventone.menu.eesz.4M.build.spiffs_pagesize=256 inventone.menu.eesz.4M.build.rfcal_addr=0x3FC000 +inventone.menu.eesz.4M.upload.maximum_size=1044464 inventone.menu.ip.lm2f=v2 Lower Memory inventone.menu.ip.lm2f.build.lwip_include=lwip2/include inventone.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -3752,6 +3816,8 @@ inventone.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +inventone.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG inventone.menu.lvl.SSL=SSL inventone.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL inventone.menu.lvl.TLS_MEM=TLS_MEM @@ -3796,24 +3862,20 @@ inventone.menu.lvl.OOM=OOM inventone.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM inventone.menu.lvl.MDNS=MDNS inventone.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -inventone.menu.lvl.HWDT=HWDT -inventone.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -inventone.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -inventone.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K inventone.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS inventone.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +inventone.menu.lvl.HWDT=HWDT +inventone.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT inventone.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT inventone.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -inventone.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -inventone.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -inventone.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -inventone.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS inventone.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT inventone.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +inventone.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +inventone.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +inventone.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +inventone.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K inventone.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K inventone.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -inventone.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -inventone.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG inventone.menu.wipe.none=Only Sketch inventone.menu.wipe.none.upload.erase_cmd= inventone.menu.wipe.sdk=Sketch + WiFi Settings @@ -3903,35 +3965,38 @@ d1_mini.upload.resetmethod=--before default_reset --after hard_reset d1_mini.build.flash_mode=dio d1_mini.build.flash_flags=-DFLASHMODE_DIO d1_mini.build.flash_freq=40 -d1_mini.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +d1_mini.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) d1_mini.menu.eesz.4M2M.build.flash_size=4M d1_mini.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -d1_mini.menu.eesz.4M2M.build.spiffs_pagesize=256 d1_mini.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +d1_mini.menu.eesz.4M2M.upload.maximum_size=1044464 d1_mini.menu.eesz.4M2M.build.spiffs_start=0x200000 d1_mini.menu.eesz.4M2M.build.spiffs_end=0x3FA000 d1_mini.menu.eesz.4M2M.build.spiffs_blocksize=8192 -d1_mini.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +d1_mini.menu.eesz.4M2M.build.spiffs_pagesize=256 +d1_mini.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) d1_mini.menu.eesz.4M3M.build.flash_size=4M d1_mini.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -d1_mini.menu.eesz.4M3M.build.spiffs_pagesize=256 d1_mini.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +d1_mini.menu.eesz.4M3M.upload.maximum_size=1044464 d1_mini.menu.eesz.4M3M.build.spiffs_start=0x100000 d1_mini.menu.eesz.4M3M.build.spiffs_end=0x3FA000 d1_mini.menu.eesz.4M3M.build.spiffs_blocksize=8192 -d1_mini.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +d1_mini.menu.eesz.4M3M.build.spiffs_pagesize=256 +d1_mini.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) d1_mini.menu.eesz.4M1M.build.flash_size=4M d1_mini.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -d1_mini.menu.eesz.4M1M.build.spiffs_pagesize=256 d1_mini.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +d1_mini.menu.eesz.4M1M.upload.maximum_size=1044464 d1_mini.menu.eesz.4M1M.build.spiffs_start=0x300000 d1_mini.menu.eesz.4M1M.build.spiffs_end=0x3FA000 d1_mini.menu.eesz.4M1M.build.spiffs_blocksize=8192 -d1_mini.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +d1_mini.menu.eesz.4M1M.build.spiffs_pagesize=256 +d1_mini.menu.eesz.4M=4MB (FS:none OTA:~3052KB) d1_mini.menu.eesz.4M.build.flash_size=4M d1_mini.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -d1_mini.menu.eesz.4M.build.spiffs_pagesize=256 d1_mini.menu.eesz.4M.build.rfcal_addr=0x3FC000 +d1_mini.menu.eesz.4M.upload.maximum_size=1044464 d1_mini.menu.ip.lm2f=v2 Lower Memory d1_mini.menu.ip.lm2f.build.lwip_include=lwip2/include d1_mini.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -3964,6 +4029,8 @@ d1_mini.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +d1_mini.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG 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 @@ -4008,24 +4075,20 @@ d1_mini.menu.lvl.OOM=OOM d1_mini.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM d1_mini.menu.lvl.MDNS=MDNS d1_mini.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -d1_mini.menu.lvl.HWDT=HWDT -d1_mini.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -d1_mini.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -d1_mini.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K d1_mini.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS d1_mini.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +d1_mini.menu.lvl.HWDT=HWDT +d1_mini.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT d1_mini.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT d1_mini.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -d1_mini.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -d1_mini.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -d1_mini.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -d1_mini.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS d1_mini.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT d1_mini.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +d1_mini.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +d1_mini.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +d1_mini.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +d1_mini.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K d1_mini.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K d1_mini.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -d1_mini.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -d1_mini.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG d1_mini.menu.wipe.none=Only Sketch d1_mini.menu.wipe.none.upload.erase_cmd= d1_mini.menu.wipe.sdk=Sketch + WiFi Settings @@ -4132,35 +4195,38 @@ d1_mini_clone.menu.FlashFreq.20=20MHz d1_mini_clone.menu.FlashFreq.20.build.flash_freq=20 d1_mini_clone.menu.FlashFreq.26=26MHz d1_mini_clone.menu.FlashFreq.26.build.flash_freq=26 -d1_mini_clone.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +d1_mini_clone.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) d1_mini_clone.menu.eesz.4M2M.build.flash_size=4M d1_mini_clone.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -d1_mini_clone.menu.eesz.4M2M.build.spiffs_pagesize=256 d1_mini_clone.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +d1_mini_clone.menu.eesz.4M2M.upload.maximum_size=1044464 d1_mini_clone.menu.eesz.4M2M.build.spiffs_start=0x200000 d1_mini_clone.menu.eesz.4M2M.build.spiffs_end=0x3FA000 d1_mini_clone.menu.eesz.4M2M.build.spiffs_blocksize=8192 -d1_mini_clone.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +d1_mini_clone.menu.eesz.4M2M.build.spiffs_pagesize=256 +d1_mini_clone.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) d1_mini_clone.menu.eesz.4M3M.build.flash_size=4M d1_mini_clone.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -d1_mini_clone.menu.eesz.4M3M.build.spiffs_pagesize=256 d1_mini_clone.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +d1_mini_clone.menu.eesz.4M3M.upload.maximum_size=1044464 d1_mini_clone.menu.eesz.4M3M.build.spiffs_start=0x100000 d1_mini_clone.menu.eesz.4M3M.build.spiffs_end=0x3FA000 d1_mini_clone.menu.eesz.4M3M.build.spiffs_blocksize=8192 -d1_mini_clone.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +d1_mini_clone.menu.eesz.4M3M.build.spiffs_pagesize=256 +d1_mini_clone.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) d1_mini_clone.menu.eesz.4M1M.build.flash_size=4M d1_mini_clone.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -d1_mini_clone.menu.eesz.4M1M.build.spiffs_pagesize=256 d1_mini_clone.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +d1_mini_clone.menu.eesz.4M1M.upload.maximum_size=1044464 d1_mini_clone.menu.eesz.4M1M.build.spiffs_start=0x300000 d1_mini_clone.menu.eesz.4M1M.build.spiffs_end=0x3FA000 d1_mini_clone.menu.eesz.4M1M.build.spiffs_blocksize=8192 -d1_mini_clone.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +d1_mini_clone.menu.eesz.4M1M.build.spiffs_pagesize=256 +d1_mini_clone.menu.eesz.4M=4MB (FS:none OTA:~3052KB) d1_mini_clone.menu.eesz.4M.build.flash_size=4M d1_mini_clone.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -d1_mini_clone.menu.eesz.4M.build.spiffs_pagesize=256 d1_mini_clone.menu.eesz.4M.build.rfcal_addr=0x3FC000 +d1_mini_clone.menu.eesz.4M.upload.maximum_size=1044464 d1_mini_clone.menu.ip.lm2f=v2 Lower Memory d1_mini_clone.menu.ip.lm2f.build.lwip_include=lwip2/include d1_mini_clone.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -4193,6 +4259,8 @@ d1_mini_clone.menu.dbg.Serial1=Serial1 d1_mini_clone.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 d1_mini_clone.menu.lvl.None____=None d1_mini_clone.menu.lvl.None____.build.debug_level= +d1_mini_clone.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +d1_mini_clone.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG 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 @@ -4237,24 +4305,20 @@ d1_mini_clone.menu.lvl.OOM=OOM d1_mini_clone.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM d1_mini_clone.menu.lvl.MDNS=MDNS d1_mini_clone.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -d1_mini_clone.menu.lvl.HWDT=HWDT -d1_mini_clone.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -d1_mini_clone.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -d1_mini_clone.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K d1_mini_clone.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS d1_mini_clone.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +d1_mini_clone.menu.lvl.HWDT=HWDT +d1_mini_clone.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT d1_mini_clone.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT d1_mini_clone.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -d1_mini_clone.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -d1_mini_clone.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -d1_mini_clone.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -d1_mini_clone.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS d1_mini_clone.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT d1_mini_clone.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +d1_mini_clone.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +d1_mini_clone.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +d1_mini_clone.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +d1_mini_clone.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K d1_mini_clone.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K d1_mini_clone.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -d1_mini_clone.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -d1_mini_clone.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG d1_mini_clone.menu.wipe.none=Only Sketch d1_mini_clone.menu.wipe.none.upload.erase_cmd= d1_mini_clone.menu.wipe.sdk=Sketch + WiFi Settings @@ -4344,67 +4408,74 @@ d1_mini_lite.upload.resetmethod=--before default_reset --after hard_reset d1_mini_lite.build.flash_mode=dout d1_mini_lite.build.flash_flags=-DFLASHMODE_DOUT d1_mini_lite.build.flash_freq=40 -d1_mini_lite.menu.eesz.1M64=1MB (FS:64KB OTA:~470KB) +d1_mini_lite.menu.eesz.1M64=1MB (FS:64KB OTA:~467KB) d1_mini_lite.menu.eesz.1M64.build.flash_size=1M d1_mini_lite.menu.eesz.1M64.build.flash_ld=eagle.flash.1m64.ld -d1_mini_lite.menu.eesz.1M64.build.spiffs_pagesize=256 d1_mini_lite.menu.eesz.1M64.build.rfcal_addr=0xFC000 +d1_mini_lite.menu.eesz.1M64.upload.maximum_size=1044464 d1_mini_lite.menu.eesz.1M64.build.spiffs_start=0xEB000 d1_mini_lite.menu.eesz.1M64.build.spiffs_end=0xFB000 d1_mini_lite.menu.eesz.1M64.build.spiffs_blocksize=4096 -d1_mini_lite.menu.eesz.1M128=1MB (FS:128KB OTA:~438KB) +d1_mini_lite.menu.eesz.1M64.build.spiffs_pagesize=256 +d1_mini_lite.menu.eesz.1M128=1MB (FS:128KB OTA:~435KB) d1_mini_lite.menu.eesz.1M128.build.flash_size=1M d1_mini_lite.menu.eesz.1M128.build.flash_ld=eagle.flash.1m128.ld -d1_mini_lite.menu.eesz.1M128.build.spiffs_pagesize=256 d1_mini_lite.menu.eesz.1M128.build.rfcal_addr=0xFC000 +d1_mini_lite.menu.eesz.1M128.upload.maximum_size=1044464 d1_mini_lite.menu.eesz.1M128.build.spiffs_start=0xDB000 d1_mini_lite.menu.eesz.1M128.build.spiffs_end=0xFB000 d1_mini_lite.menu.eesz.1M128.build.spiffs_blocksize=4096 -d1_mini_lite.menu.eesz.1M144=1MB (FS:144KB OTA:~430KB) +d1_mini_lite.menu.eesz.1M128.build.spiffs_pagesize=256 +d1_mini_lite.menu.eesz.1M144=1MB (FS:144KB OTA:~427KB) d1_mini_lite.menu.eesz.1M144.build.flash_size=1M d1_mini_lite.menu.eesz.1M144.build.flash_ld=eagle.flash.1m144.ld -d1_mini_lite.menu.eesz.1M144.build.spiffs_pagesize=256 d1_mini_lite.menu.eesz.1M144.build.rfcal_addr=0xFC000 +d1_mini_lite.menu.eesz.1M144.upload.maximum_size=1044464 d1_mini_lite.menu.eesz.1M144.build.spiffs_start=0xD7000 d1_mini_lite.menu.eesz.1M144.build.spiffs_end=0xFB000 d1_mini_lite.menu.eesz.1M144.build.spiffs_blocksize=4096 -d1_mini_lite.menu.eesz.1M160=1MB (FS:160KB OTA:~422KB) +d1_mini_lite.menu.eesz.1M144.build.spiffs_pagesize=256 +d1_mini_lite.menu.eesz.1M160=1MB (FS:160KB OTA:~419KB) d1_mini_lite.menu.eesz.1M160.build.flash_size=1M d1_mini_lite.menu.eesz.1M160.build.flash_ld=eagle.flash.1m160.ld -d1_mini_lite.menu.eesz.1M160.build.spiffs_pagesize=256 d1_mini_lite.menu.eesz.1M160.build.rfcal_addr=0xFC000 +d1_mini_lite.menu.eesz.1M160.upload.maximum_size=1044464 d1_mini_lite.menu.eesz.1M160.build.spiffs_start=0xD3000 d1_mini_lite.menu.eesz.1M160.build.spiffs_end=0xFB000 d1_mini_lite.menu.eesz.1M160.build.spiffs_blocksize=4096 -d1_mini_lite.menu.eesz.1M192=1MB (FS:192KB OTA:~406KB) +d1_mini_lite.menu.eesz.1M160.build.spiffs_pagesize=256 +d1_mini_lite.menu.eesz.1M192=1MB (FS:192KB OTA:~403KB) d1_mini_lite.menu.eesz.1M192.build.flash_size=1M d1_mini_lite.menu.eesz.1M192.build.flash_ld=eagle.flash.1m192.ld -d1_mini_lite.menu.eesz.1M192.build.spiffs_pagesize=256 d1_mini_lite.menu.eesz.1M192.build.rfcal_addr=0xFC000 +d1_mini_lite.menu.eesz.1M192.upload.maximum_size=1044464 d1_mini_lite.menu.eesz.1M192.build.spiffs_start=0xCB000 d1_mini_lite.menu.eesz.1M192.build.spiffs_end=0xFB000 d1_mini_lite.menu.eesz.1M192.build.spiffs_blocksize=4096 -d1_mini_lite.menu.eesz.1M256=1MB (FS:256KB OTA:~374KB) +d1_mini_lite.menu.eesz.1M192.build.spiffs_pagesize=256 +d1_mini_lite.menu.eesz.1M256=1MB (FS:256KB OTA:~371KB) d1_mini_lite.menu.eesz.1M256.build.flash_size=1M d1_mini_lite.menu.eesz.1M256.build.flash_ld=eagle.flash.1m256.ld -d1_mini_lite.menu.eesz.1M256.build.spiffs_pagesize=256 d1_mini_lite.menu.eesz.1M256.build.rfcal_addr=0xFC000 +d1_mini_lite.menu.eesz.1M256.upload.maximum_size=1044464 d1_mini_lite.menu.eesz.1M256.build.spiffs_start=0xBB000 d1_mini_lite.menu.eesz.1M256.build.spiffs_end=0xFB000 d1_mini_lite.menu.eesz.1M256.build.spiffs_blocksize=4096 -d1_mini_lite.menu.eesz.1M512=1MB (FS:512KB OTA:~246KB) +d1_mini_lite.menu.eesz.1M256.build.spiffs_pagesize=256 +d1_mini_lite.menu.eesz.1M512=1MB (FS:512KB OTA:~243KB) d1_mini_lite.menu.eesz.1M512.build.flash_size=1M d1_mini_lite.menu.eesz.1M512.build.flash_ld=eagle.flash.1m512.ld -d1_mini_lite.menu.eesz.1M512.build.spiffs_pagesize=256 d1_mini_lite.menu.eesz.1M512.build.rfcal_addr=0xFC000 +d1_mini_lite.menu.eesz.1M512.upload.maximum_size=1044464 d1_mini_lite.menu.eesz.1M512.build.spiffs_start=0x7B000 d1_mini_lite.menu.eesz.1M512.build.spiffs_end=0xFB000 d1_mini_lite.menu.eesz.1M512.build.spiffs_blocksize=8192 -d1_mini_lite.menu.eesz.1M=1MB (FS:none OTA:~502KB) +d1_mini_lite.menu.eesz.1M512.build.spiffs_pagesize=256 +d1_mini_lite.menu.eesz.1M=1MB (FS:none OTA:~499KB) d1_mini_lite.menu.eesz.1M.build.flash_size=1M d1_mini_lite.menu.eesz.1M.build.flash_ld=eagle.flash.1m.ld -d1_mini_lite.menu.eesz.1M.build.spiffs_pagesize=256 d1_mini_lite.menu.eesz.1M.build.rfcal_addr=0xFC000 +d1_mini_lite.menu.eesz.1M.upload.maximum_size=1044464 d1_mini_lite.menu.ip.lm2f=v2 Lower Memory d1_mini_lite.menu.ip.lm2f.build.lwip_include=lwip2/include d1_mini_lite.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -4437,6 +4508,8 @@ d1_mini_lite.menu.dbg.Serial1=Serial1 d1_mini_lite.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 d1_mini_lite.menu.lvl.None____=None d1_mini_lite.menu.lvl.None____.build.debug_level= +d1_mini_lite.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +d1_mini_lite.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG 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 @@ -4481,24 +4554,20 @@ d1_mini_lite.menu.lvl.OOM=OOM d1_mini_lite.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM d1_mini_lite.menu.lvl.MDNS=MDNS d1_mini_lite.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -d1_mini_lite.menu.lvl.HWDT=HWDT -d1_mini_lite.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -d1_mini_lite.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -d1_mini_lite.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K d1_mini_lite.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS d1_mini_lite.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +d1_mini_lite.menu.lvl.HWDT=HWDT +d1_mini_lite.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT d1_mini_lite.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT d1_mini_lite.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -d1_mini_lite.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -d1_mini_lite.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -d1_mini_lite.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -d1_mini_lite.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS d1_mini_lite.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT d1_mini_lite.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +d1_mini_lite.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +d1_mini_lite.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +d1_mini_lite.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +d1_mini_lite.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K d1_mini_lite.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K d1_mini_lite.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -d1_mini_lite.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -d1_mini_lite.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG d1_mini_lite.menu.wipe.none=Only Sketch d1_mini_lite.menu.wipe.none.upload.erase_cmd= d1_mini_lite.menu.wipe.sdk=Sketch + WiFi Settings @@ -4588,27 +4657,29 @@ d1_mini_pro.upload.resetmethod=--before default_reset --after hard_reset d1_mini_pro.build.flash_mode=dio d1_mini_pro.build.flash_flags=-DFLASHMODE_DIO d1_mini_pro.build.flash_freq=40 -d1_mini_pro.menu.eesz.16M14M=16MB (FS:14MB OTA:~1019KB) +d1_mini_pro.menu.eesz.16M14M=16MB (FS:13MB OTA:~1MB) d1_mini_pro.menu.eesz.16M14M.build.flash_size=16M d1_mini_pro.menu.eesz.16M14M.build.flash_ld=eagle.flash.16m14m.ld -d1_mini_pro.menu.eesz.16M14M.build.spiffs_pagesize=256 d1_mini_pro.menu.eesz.16M14M.build.rfcal_addr=0xFFC000 +d1_mini_pro.menu.eesz.16M14M.upload.maximum_size=1044464 d1_mini_pro.menu.eesz.16M14M.build.spiffs_start=0x200000 d1_mini_pro.menu.eesz.16M14M.build.spiffs_end=0xFFA000 d1_mini_pro.menu.eesz.16M14M.build.spiffs_blocksize=8192 -d1_mini_pro.menu.eesz.16M15M=16MB (FS:15MB OTA:~512KB) +d1_mini_pro.menu.eesz.16M14M.build.spiffs_pagesize=256 +d1_mini_pro.menu.eesz.16M15M=16MB (FS:14MB OTA:~509KB) d1_mini_pro.menu.eesz.16M15M.build.flash_size=16M d1_mini_pro.menu.eesz.16M15M.build.flash_ld=eagle.flash.16m15m.ld -d1_mini_pro.menu.eesz.16M15M.build.spiffs_pagesize=256 d1_mini_pro.menu.eesz.16M15M.build.rfcal_addr=0xFFC000 +d1_mini_pro.menu.eesz.16M15M.upload.maximum_size=1044464 d1_mini_pro.menu.eesz.16M15M.build.spiffs_start=0x100000 d1_mini_pro.menu.eesz.16M15M.build.spiffs_end=0xFFA000 d1_mini_pro.menu.eesz.16M15M.build.spiffs_blocksize=8192 -d1_mini_pro.menu.eesz.16M=16MB (FS:none OTA:~1019KB) +d1_mini_pro.menu.eesz.16M15M.build.spiffs_pagesize=256 +d1_mini_pro.menu.eesz.16M=16MB (FS:none OTA:~14MB) d1_mini_pro.menu.eesz.16M.build.flash_size=16M d1_mini_pro.menu.eesz.16M.build.flash_ld=eagle.flash.16m.ld -d1_mini_pro.menu.eesz.16M.build.spiffs_pagesize=256 d1_mini_pro.menu.eesz.16M.build.rfcal_addr=0xFFC000 +d1_mini_pro.menu.eesz.16M.upload.maximum_size=1044464 d1_mini_pro.menu.ip.lm2f=v2 Lower Memory d1_mini_pro.menu.ip.lm2f.build.lwip_include=lwip2/include d1_mini_pro.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -4641,6 +4712,8 @@ d1_mini_pro.menu.dbg.Serial1=Serial1 d1_mini_pro.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 d1_mini_pro.menu.lvl.None____=None d1_mini_pro.menu.lvl.None____.build.debug_level= +d1_mini_pro.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +d1_mini_pro.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG 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 @@ -4685,24 +4758,20 @@ d1_mini_pro.menu.lvl.OOM=OOM d1_mini_pro.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM d1_mini_pro.menu.lvl.MDNS=MDNS d1_mini_pro.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -d1_mini_pro.menu.lvl.HWDT=HWDT -d1_mini_pro.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -d1_mini_pro.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -d1_mini_pro.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K d1_mini_pro.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS d1_mini_pro.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +d1_mini_pro.menu.lvl.HWDT=HWDT +d1_mini_pro.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT d1_mini_pro.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT d1_mini_pro.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -d1_mini_pro.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -d1_mini_pro.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -d1_mini_pro.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -d1_mini_pro.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS d1_mini_pro.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT d1_mini_pro.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +d1_mini_pro.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +d1_mini_pro.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +d1_mini_pro.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +d1_mini_pro.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K d1_mini_pro.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K d1_mini_pro.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -d1_mini_pro.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -d1_mini_pro.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG d1_mini_pro.menu.wipe.none=Only Sketch d1_mini_pro.menu.wipe.none.upload.erase_cmd= d1_mini_pro.menu.wipe.sdk=Sketch + WiFi Settings @@ -4792,35 +4861,38 @@ d1.upload.resetmethod=--before default_reset --after hard_reset d1.build.flash_mode=dio d1.build.flash_flags=-DFLASHMODE_DIO d1.build.flash_freq=40 -d1.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +d1.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) d1.menu.eesz.4M2M.build.flash_size=4M d1.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -d1.menu.eesz.4M2M.build.spiffs_pagesize=256 d1.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +d1.menu.eesz.4M2M.upload.maximum_size=1044464 d1.menu.eesz.4M2M.build.spiffs_start=0x200000 d1.menu.eesz.4M2M.build.spiffs_end=0x3FA000 d1.menu.eesz.4M2M.build.spiffs_blocksize=8192 -d1.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +d1.menu.eesz.4M2M.build.spiffs_pagesize=256 +d1.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) d1.menu.eesz.4M3M.build.flash_size=4M d1.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -d1.menu.eesz.4M3M.build.spiffs_pagesize=256 d1.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +d1.menu.eesz.4M3M.upload.maximum_size=1044464 d1.menu.eesz.4M3M.build.spiffs_start=0x100000 d1.menu.eesz.4M3M.build.spiffs_end=0x3FA000 d1.menu.eesz.4M3M.build.spiffs_blocksize=8192 -d1.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +d1.menu.eesz.4M3M.build.spiffs_pagesize=256 +d1.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) d1.menu.eesz.4M1M.build.flash_size=4M d1.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -d1.menu.eesz.4M1M.build.spiffs_pagesize=256 d1.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +d1.menu.eesz.4M1M.upload.maximum_size=1044464 d1.menu.eesz.4M1M.build.spiffs_start=0x300000 d1.menu.eesz.4M1M.build.spiffs_end=0x3FA000 d1.menu.eesz.4M1M.build.spiffs_blocksize=8192 -d1.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +d1.menu.eesz.4M1M.build.spiffs_pagesize=256 +d1.menu.eesz.4M=4MB (FS:none OTA:~3052KB) d1.menu.eesz.4M.build.flash_size=4M d1.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -d1.menu.eesz.4M.build.spiffs_pagesize=256 d1.menu.eesz.4M.build.rfcal_addr=0x3FC000 +d1.menu.eesz.4M.upload.maximum_size=1044464 d1.menu.ip.lm2f=v2 Lower Memory d1.menu.ip.lm2f.build.lwip_include=lwip2/include d1.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -4853,6 +4925,8 @@ d1.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +d1.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG d1.menu.lvl.SSL=SSL d1.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL d1.menu.lvl.TLS_MEM=TLS_MEM @@ -4897,24 +4971,20 @@ d1.menu.lvl.OOM=OOM d1.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM d1.menu.lvl.MDNS=MDNS d1.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -d1.menu.lvl.HWDT=HWDT -d1.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -d1.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -d1.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K d1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS d1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +d1.menu.lvl.HWDT=HWDT +d1.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT d1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT d1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -d1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -d1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -d1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -d1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS d1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT d1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +d1.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +d1.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +d1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +d1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K d1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K d1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -d1.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -d1.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG d1.menu.wipe.none=Only Sketch d1.menu.wipe.none.upload.erase_cmd= d1.menu.wipe.sdk=Sketch + WiFi Settings @@ -5004,51 +5074,56 @@ agruminolemon.upload.resetmethod=--before default_reset --after hard_reset agruminolemon.build.flash_mode=dio agruminolemon.build.flash_flags=-DFLASHMODE_DIO agruminolemon.build.flash_freq=40 -agruminolemon.menu.eesz.2M64=2MB (FS:64KB OTA:~992KB) +agruminolemon.menu.eesz.2M64=2MB (FS:44KB OTA:~960KB) agruminolemon.menu.eesz.2M64.build.flash_size=2M agruminolemon.menu.eesz.2M64.build.flash_ld=eagle.flash.2m64.ld -agruminolemon.menu.eesz.2M64.build.spiffs_pagesize=256 agruminolemon.menu.eesz.2M64.build.rfcal_addr=0x1FC000 +agruminolemon.menu.eesz.2M64.upload.maximum_size=1044464 agruminolemon.menu.eesz.2M64.build.spiffs_start=0x1F0000 agruminolemon.menu.eesz.2M64.build.spiffs_end=0x1FB000 agruminolemon.menu.eesz.2M64.build.spiffs_blocksize=4096 -agruminolemon.menu.eesz.2M128=2MB (FS:128KB OTA:~960KB) +agruminolemon.menu.eesz.2M64.build.spiffs_pagesize=256 +agruminolemon.menu.eesz.2M128=2MB (FS:108KB OTA:~896KB) agruminolemon.menu.eesz.2M128.build.flash_size=2M agruminolemon.menu.eesz.2M128.build.flash_ld=eagle.flash.2m128.ld -agruminolemon.menu.eesz.2M128.build.spiffs_pagesize=256 agruminolemon.menu.eesz.2M128.build.rfcal_addr=0x1FC000 +agruminolemon.menu.eesz.2M128.upload.maximum_size=1044464 agruminolemon.menu.eesz.2M128.build.spiffs_start=0x1E0000 agruminolemon.menu.eesz.2M128.build.spiffs_end=0x1FB000 agruminolemon.menu.eesz.2M128.build.spiffs_blocksize=4096 -agruminolemon.menu.eesz.2M256=2MB (FS:256KB OTA:~896KB) +agruminolemon.menu.eesz.2M128.build.spiffs_pagesize=256 +agruminolemon.menu.eesz.2M256=2MB (FS:236KB OTA:~768KB) agruminolemon.menu.eesz.2M256.build.flash_size=2M agruminolemon.menu.eesz.2M256.build.flash_ld=eagle.flash.2m256.ld -agruminolemon.menu.eesz.2M256.build.spiffs_pagesize=256 agruminolemon.menu.eesz.2M256.build.rfcal_addr=0x1FC000 +agruminolemon.menu.eesz.2M256.upload.maximum_size=1044464 agruminolemon.menu.eesz.2M256.build.spiffs_start=0x1C0000 agruminolemon.menu.eesz.2M256.build.spiffs_end=0x1FB000 agruminolemon.menu.eesz.2M256.build.spiffs_blocksize=4096 -agruminolemon.menu.eesz.2M512=2MB (FS:512KB OTA:~768KB) +agruminolemon.menu.eesz.2M256.build.spiffs_pagesize=256 +agruminolemon.menu.eesz.2M512=2MB (FS:488KB OTA:~512KB) agruminolemon.menu.eesz.2M512.build.flash_size=2M agruminolemon.menu.eesz.2M512.build.flash_ld=eagle.flash.2m512.ld -agruminolemon.menu.eesz.2M512.build.spiffs_pagesize=256 agruminolemon.menu.eesz.2M512.build.rfcal_addr=0x1FC000 +agruminolemon.menu.eesz.2M512.upload.maximum_size=1044464 agruminolemon.menu.eesz.2M512.build.spiffs_start=0x180000 agruminolemon.menu.eesz.2M512.build.spiffs_end=0x1FA000 agruminolemon.menu.eesz.2M512.build.spiffs_blocksize=8192 -agruminolemon.menu.eesz.2M1M=2MB (FS:1MB OTA:~512KB) +agruminolemon.menu.eesz.2M512.build.spiffs_pagesize=256 +agruminolemon.menu.eesz.2M1M=2MB (FS:1000KB OTA:~509KB) agruminolemon.menu.eesz.2M1M.build.flash_size=2M agruminolemon.menu.eesz.2M1M.build.flash_ld=eagle.flash.2m1m.ld -agruminolemon.menu.eesz.2M1M.build.spiffs_pagesize=256 agruminolemon.menu.eesz.2M1M.build.rfcal_addr=0x1FC000 +agruminolemon.menu.eesz.2M1M.upload.maximum_size=1044464 agruminolemon.menu.eesz.2M1M.build.spiffs_start=0x100000 agruminolemon.menu.eesz.2M1M.build.spiffs_end=0x1FA000 agruminolemon.menu.eesz.2M1M.build.spiffs_blocksize=8192 -agruminolemon.menu.eesz.2M=2MB (FS:none OTA:~1019KB) +agruminolemon.menu.eesz.2M1M.build.spiffs_pagesize=256 +agruminolemon.menu.eesz.2M=2MB (FS:none OTA:~1004KB) agruminolemon.menu.eesz.2M.build.flash_size=2M agruminolemon.menu.eesz.2M.build.flash_ld=eagle.flash.2m.ld -agruminolemon.menu.eesz.2M.build.spiffs_pagesize=256 agruminolemon.menu.eesz.2M.build.rfcal_addr=0x1FC000 +agruminolemon.menu.eesz.2M.upload.maximum_size=1044464 agruminolemon.menu.ip.lm2f=v2 Lower Memory agruminolemon.menu.ip.lm2f.build.lwip_include=lwip2/include agruminolemon.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -5081,6 +5156,8 @@ agruminolemon.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +agruminolemon.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG agruminolemon.menu.lvl.SSL=SSL agruminolemon.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL agruminolemon.menu.lvl.TLS_MEM=TLS_MEM @@ -5125,24 +5202,20 @@ agruminolemon.menu.lvl.OOM=OOM agruminolemon.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM agruminolemon.menu.lvl.MDNS=MDNS agruminolemon.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -agruminolemon.menu.lvl.HWDT=HWDT -agruminolemon.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -agruminolemon.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -agruminolemon.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K agruminolemon.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS agruminolemon.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +agruminolemon.menu.lvl.HWDT=HWDT +agruminolemon.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT agruminolemon.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT agruminolemon.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -agruminolemon.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -agruminolemon.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -agruminolemon.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -agruminolemon.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS agruminolemon.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT agruminolemon.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +agruminolemon.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +agruminolemon.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +agruminolemon.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +agruminolemon.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K agruminolemon.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K agruminolemon.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -agruminolemon.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -agruminolemon.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG agruminolemon.menu.wipe.none=Only Sketch agruminolemon.menu.wipe.none.upload.erase_cmd= agruminolemon.menu.wipe.sdk=Sketch + WiFi Settings @@ -5232,35 +5305,38 @@ nodemcu.upload.resetmethod=--before default_reset --after hard_reset nodemcu.build.flash_mode=qio nodemcu.build.flash_flags=-DFLASHMODE_QIO nodemcu.build.flash_freq=40 -nodemcu.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +nodemcu.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) nodemcu.menu.eesz.4M2M.build.flash_size=4M nodemcu.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -nodemcu.menu.eesz.4M2M.build.spiffs_pagesize=256 nodemcu.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +nodemcu.menu.eesz.4M2M.upload.maximum_size=1044464 nodemcu.menu.eesz.4M2M.build.spiffs_start=0x200000 nodemcu.menu.eesz.4M2M.build.spiffs_end=0x3FA000 nodemcu.menu.eesz.4M2M.build.spiffs_blocksize=8192 -nodemcu.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +nodemcu.menu.eesz.4M2M.build.spiffs_pagesize=256 +nodemcu.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) nodemcu.menu.eesz.4M3M.build.flash_size=4M nodemcu.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -nodemcu.menu.eesz.4M3M.build.spiffs_pagesize=256 nodemcu.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +nodemcu.menu.eesz.4M3M.upload.maximum_size=1044464 nodemcu.menu.eesz.4M3M.build.spiffs_start=0x100000 nodemcu.menu.eesz.4M3M.build.spiffs_end=0x3FA000 nodemcu.menu.eesz.4M3M.build.spiffs_blocksize=8192 -nodemcu.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +nodemcu.menu.eesz.4M3M.build.spiffs_pagesize=256 +nodemcu.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) nodemcu.menu.eesz.4M1M.build.flash_size=4M nodemcu.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -nodemcu.menu.eesz.4M1M.build.spiffs_pagesize=256 nodemcu.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +nodemcu.menu.eesz.4M1M.upload.maximum_size=1044464 nodemcu.menu.eesz.4M1M.build.spiffs_start=0x300000 nodemcu.menu.eesz.4M1M.build.spiffs_end=0x3FA000 nodemcu.menu.eesz.4M1M.build.spiffs_blocksize=8192 -nodemcu.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +nodemcu.menu.eesz.4M1M.build.spiffs_pagesize=256 +nodemcu.menu.eesz.4M=4MB (FS:none OTA:~3052KB) nodemcu.menu.eesz.4M.build.flash_size=4M nodemcu.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -nodemcu.menu.eesz.4M.build.spiffs_pagesize=256 nodemcu.menu.eesz.4M.build.rfcal_addr=0x3FC000 +nodemcu.menu.eesz.4M.upload.maximum_size=1044464 nodemcu.menu.ip.lm2f=v2 Lower Memory nodemcu.menu.ip.lm2f.build.lwip_include=lwip2/include nodemcu.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -5293,6 +5369,8 @@ nodemcu.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +nodemcu.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG nodemcu.menu.lvl.SSL=SSL nodemcu.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL nodemcu.menu.lvl.TLS_MEM=TLS_MEM @@ -5337,24 +5415,20 @@ nodemcu.menu.lvl.OOM=OOM nodemcu.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM nodemcu.menu.lvl.MDNS=MDNS nodemcu.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -nodemcu.menu.lvl.HWDT=HWDT -nodemcu.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -nodemcu.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -nodemcu.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K nodemcu.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS nodemcu.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +nodemcu.menu.lvl.HWDT=HWDT +nodemcu.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT nodemcu.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT nodemcu.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -nodemcu.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -nodemcu.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -nodemcu.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -nodemcu.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS nodemcu.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT nodemcu.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +nodemcu.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +nodemcu.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +nodemcu.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +nodemcu.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K nodemcu.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K nodemcu.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -nodemcu.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -nodemcu.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG nodemcu.menu.wipe.none=Only Sketch nodemcu.menu.wipe.none.upload.erase_cmd= nodemcu.menu.wipe.sdk=Sketch + WiFi Settings @@ -5444,35 +5518,38 @@ nodemcuv2.upload.resetmethod=--before default_reset --after hard_reset nodemcuv2.build.flash_mode=dio nodemcuv2.build.flash_flags=-DFLASHMODE_DIO nodemcuv2.build.flash_freq=40 -nodemcuv2.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +nodemcuv2.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) nodemcuv2.menu.eesz.4M2M.build.flash_size=4M nodemcuv2.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -nodemcuv2.menu.eesz.4M2M.build.spiffs_pagesize=256 nodemcuv2.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +nodemcuv2.menu.eesz.4M2M.upload.maximum_size=1044464 nodemcuv2.menu.eesz.4M2M.build.spiffs_start=0x200000 nodemcuv2.menu.eesz.4M2M.build.spiffs_end=0x3FA000 nodemcuv2.menu.eesz.4M2M.build.spiffs_blocksize=8192 -nodemcuv2.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +nodemcuv2.menu.eesz.4M2M.build.spiffs_pagesize=256 +nodemcuv2.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) nodemcuv2.menu.eesz.4M3M.build.flash_size=4M nodemcuv2.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -nodemcuv2.menu.eesz.4M3M.build.spiffs_pagesize=256 nodemcuv2.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +nodemcuv2.menu.eesz.4M3M.upload.maximum_size=1044464 nodemcuv2.menu.eesz.4M3M.build.spiffs_start=0x100000 nodemcuv2.menu.eesz.4M3M.build.spiffs_end=0x3FA000 nodemcuv2.menu.eesz.4M3M.build.spiffs_blocksize=8192 -nodemcuv2.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +nodemcuv2.menu.eesz.4M3M.build.spiffs_pagesize=256 +nodemcuv2.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) nodemcuv2.menu.eesz.4M1M.build.flash_size=4M nodemcuv2.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -nodemcuv2.menu.eesz.4M1M.build.spiffs_pagesize=256 nodemcuv2.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +nodemcuv2.menu.eesz.4M1M.upload.maximum_size=1044464 nodemcuv2.menu.eesz.4M1M.build.spiffs_start=0x300000 nodemcuv2.menu.eesz.4M1M.build.spiffs_end=0x3FA000 nodemcuv2.menu.eesz.4M1M.build.spiffs_blocksize=8192 -nodemcuv2.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +nodemcuv2.menu.eesz.4M1M.build.spiffs_pagesize=256 +nodemcuv2.menu.eesz.4M=4MB (FS:none OTA:~3052KB) nodemcuv2.menu.eesz.4M.build.flash_size=4M nodemcuv2.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -nodemcuv2.menu.eesz.4M.build.spiffs_pagesize=256 nodemcuv2.menu.eesz.4M.build.rfcal_addr=0x3FC000 +nodemcuv2.menu.eesz.4M.upload.maximum_size=1044464 nodemcuv2.menu.led.2=2 nodemcuv2.menu.led.2.build.led=-DLED_BUILTIN=2 nodemcuv2.menu.led.16=16 @@ -5509,6 +5586,8 @@ nodemcuv2.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +nodemcuv2.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG nodemcuv2.menu.lvl.SSL=SSL nodemcuv2.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL nodemcuv2.menu.lvl.TLS_MEM=TLS_MEM @@ -5553,24 +5632,20 @@ nodemcuv2.menu.lvl.OOM=OOM nodemcuv2.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM nodemcuv2.menu.lvl.MDNS=MDNS nodemcuv2.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -nodemcuv2.menu.lvl.HWDT=HWDT -nodemcuv2.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -nodemcuv2.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -nodemcuv2.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K nodemcuv2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS nodemcuv2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +nodemcuv2.menu.lvl.HWDT=HWDT +nodemcuv2.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT nodemcuv2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT nodemcuv2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -nodemcuv2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -nodemcuv2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -nodemcuv2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -nodemcuv2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS nodemcuv2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT nodemcuv2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +nodemcuv2.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +nodemcuv2.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +nodemcuv2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +nodemcuv2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K nodemcuv2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K nodemcuv2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -nodemcuv2.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -nodemcuv2.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG nodemcuv2.menu.wipe.none=Only Sketch nodemcuv2.menu.wipe.none.upload.erase_cmd= nodemcuv2.menu.wipe.sdk=Sketch + WiFi Settings @@ -5675,51 +5750,56 @@ modwifi.menu.FlashMode.qio=QIO (fast) modwifi.menu.FlashMode.qio.build.flash_mode=qio modwifi.menu.FlashMode.qio.build.flash_flags=-DFLASHMODE_QIO modwifi.build.flash_freq=40 -modwifi.menu.eesz.2M64=2MB (FS:64KB OTA:~992KB) +modwifi.menu.eesz.2M64=2MB (FS:44KB OTA:~960KB) modwifi.menu.eesz.2M64.build.flash_size=2M modwifi.menu.eesz.2M64.build.flash_ld=eagle.flash.2m64.ld -modwifi.menu.eesz.2M64.build.spiffs_pagesize=256 modwifi.menu.eesz.2M64.build.rfcal_addr=0x1FC000 +modwifi.menu.eesz.2M64.upload.maximum_size=1044464 modwifi.menu.eesz.2M64.build.spiffs_start=0x1F0000 modwifi.menu.eesz.2M64.build.spiffs_end=0x1FB000 modwifi.menu.eesz.2M64.build.spiffs_blocksize=4096 -modwifi.menu.eesz.2M128=2MB (FS:128KB OTA:~960KB) +modwifi.menu.eesz.2M64.build.spiffs_pagesize=256 +modwifi.menu.eesz.2M128=2MB (FS:108KB OTA:~896KB) modwifi.menu.eesz.2M128.build.flash_size=2M modwifi.menu.eesz.2M128.build.flash_ld=eagle.flash.2m128.ld -modwifi.menu.eesz.2M128.build.spiffs_pagesize=256 modwifi.menu.eesz.2M128.build.rfcal_addr=0x1FC000 +modwifi.menu.eesz.2M128.upload.maximum_size=1044464 modwifi.menu.eesz.2M128.build.spiffs_start=0x1E0000 modwifi.menu.eesz.2M128.build.spiffs_end=0x1FB000 modwifi.menu.eesz.2M128.build.spiffs_blocksize=4096 -modwifi.menu.eesz.2M256=2MB (FS:256KB OTA:~896KB) +modwifi.menu.eesz.2M128.build.spiffs_pagesize=256 +modwifi.menu.eesz.2M256=2MB (FS:236KB OTA:~768KB) modwifi.menu.eesz.2M256.build.flash_size=2M modwifi.menu.eesz.2M256.build.flash_ld=eagle.flash.2m256.ld -modwifi.menu.eesz.2M256.build.spiffs_pagesize=256 modwifi.menu.eesz.2M256.build.rfcal_addr=0x1FC000 +modwifi.menu.eesz.2M256.upload.maximum_size=1044464 modwifi.menu.eesz.2M256.build.spiffs_start=0x1C0000 modwifi.menu.eesz.2M256.build.spiffs_end=0x1FB000 modwifi.menu.eesz.2M256.build.spiffs_blocksize=4096 -modwifi.menu.eesz.2M512=2MB (FS:512KB OTA:~768KB) +modwifi.menu.eesz.2M256.build.spiffs_pagesize=256 +modwifi.menu.eesz.2M512=2MB (FS:488KB OTA:~512KB) modwifi.menu.eesz.2M512.build.flash_size=2M modwifi.menu.eesz.2M512.build.flash_ld=eagle.flash.2m512.ld -modwifi.menu.eesz.2M512.build.spiffs_pagesize=256 modwifi.menu.eesz.2M512.build.rfcal_addr=0x1FC000 +modwifi.menu.eesz.2M512.upload.maximum_size=1044464 modwifi.menu.eesz.2M512.build.spiffs_start=0x180000 modwifi.menu.eesz.2M512.build.spiffs_end=0x1FA000 modwifi.menu.eesz.2M512.build.spiffs_blocksize=8192 -modwifi.menu.eesz.2M1M=2MB (FS:1MB OTA:~512KB) +modwifi.menu.eesz.2M512.build.spiffs_pagesize=256 +modwifi.menu.eesz.2M1M=2MB (FS:1000KB OTA:~509KB) modwifi.menu.eesz.2M1M.build.flash_size=2M modwifi.menu.eesz.2M1M.build.flash_ld=eagle.flash.2m1m.ld -modwifi.menu.eesz.2M1M.build.spiffs_pagesize=256 modwifi.menu.eesz.2M1M.build.rfcal_addr=0x1FC000 +modwifi.menu.eesz.2M1M.upload.maximum_size=1044464 modwifi.menu.eesz.2M1M.build.spiffs_start=0x100000 modwifi.menu.eesz.2M1M.build.spiffs_end=0x1FA000 modwifi.menu.eesz.2M1M.build.spiffs_blocksize=8192 -modwifi.menu.eesz.2M=2MB (FS:none OTA:~1019KB) +modwifi.menu.eesz.2M1M.build.spiffs_pagesize=256 +modwifi.menu.eesz.2M=2MB (FS:none OTA:~1004KB) modwifi.menu.eesz.2M.build.flash_size=2M modwifi.menu.eesz.2M.build.flash_ld=eagle.flash.2m.ld -modwifi.menu.eesz.2M.build.spiffs_pagesize=256 modwifi.menu.eesz.2M.build.rfcal_addr=0x1FC000 +modwifi.menu.eesz.2M.upload.maximum_size=1044464 modwifi.menu.ip.lm2f=v2 Lower Memory modwifi.menu.ip.lm2f.build.lwip_include=lwip2/include modwifi.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -5752,6 +5832,8 @@ modwifi.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +modwifi.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG modwifi.menu.lvl.SSL=SSL modwifi.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL modwifi.menu.lvl.TLS_MEM=TLS_MEM @@ -5796,24 +5878,20 @@ modwifi.menu.lvl.OOM=OOM modwifi.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM modwifi.menu.lvl.MDNS=MDNS modwifi.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -modwifi.menu.lvl.HWDT=HWDT -modwifi.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -modwifi.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -modwifi.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K modwifi.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS modwifi.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +modwifi.menu.lvl.HWDT=HWDT +modwifi.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT modwifi.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT modwifi.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -modwifi.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -modwifi.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -modwifi.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -modwifi.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS modwifi.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT modwifi.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +modwifi.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +modwifi.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +modwifi.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +modwifi.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K modwifi.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K modwifi.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -modwifi.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -modwifi.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG modwifi.menu.wipe.none=Only Sketch modwifi.menu.wipe.none.upload.erase_cmd= modwifi.menu.wipe.sdk=Sketch + WiFi Settings @@ -5902,35 +5980,38 @@ phoenix_v1.menu.non32xfer.safe.build.non32xferflags=-DNON32XFER_HANDLER phoenix_v1.build.flash_mode=dio phoenix_v1.build.flash_flags=-DFLASHMODE_DIO phoenix_v1.build.flash_freq=40 -phoenix_v1.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +phoenix_v1.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) phoenix_v1.menu.eesz.4M2M.build.flash_size=4M phoenix_v1.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -phoenix_v1.menu.eesz.4M2M.build.spiffs_pagesize=256 phoenix_v1.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +phoenix_v1.menu.eesz.4M2M.upload.maximum_size=1044464 phoenix_v1.menu.eesz.4M2M.build.spiffs_start=0x200000 phoenix_v1.menu.eesz.4M2M.build.spiffs_end=0x3FA000 phoenix_v1.menu.eesz.4M2M.build.spiffs_blocksize=8192 -phoenix_v1.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +phoenix_v1.menu.eesz.4M2M.build.spiffs_pagesize=256 +phoenix_v1.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) phoenix_v1.menu.eesz.4M3M.build.flash_size=4M phoenix_v1.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -phoenix_v1.menu.eesz.4M3M.build.spiffs_pagesize=256 phoenix_v1.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +phoenix_v1.menu.eesz.4M3M.upload.maximum_size=1044464 phoenix_v1.menu.eesz.4M3M.build.spiffs_start=0x100000 phoenix_v1.menu.eesz.4M3M.build.spiffs_end=0x3FA000 phoenix_v1.menu.eesz.4M3M.build.spiffs_blocksize=8192 -phoenix_v1.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +phoenix_v1.menu.eesz.4M3M.build.spiffs_pagesize=256 +phoenix_v1.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) phoenix_v1.menu.eesz.4M1M.build.flash_size=4M phoenix_v1.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -phoenix_v1.menu.eesz.4M1M.build.spiffs_pagesize=256 phoenix_v1.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +phoenix_v1.menu.eesz.4M1M.upload.maximum_size=1044464 phoenix_v1.menu.eesz.4M1M.build.spiffs_start=0x300000 phoenix_v1.menu.eesz.4M1M.build.spiffs_end=0x3FA000 phoenix_v1.menu.eesz.4M1M.build.spiffs_blocksize=8192 -phoenix_v1.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +phoenix_v1.menu.eesz.4M1M.build.spiffs_pagesize=256 +phoenix_v1.menu.eesz.4M=4MB (FS:none OTA:~3052KB) phoenix_v1.menu.eesz.4M.build.flash_size=4M phoenix_v1.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -phoenix_v1.menu.eesz.4M.build.spiffs_pagesize=256 phoenix_v1.menu.eesz.4M.build.rfcal_addr=0x3FC000 +phoenix_v1.menu.eesz.4M.upload.maximum_size=1044464 phoenix_v1.menu.ResetMethod.nodemcu=dtr (aka nodemcu) phoenix_v1.menu.ResetMethod.nodemcu.upload.resetmethod=--before default_reset --after hard_reset phoenix_v1.menu.ResetMethod.ck=no dtr (aka ck) @@ -5967,6 +6048,8 @@ phoenix_v1.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +phoenix_v1.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG 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 @@ -6011,24 +6094,20 @@ phoenix_v1.menu.lvl.OOM=OOM phoenix_v1.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM phoenix_v1.menu.lvl.MDNS=MDNS phoenix_v1.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -phoenix_v1.menu.lvl.HWDT=HWDT -phoenix_v1.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -phoenix_v1.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -phoenix_v1.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K phoenix_v1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS phoenix_v1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +phoenix_v1.menu.lvl.HWDT=HWDT +phoenix_v1.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT phoenix_v1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT phoenix_v1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -phoenix_v1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -phoenix_v1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -phoenix_v1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -phoenix_v1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS phoenix_v1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT phoenix_v1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +phoenix_v1.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +phoenix_v1.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +phoenix_v1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +phoenix_v1.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K phoenix_v1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K phoenix_v1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -phoenix_v1.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -phoenix_v1.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG phoenix_v1.menu.wipe.none=Only Sketch phoenix_v1.menu.wipe.none.upload.erase_cmd= phoenix_v1.menu.wipe.sdk=Sketch + WiFi Settings @@ -6117,35 +6196,38 @@ phoenix_v2.menu.non32xfer.safe.build.non32xferflags=-DNON32XFER_HANDLER phoenix_v2.build.flash_mode=dio phoenix_v2.build.flash_flags=-DFLASHMODE_DIO phoenix_v2.build.flash_freq=40 -phoenix_v2.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +phoenix_v2.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) phoenix_v2.menu.eesz.4M2M.build.flash_size=4M phoenix_v2.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -phoenix_v2.menu.eesz.4M2M.build.spiffs_pagesize=256 phoenix_v2.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +phoenix_v2.menu.eesz.4M2M.upload.maximum_size=1044464 phoenix_v2.menu.eesz.4M2M.build.spiffs_start=0x200000 phoenix_v2.menu.eesz.4M2M.build.spiffs_end=0x3FA000 phoenix_v2.menu.eesz.4M2M.build.spiffs_blocksize=8192 -phoenix_v2.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +phoenix_v2.menu.eesz.4M2M.build.spiffs_pagesize=256 +phoenix_v2.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) phoenix_v2.menu.eesz.4M3M.build.flash_size=4M phoenix_v2.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -phoenix_v2.menu.eesz.4M3M.build.spiffs_pagesize=256 phoenix_v2.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +phoenix_v2.menu.eesz.4M3M.upload.maximum_size=1044464 phoenix_v2.menu.eesz.4M3M.build.spiffs_start=0x100000 phoenix_v2.menu.eesz.4M3M.build.spiffs_end=0x3FA000 phoenix_v2.menu.eesz.4M3M.build.spiffs_blocksize=8192 -phoenix_v2.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +phoenix_v2.menu.eesz.4M3M.build.spiffs_pagesize=256 +phoenix_v2.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) phoenix_v2.menu.eesz.4M1M.build.flash_size=4M phoenix_v2.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -phoenix_v2.menu.eesz.4M1M.build.spiffs_pagesize=256 phoenix_v2.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +phoenix_v2.menu.eesz.4M1M.upload.maximum_size=1044464 phoenix_v2.menu.eesz.4M1M.build.spiffs_start=0x300000 phoenix_v2.menu.eesz.4M1M.build.spiffs_end=0x3FA000 phoenix_v2.menu.eesz.4M1M.build.spiffs_blocksize=8192 -phoenix_v2.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +phoenix_v2.menu.eesz.4M1M.build.spiffs_pagesize=256 +phoenix_v2.menu.eesz.4M=4MB (FS:none OTA:~3052KB) phoenix_v2.menu.eesz.4M.build.flash_size=4M phoenix_v2.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -phoenix_v2.menu.eesz.4M.build.spiffs_pagesize=256 phoenix_v2.menu.eesz.4M.build.rfcal_addr=0x3FC000 +phoenix_v2.menu.eesz.4M.upload.maximum_size=1044464 phoenix_v2.menu.ResetMethod.nodemcu=dtr (aka nodemcu) phoenix_v2.menu.ResetMethod.nodemcu.upload.resetmethod=--before default_reset --after hard_reset phoenix_v2.menu.ResetMethod.ck=no dtr (aka ck) @@ -6182,6 +6264,8 @@ phoenix_v2.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +phoenix_v2.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG 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 @@ -6226,24 +6310,20 @@ phoenix_v2.menu.lvl.OOM=OOM phoenix_v2.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM phoenix_v2.menu.lvl.MDNS=MDNS phoenix_v2.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -phoenix_v2.menu.lvl.HWDT=HWDT -phoenix_v2.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -phoenix_v2.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -phoenix_v2.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K phoenix_v2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS phoenix_v2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +phoenix_v2.menu.lvl.HWDT=HWDT +phoenix_v2.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT phoenix_v2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT phoenix_v2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -phoenix_v2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -phoenix_v2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -phoenix_v2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -phoenix_v2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS phoenix_v2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT phoenix_v2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +phoenix_v2.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +phoenix_v2.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +phoenix_v2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +phoenix_v2.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K phoenix_v2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K phoenix_v2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -phoenix_v2.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -phoenix_v2.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG phoenix_v2.menu.wipe.none=Only Sketch phoenix_v2.menu.wipe.none.upload.erase_cmd= phoenix_v2.menu.wipe.sdk=Sketch + WiFi Settings @@ -6333,35 +6413,38 @@ eduinowifi.upload.resetmethod=--before default_reset --after hard_reset eduinowifi.build.flash_mode=dio eduinowifi.build.flash_flags=-DFLASHMODE_DIO eduinowifi.build.flash_freq=40 -eduinowifi.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +eduinowifi.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) eduinowifi.menu.eesz.4M2M.build.flash_size=4M eduinowifi.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -eduinowifi.menu.eesz.4M2M.build.spiffs_pagesize=256 eduinowifi.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +eduinowifi.menu.eesz.4M2M.upload.maximum_size=1044464 eduinowifi.menu.eesz.4M2M.build.spiffs_start=0x200000 eduinowifi.menu.eesz.4M2M.build.spiffs_end=0x3FA000 eduinowifi.menu.eesz.4M2M.build.spiffs_blocksize=8192 -eduinowifi.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +eduinowifi.menu.eesz.4M2M.build.spiffs_pagesize=256 +eduinowifi.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) eduinowifi.menu.eesz.4M3M.build.flash_size=4M eduinowifi.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -eduinowifi.menu.eesz.4M3M.build.spiffs_pagesize=256 eduinowifi.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +eduinowifi.menu.eesz.4M3M.upload.maximum_size=1044464 eduinowifi.menu.eesz.4M3M.build.spiffs_start=0x100000 eduinowifi.menu.eesz.4M3M.build.spiffs_end=0x3FA000 eduinowifi.menu.eesz.4M3M.build.spiffs_blocksize=8192 -eduinowifi.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +eduinowifi.menu.eesz.4M3M.build.spiffs_pagesize=256 +eduinowifi.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) eduinowifi.menu.eesz.4M1M.build.flash_size=4M eduinowifi.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -eduinowifi.menu.eesz.4M1M.build.spiffs_pagesize=256 eduinowifi.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +eduinowifi.menu.eesz.4M1M.upload.maximum_size=1044464 eduinowifi.menu.eesz.4M1M.build.spiffs_start=0x300000 eduinowifi.menu.eesz.4M1M.build.spiffs_end=0x3FA000 eduinowifi.menu.eesz.4M1M.build.spiffs_blocksize=8192 -eduinowifi.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +eduinowifi.menu.eesz.4M1M.build.spiffs_pagesize=256 +eduinowifi.menu.eesz.4M=4MB (FS:none OTA:~3052KB) eduinowifi.menu.eesz.4M.build.flash_size=4M eduinowifi.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -eduinowifi.menu.eesz.4M.build.spiffs_pagesize=256 eduinowifi.menu.eesz.4M.build.rfcal_addr=0x3FC000 +eduinowifi.menu.eesz.4M.upload.maximum_size=1044464 eduinowifi.menu.ip.lm2f=v2 Lower Memory eduinowifi.menu.ip.lm2f.build.lwip_include=lwip2/include eduinowifi.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -6394,6 +6477,8 @@ eduinowifi.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +eduinowifi.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG eduinowifi.menu.lvl.SSL=SSL eduinowifi.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL eduinowifi.menu.lvl.TLS_MEM=TLS_MEM @@ -6438,24 +6523,20 @@ eduinowifi.menu.lvl.OOM=OOM eduinowifi.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM eduinowifi.menu.lvl.MDNS=MDNS eduinowifi.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -eduinowifi.menu.lvl.HWDT=HWDT -eduinowifi.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -eduinowifi.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -eduinowifi.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K eduinowifi.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS eduinowifi.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +eduinowifi.menu.lvl.HWDT=HWDT +eduinowifi.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT eduinowifi.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT eduinowifi.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -eduinowifi.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -eduinowifi.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -eduinowifi.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -eduinowifi.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS eduinowifi.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT eduinowifi.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +eduinowifi.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +eduinowifi.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +eduinowifi.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +eduinowifi.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K eduinowifi.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K eduinowifi.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -eduinowifi.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -eduinowifi.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG eduinowifi.menu.wipe.none=Only Sketch eduinowifi.menu.wipe.none.upload.erase_cmd= eduinowifi.menu.wipe.sdk=Sketch + WiFi Settings @@ -6545,35 +6626,38 @@ wiolink.upload.resetmethod=--before default_reset --after hard_reset wiolink.build.flash_mode=qio wiolink.build.flash_flags=-DFLASHMODE_QIO wiolink.build.flash_freq=40 -wiolink.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +wiolink.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) wiolink.menu.eesz.4M2M.build.flash_size=4M wiolink.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -wiolink.menu.eesz.4M2M.build.spiffs_pagesize=256 wiolink.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +wiolink.menu.eesz.4M2M.upload.maximum_size=1044464 wiolink.menu.eesz.4M2M.build.spiffs_start=0x200000 wiolink.menu.eesz.4M2M.build.spiffs_end=0x3FA000 wiolink.menu.eesz.4M2M.build.spiffs_blocksize=8192 -wiolink.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +wiolink.menu.eesz.4M2M.build.spiffs_pagesize=256 +wiolink.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) wiolink.menu.eesz.4M3M.build.flash_size=4M wiolink.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -wiolink.menu.eesz.4M3M.build.spiffs_pagesize=256 wiolink.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +wiolink.menu.eesz.4M3M.upload.maximum_size=1044464 wiolink.menu.eesz.4M3M.build.spiffs_start=0x100000 wiolink.menu.eesz.4M3M.build.spiffs_end=0x3FA000 wiolink.menu.eesz.4M3M.build.spiffs_blocksize=8192 -wiolink.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +wiolink.menu.eesz.4M3M.build.spiffs_pagesize=256 +wiolink.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) wiolink.menu.eesz.4M1M.build.flash_size=4M wiolink.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -wiolink.menu.eesz.4M1M.build.spiffs_pagesize=256 wiolink.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +wiolink.menu.eesz.4M1M.upload.maximum_size=1044464 wiolink.menu.eesz.4M1M.build.spiffs_start=0x300000 wiolink.menu.eesz.4M1M.build.spiffs_end=0x3FA000 wiolink.menu.eesz.4M1M.build.spiffs_blocksize=8192 -wiolink.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +wiolink.menu.eesz.4M1M.build.spiffs_pagesize=256 +wiolink.menu.eesz.4M=4MB (FS:none OTA:~3052KB) wiolink.menu.eesz.4M.build.flash_size=4M wiolink.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -wiolink.menu.eesz.4M.build.spiffs_pagesize=256 wiolink.menu.eesz.4M.build.rfcal_addr=0x3FC000 +wiolink.menu.eesz.4M.upload.maximum_size=1044464 wiolink.menu.ip.lm2f=v2 Lower Memory wiolink.menu.ip.lm2f.build.lwip_include=lwip2/include wiolink.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -6606,6 +6690,8 @@ wiolink.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +wiolink.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG wiolink.menu.lvl.SSL=SSL wiolink.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL wiolink.menu.lvl.TLS_MEM=TLS_MEM @@ -6650,24 +6736,20 @@ wiolink.menu.lvl.OOM=OOM wiolink.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM wiolink.menu.lvl.MDNS=MDNS wiolink.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -wiolink.menu.lvl.HWDT=HWDT -wiolink.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -wiolink.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -wiolink.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K wiolink.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS wiolink.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +wiolink.menu.lvl.HWDT=HWDT +wiolink.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT wiolink.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT wiolink.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -wiolink.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -wiolink.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -wiolink.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -wiolink.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS wiolink.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT wiolink.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +wiolink.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +wiolink.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +wiolink.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +wiolink.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K wiolink.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K wiolink.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -wiolink.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -wiolink.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG wiolink.menu.wipe.none=Only Sketch wiolink.menu.wipe.none.upload.erase_cmd= wiolink.menu.wipe.sdk=Sketch + WiFi Settings @@ -6757,35 +6839,38 @@ blynk.upload.resetmethod=--before default_reset --after hard_reset blynk.build.flash_mode=qio blynk.build.flash_flags=-DFLASHMODE_QIO blynk.build.flash_freq=40 -blynk.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +blynk.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) blynk.menu.eesz.4M2M.build.flash_size=4M blynk.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -blynk.menu.eesz.4M2M.build.spiffs_pagesize=256 blynk.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +blynk.menu.eesz.4M2M.upload.maximum_size=1044464 blynk.menu.eesz.4M2M.build.spiffs_start=0x200000 blynk.menu.eesz.4M2M.build.spiffs_end=0x3FA000 blynk.menu.eesz.4M2M.build.spiffs_blocksize=8192 -blynk.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +blynk.menu.eesz.4M2M.build.spiffs_pagesize=256 +blynk.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) blynk.menu.eesz.4M3M.build.flash_size=4M blynk.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -blynk.menu.eesz.4M3M.build.spiffs_pagesize=256 blynk.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +blynk.menu.eesz.4M3M.upload.maximum_size=1044464 blynk.menu.eesz.4M3M.build.spiffs_start=0x100000 blynk.menu.eesz.4M3M.build.spiffs_end=0x3FA000 blynk.menu.eesz.4M3M.build.spiffs_blocksize=8192 -blynk.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +blynk.menu.eesz.4M3M.build.spiffs_pagesize=256 +blynk.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) blynk.menu.eesz.4M1M.build.flash_size=4M blynk.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -blynk.menu.eesz.4M1M.build.spiffs_pagesize=256 blynk.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +blynk.menu.eesz.4M1M.upload.maximum_size=1044464 blynk.menu.eesz.4M1M.build.spiffs_start=0x300000 blynk.menu.eesz.4M1M.build.spiffs_end=0x3FA000 blynk.menu.eesz.4M1M.build.spiffs_blocksize=8192 -blynk.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +blynk.menu.eesz.4M1M.build.spiffs_pagesize=256 +blynk.menu.eesz.4M=4MB (FS:none OTA:~3052KB) blynk.menu.eesz.4M.build.flash_size=4M blynk.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -blynk.menu.eesz.4M.build.spiffs_pagesize=256 blynk.menu.eesz.4M.build.rfcal_addr=0x3FC000 +blynk.menu.eesz.4M.upload.maximum_size=1044464 blynk.menu.ip.lm2f=v2 Lower Memory blynk.menu.ip.lm2f.build.lwip_include=lwip2/include blynk.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -6818,6 +6903,8 @@ blynk.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +blynk.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG blynk.menu.lvl.SSL=SSL blynk.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL blynk.menu.lvl.TLS_MEM=TLS_MEM @@ -6862,24 +6949,20 @@ blynk.menu.lvl.OOM=OOM blynk.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM blynk.menu.lvl.MDNS=MDNS blynk.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -blynk.menu.lvl.HWDT=HWDT -blynk.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -blynk.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -blynk.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K blynk.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS blynk.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +blynk.menu.lvl.HWDT=HWDT +blynk.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT blynk.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT blynk.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -blynk.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -blynk.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -blynk.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -blynk.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS blynk.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT blynk.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +blynk.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +blynk.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +blynk.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +blynk.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K blynk.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K blynk.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -blynk.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -blynk.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG blynk.menu.wipe.none=Only Sketch blynk.menu.wipe.none.upload.erase_cmd= blynk.menu.wipe.sdk=Sketch + WiFi Settings @@ -6969,35 +7052,38 @@ thing.upload.resetmethod=--before no_reset --after soft_reset thing.build.flash_mode=qio thing.build.flash_flags=-DFLASHMODE_QIO thing.build.flash_freq=40 -thing.menu.eesz.512K32=512KB (FS:32KB OTA:~230KB) +thing.menu.eesz.512K32=512KB (FS:32KB OTA:~227KB) thing.menu.eesz.512K32.build.flash_size=512K thing.menu.eesz.512K32.build.flash_ld=eagle.flash.512k32.ld -thing.menu.eesz.512K32.build.spiffs_pagesize=256 thing.menu.eesz.512K32.build.rfcal_addr=0x7C000 +thing.menu.eesz.512K32.upload.maximum_size=520176 thing.menu.eesz.512K32.build.spiffs_start=0x73000 thing.menu.eesz.512K32.build.spiffs_end=0x7B000 thing.menu.eesz.512K32.build.spiffs_blocksize=4096 -thing.menu.eesz.512K64=512KB (FS:64KB OTA:~214KB) +thing.menu.eesz.512K32.build.spiffs_pagesize=256 +thing.menu.eesz.512K64=512KB (FS:64KB OTA:~211KB) thing.menu.eesz.512K64.build.flash_size=512K thing.menu.eesz.512K64.build.flash_ld=eagle.flash.512k64.ld -thing.menu.eesz.512K64.build.spiffs_pagesize=256 thing.menu.eesz.512K64.build.rfcal_addr=0x7C000 +thing.menu.eesz.512K64.upload.maximum_size=520176 thing.menu.eesz.512K64.build.spiffs_start=0x6B000 thing.menu.eesz.512K64.build.spiffs_end=0x7B000 thing.menu.eesz.512K64.build.spiffs_blocksize=4096 -thing.menu.eesz.512K128=512KB (FS:128KB OTA:~182KB) +thing.menu.eesz.512K64.build.spiffs_pagesize=256 +thing.menu.eesz.512K128=512KB (FS:128KB OTA:~179KB) thing.menu.eesz.512K128.build.flash_size=512K thing.menu.eesz.512K128.build.flash_ld=eagle.flash.512k128.ld -thing.menu.eesz.512K128.build.spiffs_pagesize=256 thing.menu.eesz.512K128.build.rfcal_addr=0x7C000 +thing.menu.eesz.512K128.upload.maximum_size=520176 thing.menu.eesz.512K128.build.spiffs_start=0x5B000 thing.menu.eesz.512K128.build.spiffs_end=0x7B000 thing.menu.eesz.512K128.build.spiffs_blocksize=4096 -thing.menu.eesz.512K=512KB (FS:none OTA:~246KB) +thing.menu.eesz.512K128.build.spiffs_pagesize=256 +thing.menu.eesz.512K=512KB (FS:none OTA:~243KB) thing.menu.eesz.512K.build.flash_size=512K thing.menu.eesz.512K.build.flash_ld=eagle.flash.512k.ld -thing.menu.eesz.512K.build.spiffs_pagesize=256 thing.menu.eesz.512K.build.rfcal_addr=0x7C000 +thing.menu.eesz.512K.upload.maximum_size=520176 thing.menu.ip.lm2f=v2 Lower Memory thing.menu.ip.lm2f.build.lwip_include=lwip2/include thing.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -7030,6 +7116,8 @@ thing.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +thing.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG thing.menu.lvl.SSL=SSL thing.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL thing.menu.lvl.TLS_MEM=TLS_MEM @@ -7074,24 +7162,20 @@ thing.menu.lvl.OOM=OOM thing.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM thing.menu.lvl.MDNS=MDNS thing.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -thing.menu.lvl.HWDT=HWDT -thing.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -thing.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -thing.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K thing.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS thing.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +thing.menu.lvl.HWDT=HWDT +thing.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT thing.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT thing.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -thing.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -thing.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -thing.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -thing.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS thing.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT thing.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +thing.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +thing.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +thing.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +thing.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K thing.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K thing.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -thing.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -thing.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG thing.menu.wipe.none=Only Sketch thing.menu.wipe.none.upload.erase_cmd= thing.menu.wipe.sdk=Sketch + WiFi Settings @@ -7181,35 +7265,38 @@ thingdev.upload.resetmethod=--before default_reset --after hard_reset thingdev.build.flash_mode=dio thingdev.build.flash_flags=-DFLASHMODE_DIO thingdev.build.flash_freq=40 -thingdev.menu.eesz.512K32=512KB (FS:32KB OTA:~230KB) +thingdev.menu.eesz.512K32=512KB (FS:32KB OTA:~227KB) thingdev.menu.eesz.512K32.build.flash_size=512K thingdev.menu.eesz.512K32.build.flash_ld=eagle.flash.512k32.ld -thingdev.menu.eesz.512K32.build.spiffs_pagesize=256 thingdev.menu.eesz.512K32.build.rfcal_addr=0x7C000 +thingdev.menu.eesz.512K32.upload.maximum_size=520176 thingdev.menu.eesz.512K32.build.spiffs_start=0x73000 thingdev.menu.eesz.512K32.build.spiffs_end=0x7B000 thingdev.menu.eesz.512K32.build.spiffs_blocksize=4096 -thingdev.menu.eesz.512K64=512KB (FS:64KB OTA:~214KB) +thingdev.menu.eesz.512K32.build.spiffs_pagesize=256 +thingdev.menu.eesz.512K64=512KB (FS:64KB OTA:~211KB) thingdev.menu.eesz.512K64.build.flash_size=512K thingdev.menu.eesz.512K64.build.flash_ld=eagle.flash.512k64.ld -thingdev.menu.eesz.512K64.build.spiffs_pagesize=256 thingdev.menu.eesz.512K64.build.rfcal_addr=0x7C000 +thingdev.menu.eesz.512K64.upload.maximum_size=520176 thingdev.menu.eesz.512K64.build.spiffs_start=0x6B000 thingdev.menu.eesz.512K64.build.spiffs_end=0x7B000 thingdev.menu.eesz.512K64.build.spiffs_blocksize=4096 -thingdev.menu.eesz.512K128=512KB (FS:128KB OTA:~182KB) +thingdev.menu.eesz.512K64.build.spiffs_pagesize=256 +thingdev.menu.eesz.512K128=512KB (FS:128KB OTA:~179KB) thingdev.menu.eesz.512K128.build.flash_size=512K thingdev.menu.eesz.512K128.build.flash_ld=eagle.flash.512k128.ld -thingdev.menu.eesz.512K128.build.spiffs_pagesize=256 thingdev.menu.eesz.512K128.build.rfcal_addr=0x7C000 +thingdev.menu.eesz.512K128.upload.maximum_size=520176 thingdev.menu.eesz.512K128.build.spiffs_start=0x5B000 thingdev.menu.eesz.512K128.build.spiffs_end=0x7B000 thingdev.menu.eesz.512K128.build.spiffs_blocksize=4096 -thingdev.menu.eesz.512K=512KB (FS:none OTA:~246KB) +thingdev.menu.eesz.512K128.build.spiffs_pagesize=256 +thingdev.menu.eesz.512K=512KB (FS:none OTA:~243KB) thingdev.menu.eesz.512K.build.flash_size=512K thingdev.menu.eesz.512K.build.flash_ld=eagle.flash.512k.ld -thingdev.menu.eesz.512K.build.spiffs_pagesize=256 thingdev.menu.eesz.512K.build.rfcal_addr=0x7C000 +thingdev.menu.eesz.512K.upload.maximum_size=520176 thingdev.menu.ip.lm2f=v2 Lower Memory thingdev.menu.ip.lm2f.build.lwip_include=lwip2/include thingdev.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -7242,6 +7329,8 @@ thingdev.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +thingdev.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG thingdev.menu.lvl.SSL=SSL thingdev.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL thingdev.menu.lvl.TLS_MEM=TLS_MEM @@ -7286,24 +7375,20 @@ thingdev.menu.lvl.OOM=OOM thingdev.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM thingdev.menu.lvl.MDNS=MDNS thingdev.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -thingdev.menu.lvl.HWDT=HWDT -thingdev.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -thingdev.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -thingdev.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K thingdev.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS thingdev.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +thingdev.menu.lvl.HWDT=HWDT +thingdev.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT thingdev.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT thingdev.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -thingdev.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -thingdev.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -thingdev.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -thingdev.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS thingdev.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT thingdev.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +thingdev.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +thingdev.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +thingdev.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +thingdev.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K thingdev.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K thingdev.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -thingdev.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -thingdev.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG thingdev.menu.wipe.none=Only Sketch thingdev.menu.wipe.none.upload.erase_cmd= thingdev.menu.wipe.sdk=Sketch + WiFi Settings @@ -7393,35 +7478,38 @@ esp210.upload.resetmethod=--before no_reset --after soft_reset esp210.build.flash_mode=qio esp210.build.flash_flags=-DFLASHMODE_QIO esp210.build.flash_freq=40 -esp210.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +esp210.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) esp210.menu.eesz.4M2M.build.flash_size=4M esp210.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -esp210.menu.eesz.4M2M.build.spiffs_pagesize=256 esp210.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +esp210.menu.eesz.4M2M.upload.maximum_size=1044464 esp210.menu.eesz.4M2M.build.spiffs_start=0x200000 esp210.menu.eesz.4M2M.build.spiffs_end=0x3FA000 esp210.menu.eesz.4M2M.build.spiffs_blocksize=8192 -esp210.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +esp210.menu.eesz.4M2M.build.spiffs_pagesize=256 +esp210.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) esp210.menu.eesz.4M3M.build.flash_size=4M esp210.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -esp210.menu.eesz.4M3M.build.spiffs_pagesize=256 esp210.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +esp210.menu.eesz.4M3M.upload.maximum_size=1044464 esp210.menu.eesz.4M3M.build.spiffs_start=0x100000 esp210.menu.eesz.4M3M.build.spiffs_end=0x3FA000 esp210.menu.eesz.4M3M.build.spiffs_blocksize=8192 -esp210.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +esp210.menu.eesz.4M3M.build.spiffs_pagesize=256 +esp210.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) esp210.menu.eesz.4M1M.build.flash_size=4M esp210.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -esp210.menu.eesz.4M1M.build.spiffs_pagesize=256 esp210.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +esp210.menu.eesz.4M1M.upload.maximum_size=1044464 esp210.menu.eesz.4M1M.build.spiffs_start=0x300000 esp210.menu.eesz.4M1M.build.spiffs_end=0x3FA000 esp210.menu.eesz.4M1M.build.spiffs_blocksize=8192 -esp210.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +esp210.menu.eesz.4M1M.build.spiffs_pagesize=256 +esp210.menu.eesz.4M=4MB (FS:none OTA:~3052KB) esp210.menu.eesz.4M.build.flash_size=4M esp210.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -esp210.menu.eesz.4M.build.spiffs_pagesize=256 esp210.menu.eesz.4M.build.rfcal_addr=0x3FC000 +esp210.menu.eesz.4M.upload.maximum_size=1044464 esp210.menu.ip.lm2f=v2 Lower Memory esp210.menu.ip.lm2f.build.lwip_include=lwip2/include esp210.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -7454,6 +7542,8 @@ esp210.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +esp210.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG esp210.menu.lvl.SSL=SSL esp210.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL esp210.menu.lvl.TLS_MEM=TLS_MEM @@ -7498,24 +7588,20 @@ esp210.menu.lvl.OOM=OOM esp210.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM esp210.menu.lvl.MDNS=MDNS esp210.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -esp210.menu.lvl.HWDT=HWDT -esp210.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -esp210.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -esp210.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K esp210.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS esp210.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +esp210.menu.lvl.HWDT=HWDT +esp210.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT esp210.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT esp210.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -esp210.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -esp210.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -esp210.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -esp210.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS esp210.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT esp210.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +esp210.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +esp210.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +esp210.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +esp210.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K esp210.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K esp210.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -esp210.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -esp210.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG esp210.menu.wipe.none=Only Sketch esp210.menu.wipe.none.upload.erase_cmd= esp210.menu.wipe.sdk=Sketch + WiFi Settings @@ -7605,35 +7691,38 @@ espinotee.upload.resetmethod=--before default_reset --after hard_reset espinotee.build.flash_mode=qio espinotee.build.flash_flags=-DFLASHMODE_QIO espinotee.build.flash_freq=40 -espinotee.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +espinotee.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) espinotee.menu.eesz.4M2M.build.flash_size=4M espinotee.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -espinotee.menu.eesz.4M2M.build.spiffs_pagesize=256 espinotee.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +espinotee.menu.eesz.4M2M.upload.maximum_size=1044464 espinotee.menu.eesz.4M2M.build.spiffs_start=0x200000 espinotee.menu.eesz.4M2M.build.spiffs_end=0x3FA000 espinotee.menu.eesz.4M2M.build.spiffs_blocksize=8192 -espinotee.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +espinotee.menu.eesz.4M2M.build.spiffs_pagesize=256 +espinotee.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) espinotee.menu.eesz.4M3M.build.flash_size=4M espinotee.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -espinotee.menu.eesz.4M3M.build.spiffs_pagesize=256 espinotee.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +espinotee.menu.eesz.4M3M.upload.maximum_size=1044464 espinotee.menu.eesz.4M3M.build.spiffs_start=0x100000 espinotee.menu.eesz.4M3M.build.spiffs_end=0x3FA000 espinotee.menu.eesz.4M3M.build.spiffs_blocksize=8192 -espinotee.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +espinotee.menu.eesz.4M3M.build.spiffs_pagesize=256 +espinotee.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) espinotee.menu.eesz.4M1M.build.flash_size=4M espinotee.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -espinotee.menu.eesz.4M1M.build.spiffs_pagesize=256 espinotee.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +espinotee.menu.eesz.4M1M.upload.maximum_size=1044464 espinotee.menu.eesz.4M1M.build.spiffs_start=0x300000 espinotee.menu.eesz.4M1M.build.spiffs_end=0x3FA000 espinotee.menu.eesz.4M1M.build.spiffs_blocksize=8192 -espinotee.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +espinotee.menu.eesz.4M1M.build.spiffs_pagesize=256 +espinotee.menu.eesz.4M=4MB (FS:none OTA:~3052KB) espinotee.menu.eesz.4M.build.flash_size=4M espinotee.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -espinotee.menu.eesz.4M.build.spiffs_pagesize=256 espinotee.menu.eesz.4M.build.rfcal_addr=0x3FC000 +espinotee.menu.eesz.4M.upload.maximum_size=1044464 espinotee.menu.ip.lm2f=v2 Lower Memory espinotee.menu.ip.lm2f.build.lwip_include=lwip2/include espinotee.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -7666,6 +7755,8 @@ espinotee.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +espinotee.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espinotee.menu.lvl.SSL=SSL espinotee.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL espinotee.menu.lvl.TLS_MEM=TLS_MEM @@ -7710,24 +7801,20 @@ espinotee.menu.lvl.OOM=OOM espinotee.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM espinotee.menu.lvl.MDNS=MDNS espinotee.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -espinotee.menu.lvl.HWDT=HWDT -espinotee.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -espinotee.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -espinotee.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K espinotee.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS espinotee.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +espinotee.menu.lvl.HWDT=HWDT +espinotee.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT espinotee.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT espinotee.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -espinotee.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -espinotee.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -espinotee.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -espinotee.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS espinotee.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT espinotee.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +espinotee.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +espinotee.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +espinotee.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +espinotee.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K espinotee.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K espinotee.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -espinotee.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -espinotee.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espinotee.menu.wipe.none=Only Sketch espinotee.menu.wipe.none.upload.erase_cmd= espinotee.menu.wipe.sdk=Sketch + WiFi Settings @@ -7817,35 +7904,38 @@ wifi_kit_8.upload.resetmethod=--before default_reset --after hard_reset wifi_kit_8.build.flash_mode=dio wifi_kit_8.build.flash_flags=-DFLASHMODE_DIO wifi_kit_8.build.flash_freq=40 -wifi_kit_8.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +wifi_kit_8.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) wifi_kit_8.menu.eesz.4M2M.build.flash_size=4M wifi_kit_8.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -wifi_kit_8.menu.eesz.4M2M.build.spiffs_pagesize=256 wifi_kit_8.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +wifi_kit_8.menu.eesz.4M2M.upload.maximum_size=1044464 wifi_kit_8.menu.eesz.4M2M.build.spiffs_start=0x200000 wifi_kit_8.menu.eesz.4M2M.build.spiffs_end=0x3FA000 wifi_kit_8.menu.eesz.4M2M.build.spiffs_blocksize=8192 -wifi_kit_8.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +wifi_kit_8.menu.eesz.4M2M.build.spiffs_pagesize=256 +wifi_kit_8.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) wifi_kit_8.menu.eesz.4M3M.build.flash_size=4M wifi_kit_8.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -wifi_kit_8.menu.eesz.4M3M.build.spiffs_pagesize=256 wifi_kit_8.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +wifi_kit_8.menu.eesz.4M3M.upload.maximum_size=1044464 wifi_kit_8.menu.eesz.4M3M.build.spiffs_start=0x100000 wifi_kit_8.menu.eesz.4M3M.build.spiffs_end=0x3FA000 wifi_kit_8.menu.eesz.4M3M.build.spiffs_blocksize=8192 -wifi_kit_8.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +wifi_kit_8.menu.eesz.4M3M.build.spiffs_pagesize=256 +wifi_kit_8.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) wifi_kit_8.menu.eesz.4M1M.build.flash_size=4M wifi_kit_8.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -wifi_kit_8.menu.eesz.4M1M.build.spiffs_pagesize=256 wifi_kit_8.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +wifi_kit_8.menu.eesz.4M1M.upload.maximum_size=1044464 wifi_kit_8.menu.eesz.4M1M.build.spiffs_start=0x300000 wifi_kit_8.menu.eesz.4M1M.build.spiffs_end=0x3FA000 wifi_kit_8.menu.eesz.4M1M.build.spiffs_blocksize=8192 -wifi_kit_8.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +wifi_kit_8.menu.eesz.4M1M.build.spiffs_pagesize=256 +wifi_kit_8.menu.eesz.4M=4MB (FS:none OTA:~3052KB) wifi_kit_8.menu.eesz.4M.build.flash_size=4M wifi_kit_8.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -wifi_kit_8.menu.eesz.4M.build.spiffs_pagesize=256 wifi_kit_8.menu.eesz.4M.build.rfcal_addr=0x3FC000 +wifi_kit_8.menu.eesz.4M.upload.maximum_size=1044464 wifi_kit_8.menu.ip.lm2f=v2 Lower Memory wifi_kit_8.menu.ip.lm2f.build.lwip_include=lwip2/include wifi_kit_8.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -7878,6 +7968,8 @@ wifi_kit_8.menu.dbg.Serial1=Serial1 wifi_kit_8.menu.dbg.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 wifi_kit_8.menu.lvl.None____=None wifi_kit_8.menu.lvl.None____.build.debug_level= +wifi_kit_8.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +wifi_kit_8.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG 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 @@ -7922,24 +8014,20 @@ wifi_kit_8.menu.lvl.OOM=OOM wifi_kit_8.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM wifi_kit_8.menu.lvl.MDNS=MDNS wifi_kit_8.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -wifi_kit_8.menu.lvl.HWDT=HWDT -wifi_kit_8.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -wifi_kit_8.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -wifi_kit_8.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K wifi_kit_8.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS wifi_kit_8.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +wifi_kit_8.menu.lvl.HWDT=HWDT +wifi_kit_8.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT wifi_kit_8.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT wifi_kit_8.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -wifi_kit_8.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -wifi_kit_8.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -wifi_kit_8.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -wifi_kit_8.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS wifi_kit_8.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT wifi_kit_8.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +wifi_kit_8.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +wifi_kit_8.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +wifi_kit_8.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +wifi_kit_8.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K wifi_kit_8.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K wifi_kit_8.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -wifi_kit_8.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -wifi_kit_8.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG wifi_kit_8.menu.wipe.none=Only Sketch wifi_kit_8.menu.wipe.none.upload.erase_cmd= wifi_kit_8.menu.wipe.sdk=Sketch + WiFi Settings @@ -8029,35 +8117,38 @@ wifiduino.upload.resetmethod=--before default_reset --after hard_reset wifiduino.build.flash_mode=dio wifiduino.build.flash_flags=-DFLASHMODE_DIO wifiduino.build.flash_freq=40 -wifiduino.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +wifiduino.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) wifiduino.menu.eesz.4M2M.build.flash_size=4M wifiduino.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -wifiduino.menu.eesz.4M2M.build.spiffs_pagesize=256 wifiduino.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +wifiduino.menu.eesz.4M2M.upload.maximum_size=1044464 wifiduino.menu.eesz.4M2M.build.spiffs_start=0x200000 wifiduino.menu.eesz.4M2M.build.spiffs_end=0x3FA000 wifiduino.menu.eesz.4M2M.build.spiffs_blocksize=8192 -wifiduino.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +wifiduino.menu.eesz.4M2M.build.spiffs_pagesize=256 +wifiduino.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) wifiduino.menu.eesz.4M3M.build.flash_size=4M wifiduino.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -wifiduino.menu.eesz.4M3M.build.spiffs_pagesize=256 wifiduino.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +wifiduino.menu.eesz.4M3M.upload.maximum_size=1044464 wifiduino.menu.eesz.4M3M.build.spiffs_start=0x100000 wifiduino.menu.eesz.4M3M.build.spiffs_end=0x3FA000 wifiduino.menu.eesz.4M3M.build.spiffs_blocksize=8192 -wifiduino.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +wifiduino.menu.eesz.4M3M.build.spiffs_pagesize=256 +wifiduino.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) wifiduino.menu.eesz.4M1M.build.flash_size=4M wifiduino.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -wifiduino.menu.eesz.4M1M.build.spiffs_pagesize=256 wifiduino.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +wifiduino.menu.eesz.4M1M.upload.maximum_size=1044464 wifiduino.menu.eesz.4M1M.build.spiffs_start=0x300000 wifiduino.menu.eesz.4M1M.build.spiffs_end=0x3FA000 wifiduino.menu.eesz.4M1M.build.spiffs_blocksize=8192 -wifiduino.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +wifiduino.menu.eesz.4M1M.build.spiffs_pagesize=256 +wifiduino.menu.eesz.4M=4MB (FS:none OTA:~3052KB) wifiduino.menu.eesz.4M.build.flash_size=4M wifiduino.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -wifiduino.menu.eesz.4M.build.spiffs_pagesize=256 wifiduino.menu.eesz.4M.build.rfcal_addr=0x3FC000 +wifiduino.menu.eesz.4M.upload.maximum_size=1044464 wifiduino.menu.ip.lm2f=v2 Lower Memory wifiduino.menu.ip.lm2f.build.lwip_include=lwip2/include wifiduino.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -8090,6 +8181,8 @@ wifiduino.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +wifiduino.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG wifiduino.menu.lvl.SSL=SSL wifiduino.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL wifiduino.menu.lvl.TLS_MEM=TLS_MEM @@ -8134,24 +8227,20 @@ wifiduino.menu.lvl.OOM=OOM wifiduino.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM wifiduino.menu.lvl.MDNS=MDNS wifiduino.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -wifiduino.menu.lvl.HWDT=HWDT -wifiduino.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -wifiduino.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -wifiduino.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K wifiduino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS wifiduino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +wifiduino.menu.lvl.HWDT=HWDT +wifiduino.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT wifiduino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT wifiduino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -wifiduino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -wifiduino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -wifiduino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -wifiduino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS wifiduino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT wifiduino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +wifiduino.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +wifiduino.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +wifiduino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +wifiduino.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K wifiduino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K wifiduino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -wifiduino.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -wifiduino.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG wifiduino.menu.wipe.none=Only Sketch wifiduino.menu.wipe.none.upload.erase_cmd= wifiduino.menu.wipe.sdk=Sketch + WiFi Settings @@ -8265,67 +8354,74 @@ wifinfo.menu.FlashFreq.20=20MHz wifinfo.menu.FlashFreq.20.build.flash_freq=20 wifinfo.menu.FlashFreq.26=26MHz wifinfo.menu.FlashFreq.26.build.flash_freq=26 -wifinfo.menu.eesz.1M64=1MB (FS:64KB OTA:~470KB) +wifinfo.menu.eesz.1M64=1MB (FS:64KB OTA:~467KB) wifinfo.menu.eesz.1M64.build.flash_size=1M wifinfo.menu.eesz.1M64.build.flash_ld=eagle.flash.1m64.ld -wifinfo.menu.eesz.1M64.build.spiffs_pagesize=256 wifinfo.menu.eesz.1M64.build.rfcal_addr=0xFC000 +wifinfo.menu.eesz.1M64.upload.maximum_size=1044464 wifinfo.menu.eesz.1M64.build.spiffs_start=0xEB000 wifinfo.menu.eesz.1M64.build.spiffs_end=0xFB000 wifinfo.menu.eesz.1M64.build.spiffs_blocksize=4096 -wifinfo.menu.eesz.1M128=1MB (FS:128KB OTA:~438KB) +wifinfo.menu.eesz.1M64.build.spiffs_pagesize=256 +wifinfo.menu.eesz.1M128=1MB (FS:128KB OTA:~435KB) wifinfo.menu.eesz.1M128.build.flash_size=1M wifinfo.menu.eesz.1M128.build.flash_ld=eagle.flash.1m128.ld -wifinfo.menu.eesz.1M128.build.spiffs_pagesize=256 wifinfo.menu.eesz.1M128.build.rfcal_addr=0xFC000 +wifinfo.menu.eesz.1M128.upload.maximum_size=1044464 wifinfo.menu.eesz.1M128.build.spiffs_start=0xDB000 wifinfo.menu.eesz.1M128.build.spiffs_end=0xFB000 wifinfo.menu.eesz.1M128.build.spiffs_blocksize=4096 -wifinfo.menu.eesz.1M144=1MB (FS:144KB OTA:~430KB) +wifinfo.menu.eesz.1M128.build.spiffs_pagesize=256 +wifinfo.menu.eesz.1M144=1MB (FS:144KB OTA:~427KB) wifinfo.menu.eesz.1M144.build.flash_size=1M wifinfo.menu.eesz.1M144.build.flash_ld=eagle.flash.1m144.ld -wifinfo.menu.eesz.1M144.build.spiffs_pagesize=256 wifinfo.menu.eesz.1M144.build.rfcal_addr=0xFC000 +wifinfo.menu.eesz.1M144.upload.maximum_size=1044464 wifinfo.menu.eesz.1M144.build.spiffs_start=0xD7000 wifinfo.menu.eesz.1M144.build.spiffs_end=0xFB000 wifinfo.menu.eesz.1M144.build.spiffs_blocksize=4096 -wifinfo.menu.eesz.1M160=1MB (FS:160KB OTA:~422KB) +wifinfo.menu.eesz.1M144.build.spiffs_pagesize=256 +wifinfo.menu.eesz.1M160=1MB (FS:160KB OTA:~419KB) wifinfo.menu.eesz.1M160.build.flash_size=1M wifinfo.menu.eesz.1M160.build.flash_ld=eagle.flash.1m160.ld -wifinfo.menu.eesz.1M160.build.spiffs_pagesize=256 wifinfo.menu.eesz.1M160.build.rfcal_addr=0xFC000 +wifinfo.menu.eesz.1M160.upload.maximum_size=1044464 wifinfo.menu.eesz.1M160.build.spiffs_start=0xD3000 wifinfo.menu.eesz.1M160.build.spiffs_end=0xFB000 wifinfo.menu.eesz.1M160.build.spiffs_blocksize=4096 -wifinfo.menu.eesz.1M192=1MB (FS:192KB OTA:~406KB) +wifinfo.menu.eesz.1M160.build.spiffs_pagesize=256 +wifinfo.menu.eesz.1M192=1MB (FS:192KB OTA:~403KB) wifinfo.menu.eesz.1M192.build.flash_size=1M wifinfo.menu.eesz.1M192.build.flash_ld=eagle.flash.1m192.ld -wifinfo.menu.eesz.1M192.build.spiffs_pagesize=256 wifinfo.menu.eesz.1M192.build.rfcal_addr=0xFC000 +wifinfo.menu.eesz.1M192.upload.maximum_size=1044464 wifinfo.menu.eesz.1M192.build.spiffs_start=0xCB000 wifinfo.menu.eesz.1M192.build.spiffs_end=0xFB000 wifinfo.menu.eesz.1M192.build.spiffs_blocksize=4096 -wifinfo.menu.eesz.1M256=1MB (FS:256KB OTA:~374KB) +wifinfo.menu.eesz.1M192.build.spiffs_pagesize=256 +wifinfo.menu.eesz.1M256=1MB (FS:256KB OTA:~371KB) wifinfo.menu.eesz.1M256.build.flash_size=1M wifinfo.menu.eesz.1M256.build.flash_ld=eagle.flash.1m256.ld -wifinfo.menu.eesz.1M256.build.spiffs_pagesize=256 wifinfo.menu.eesz.1M256.build.rfcal_addr=0xFC000 +wifinfo.menu.eesz.1M256.upload.maximum_size=1044464 wifinfo.menu.eesz.1M256.build.spiffs_start=0xBB000 wifinfo.menu.eesz.1M256.build.spiffs_end=0xFB000 wifinfo.menu.eesz.1M256.build.spiffs_blocksize=4096 -wifinfo.menu.eesz.1M512=1MB (FS:512KB OTA:~246KB) +wifinfo.menu.eesz.1M256.build.spiffs_pagesize=256 +wifinfo.menu.eesz.1M512=1MB (FS:512KB OTA:~243KB) wifinfo.menu.eesz.1M512.build.flash_size=1M wifinfo.menu.eesz.1M512.build.flash_ld=eagle.flash.1m512.ld -wifinfo.menu.eesz.1M512.build.spiffs_pagesize=256 wifinfo.menu.eesz.1M512.build.rfcal_addr=0xFC000 +wifinfo.menu.eesz.1M512.upload.maximum_size=1044464 wifinfo.menu.eesz.1M512.build.spiffs_start=0x7B000 wifinfo.menu.eesz.1M512.build.spiffs_end=0xFB000 wifinfo.menu.eesz.1M512.build.spiffs_blocksize=8192 -wifinfo.menu.eesz.1M=1MB (FS:none OTA:~502KB) +wifinfo.menu.eesz.1M512.build.spiffs_pagesize=256 +wifinfo.menu.eesz.1M=1MB (FS:none OTA:~499KB) wifinfo.menu.eesz.1M.build.flash_size=1M wifinfo.menu.eesz.1M.build.flash_ld=eagle.flash.1m.ld -wifinfo.menu.eesz.1M.build.spiffs_pagesize=256 wifinfo.menu.eesz.1M.build.rfcal_addr=0xFC000 +wifinfo.menu.eesz.1M.upload.maximum_size=1044464 wifinfo.menu.ip.lm2f=v2 Lower Memory wifinfo.menu.ip.lm2f.build.lwip_include=lwip2/include wifinfo.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -8358,6 +8454,8 @@ wifinfo.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +wifinfo.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG wifinfo.menu.lvl.SSL=SSL wifinfo.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL wifinfo.menu.lvl.TLS_MEM=TLS_MEM @@ -8402,24 +8500,20 @@ wifinfo.menu.lvl.OOM=OOM wifinfo.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM wifinfo.menu.lvl.MDNS=MDNS wifinfo.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -wifinfo.menu.lvl.HWDT=HWDT -wifinfo.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -wifinfo.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -wifinfo.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K wifinfo.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS wifinfo.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +wifinfo.menu.lvl.HWDT=HWDT +wifinfo.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT wifinfo.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT wifinfo.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -wifinfo.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -wifinfo.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -wifinfo.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -wifinfo.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS wifinfo.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT wifinfo.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +wifinfo.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +wifinfo.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +wifinfo.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +wifinfo.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K wifinfo.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K wifinfo.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -wifinfo.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -wifinfo.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG wifinfo.menu.wipe.none=Only Sketch wifinfo.menu.wipe.none.upload.erase_cmd= wifinfo.menu.wipe.sdk=Sketch + WiFi Settings @@ -8512,35 +8606,38 @@ cw01.menu.CrystalFreq.40.build.extra_flags=-DF_CRYSTAL=40000000 cw01.build.flash_mode=dio cw01.build.flash_flags=-DFLASHMODE_DIO cw01.build.flash_freq=40 -cw01.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB) +cw01.menu.eesz.4M2M=4MB (FS:2024KB OTA:~1MB) cw01.menu.eesz.4M2M.build.flash_size=4M cw01.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld -cw01.menu.eesz.4M2M.build.spiffs_pagesize=256 cw01.menu.eesz.4M2M.build.rfcal_addr=0x3FC000 +cw01.menu.eesz.4M2M.upload.maximum_size=1044464 cw01.menu.eesz.4M2M.build.spiffs_start=0x200000 cw01.menu.eesz.4M2M.build.spiffs_end=0x3FA000 cw01.menu.eesz.4M2M.build.spiffs_blocksize=8192 -cw01.menu.eesz.4M3M=4MB (FS:3MB OTA:~512KB) +cw01.menu.eesz.4M2M.build.spiffs_pagesize=256 +cw01.menu.eesz.4M3M=4MB (FS:3048KB OTA:~509KB) cw01.menu.eesz.4M3M.build.flash_size=4M cw01.menu.eesz.4M3M.build.flash_ld=eagle.flash.4m3m.ld -cw01.menu.eesz.4M3M.build.spiffs_pagesize=256 cw01.menu.eesz.4M3M.build.rfcal_addr=0x3FC000 +cw01.menu.eesz.4M3M.upload.maximum_size=1044464 cw01.menu.eesz.4M3M.build.spiffs_start=0x100000 cw01.menu.eesz.4M3M.build.spiffs_end=0x3FA000 cw01.menu.eesz.4M3M.build.spiffs_blocksize=8192 -cw01.menu.eesz.4M1M=4MB (FS:1MB OTA:~1019KB) +cw01.menu.eesz.4M3M.build.spiffs_pagesize=256 +cw01.menu.eesz.4M1M=4MB (FS:1000KB OTA:~2MB) cw01.menu.eesz.4M1M.build.flash_size=4M cw01.menu.eesz.4M1M.build.flash_ld=eagle.flash.4m1m.ld -cw01.menu.eesz.4M1M.build.spiffs_pagesize=256 cw01.menu.eesz.4M1M.build.rfcal_addr=0x3FC000 +cw01.menu.eesz.4M1M.upload.maximum_size=1044464 cw01.menu.eesz.4M1M.build.spiffs_start=0x300000 cw01.menu.eesz.4M1M.build.spiffs_end=0x3FA000 cw01.menu.eesz.4M1M.build.spiffs_blocksize=8192 -cw01.menu.eesz.4M=4MB (FS:none OTA:~1019KB) +cw01.menu.eesz.4M1M.build.spiffs_pagesize=256 +cw01.menu.eesz.4M=4MB (FS:none OTA:~3052KB) cw01.menu.eesz.4M.build.flash_size=4M cw01.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld -cw01.menu.eesz.4M.build.spiffs_pagesize=256 cw01.menu.eesz.4M.build.rfcal_addr=0x3FC000 +cw01.menu.eesz.4M.upload.maximum_size=1044464 cw01.menu.ip.lm2f=v2 Lower Memory cw01.menu.ip.lm2f.build.lwip_include=lwip2/include cw01.menu.ip.lm2f.build.lwip_lib=-llwip2-536-feat @@ -8573,6 +8670,8 @@ cw01.menu.dbg.Serial1=Serial1 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.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG +cw01.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG cw01.menu.lvl.SSL=SSL cw01.menu.lvl.SSL.build.debug_level= -DDEBUG_ESP_SSL cw01.menu.lvl.TLS_MEM=TLS_MEM @@ -8617,24 +8716,20 @@ cw01.menu.lvl.OOM=OOM cw01.menu.lvl.OOM.build.debug_level= -DDEBUG_ESP_OOM cw01.menu.lvl.MDNS=MDNS cw01.menu.lvl.MDNS.build.debug_level= -DDEBUG_ESP_MDNS -cw01.menu.lvl.HWDT=HWDT -cw01.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT -cw01.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K -cw01.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K cw01.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS cw01.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS +cw01.menu.lvl.HWDT=HWDT +cw01.menu.lvl.HWDT.build.debug_level= -DDEBUG_ESP_HWDT cw01.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT cw01.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT -cw01.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K -cw01.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -cw01.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS -cw01.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNS.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS cw01.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT cw01.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT +cw01.menu.lvl.HWDT_NOEXTRA4K=HWDT_NOEXTRA4K +cw01.menu.lvl.HWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_HWDT_NOEXTRA4K +cw01.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K +cw01.menu.lvl.COREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K cw01.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM+MDNS+HWDT_NOEXTRA4K cw01.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOMMDNSHWDT_NOEXTRA4K.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -DDEBUG_ESP_MDNS -DDEBUG_ESP_HWDT_NOEXTRA4K -cw01.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG -cw01.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG cw01.menu.wipe.none=Only Sketch cw01.menu.wipe.none.upload.erase_cmd= cw01.menu.wipe.sdk=Sketch + WiFi Settings diff --git a/tools/boards.txt.py b/tools/boards.txt.py index f327ad8e3d..95d9f3c58d 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1893,8 +1893,8 @@ def flash_map (flash_size, fs_size = Bytes(0), name = ''): assert(layout.free == 0) + # used as property value and for .ld output generator ld = f'eagle.flash.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}.ld'.lower() - menu = f'.menu.eesz.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}' max_upload_size = min(Megabytes(1), flash_size) - reserved if empty: @@ -1911,15 +1911,17 @@ def flash_map (flash_size, fs_size = Bytes(0), name = ''): "eeprom": layout["EEPROM"], "empty": empty, "fs": fs, + "expected_fs_size": expected_fs_size, "sketch": sketch, "max_upload_size": max_upload_size, "max_ota_size": max_ota_size, "ld": ld, - "menu": menu, } -def menu_generate (*, ld, menu, max_ota_size, max_upload_size, rfcal, flash_size, fs, **kwargs): +def menu_generate (*, ld, max_ota_size, max_upload_size, rfcal, flash_size, fs, expected_fs_size, **kwargs): + menu = f'.menu.eesz.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}' + out = [ ( menu, f'{humanize_flash_menu(flash_size)} (FS:{humanize(fs.size) if fs else "none"} OTA:~{humanize(max_ota_size)})' ), ( f'{menu}.build.flash_size', humanize_flash(flash_size) ), diff --git a/tools/sdk/ld/eagle.flash.16m.ld b/tools/sdk/ld/eagle.flash.16m.ld new file mode 100644 index 0000000000..e5034e931c --- /dev/null +++ b/tools/sdk/ld/eagle.flash.16m.ld @@ -0,0 +1,26 @@ +/* Flash Split for 16MB chips */ +/* sketch @0x40201010 (~1019KB) (1044464B) */ +/* empty @0x40300000 (~14MB) (15708160B) */ +/* eeprom @0x411FB000 (4096B) */ +/* rfcal @0x411FC000 (4096B) */ +/* wifi @0x411FD000 (12288B) */ + +MEMORY +{ + dport0_0_seg : org = 0x3FF00000, len = 0x10 + dram0_0_seg : org = 0x3FFE8000, len = 0x14000 + irom0_0_seg : org = 0x40201010, len = 0xfeff0 +} + +PROVIDE ( _FS_start = 0x411FB000 ); +PROVIDE ( _FS_end = 0x411FB000 ); +PROVIDE ( _FS_page = 0x0 ); +PROVIDE ( _FS_block = 0x0 ); +PROVIDE ( _EEPROM_start = 0x411FB000 ); +/* The following symbols are DEPRECATED and will be REMOVED in a future release */ +PROVIDE ( _SPIFFS_start = 0x411FB000 ); +PROVIDE ( _SPIFFS_end = 0x411FB000 ); +PROVIDE ( _SPIFFS_page = 0x0 ); +PROVIDE ( _SPIFFS_block = 0x0 ); + +INCLUDE "local.eagle.app.v6.common.ld" diff --git a/tools/sdk/ld/eagle.flash.16m14m.ld b/tools/sdk/ld/eagle.flash.16m14m.ld index 13c1243fef..418e1701c9 100644 --- a/tools/sdk/ld/eagle.flash.16m14m.ld +++ b/tools/sdk/ld/eagle.flash.16m14m.ld @@ -1,10 +1,10 @@ -/* Flash Split for 16M chips */ -/* sketch @0x40200000 (~1019KB) (1044464B) */ -/* empty @0x402FEFF0 (~1028KB) (1052688B) */ -/* spiffs @0x40400000 (~14312KB) (14655488B) */ -/* eeprom @0x411FB000 (4KB) */ -/* rfcal @0x411FC000 (4KB) */ -/* wifi @0x411FD000 (12KB) */ +/* Flash Split for 16MB chips */ +/* sketch @0x40201010 (~1019KB) (1044464B) */ +/* empty @0x40300000 (~1MB) (1048576B) */ +/* fs @0x40400000 (~13MB) (14655488B) */ +/* eeprom @0x411FB000 (4096B) */ +/* rfcal @0x411FC000 (4096B) */ +/* wifi @0x411FD000 (12288B) */ MEMORY { @@ -17,7 +17,7 @@ PROVIDE ( _FS_start = 0x40400000 ); PROVIDE ( _FS_end = 0x411FA000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x2000 ); -PROVIDE ( _EEPROM_start = 0x411fb000 ); +PROVIDE ( _EEPROM_start = 0x411FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x40400000 ); PROVIDE ( _SPIFFS_end = 0x411FA000 ); diff --git a/tools/sdk/ld/eagle.flash.16m15m.ld b/tools/sdk/ld/eagle.flash.16m15m.ld index ad689f0e9f..d323da3946 100644 --- a/tools/sdk/ld/eagle.flash.16m15m.ld +++ b/tools/sdk/ld/eagle.flash.16m15m.ld @@ -1,10 +1,9 @@ -/* Flash Split for 16M chips */ -/* sketch @0x40200000 (~1019KB) (1044464B) */ -/* empty @0x402FEFF0 (~4KB) (4112B) */ -/* spiffs @0x40300000 (~15336KB) (15704064B) */ -/* eeprom @0x411FB000 (4KB) */ -/* rfcal @0x411FC000 (4KB) */ -/* wifi @0x411FD000 (12KB) */ +/* Flash Split for 16MB chips */ +/* sketch @0x40201010 (~1019KB) (1044464B) */ +/* fs @0x40300000 (~14MB) (15704064B) */ +/* eeprom @0x411FB000 (4096B) */ +/* rfcal @0x411FC000 (4096B) */ +/* wifi @0x411FD000 (12288B) */ MEMORY { @@ -17,7 +16,7 @@ PROVIDE ( _FS_start = 0x40300000 ); PROVIDE ( _FS_end = 0x411FA000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x2000 ); -PROVIDE ( _EEPROM_start = 0x411fb000 ); +PROVIDE ( _EEPROM_start = 0x411FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x40300000 ); PROVIDE ( _SPIFFS_end = 0x411FA000 ); diff --git a/tools/sdk/ld/eagle.flash.1m.ld b/tools/sdk/ld/eagle.flash.1m.ld index 65c4e06ac5..047cde341f 100644 --- a/tools/sdk/ld/eagle.flash.1m.ld +++ b/tools/sdk/ld/eagle.flash.1m.ld @@ -1,10 +1,8 @@ -/* Flash Split for 1M chips */ -/* sketch @0x40200000 (~999KB) (1023984B) */ -/* empty @0x402F9FF0 (~4KB) (4112B) */ -/* spiffs @0x402FB000 (~0KB) (0B) */ -/* eeprom @0x402FB000 (4KB) */ -/* rfcal @0x402FC000 (4KB) */ -/* wifi @0x402FD000 (12KB) */ +/* Flash Split for 1MB chips */ +/* sketch @0x40201010 (~999KB) (1023984B) */ +/* eeprom @0x402FB000 (4096B) */ +/* rfcal @0x402FC000 (4096B) */ +/* wifi @0x402FD000 (12288B) */ MEMORY { @@ -17,7 +15,7 @@ PROVIDE ( _FS_start = 0x402FB000 ); PROVIDE ( _FS_end = 0x402FB000 ); PROVIDE ( _FS_page = 0x0 ); PROVIDE ( _FS_block = 0x0 ); -PROVIDE ( _EEPROM_start = 0x402fb000 ); +PROVIDE ( _EEPROM_start = 0x402FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x402FB000 ); PROVIDE ( _SPIFFS_end = 0x402FB000 ); diff --git a/tools/sdk/ld/eagle.flash.1m128.ld b/tools/sdk/ld/eagle.flash.1m128.ld index 26de470135..807be3413d 100644 --- a/tools/sdk/ld/eagle.flash.1m128.ld +++ b/tools/sdk/ld/eagle.flash.1m128.ld @@ -1,10 +1,9 @@ -/* Flash Split for 1M chips */ -/* sketch @0x40200000 (~871KB) (892912B) */ -/* empty @0x402D9FF0 (~4KB) (4112B) */ -/* spiffs @0x402DB000 (~128KB) (131072B) */ -/* eeprom @0x402FB000 (4KB) */ -/* rfcal @0x402FC000 (4KB) */ -/* wifi @0x402FD000 (12KB) */ +/* Flash Split for 1MB chips */ +/* sketch @0x40201010 (~871KB) (892912B) */ +/* fs @0x402DB000 (~128KB) (131072B) */ +/* eeprom @0x402FB000 (4096B) */ +/* rfcal @0x402FC000 (4096B) */ +/* wifi @0x402FD000 (12288B) */ MEMORY { @@ -17,7 +16,7 @@ PROVIDE ( _FS_start = 0x402DB000 ); PROVIDE ( _FS_end = 0x402FB000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x1000 ); -PROVIDE ( _EEPROM_start = 0x402fb000 ); +PROVIDE ( _EEPROM_start = 0x402FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x402DB000 ); PROVIDE ( _SPIFFS_end = 0x402FB000 ); diff --git a/tools/sdk/ld/eagle.flash.1m144.ld b/tools/sdk/ld/eagle.flash.1m144.ld index cb3df4da48..d98411848a 100644 --- a/tools/sdk/ld/eagle.flash.1m144.ld +++ b/tools/sdk/ld/eagle.flash.1m144.ld @@ -1,10 +1,9 @@ -/* Flash Split for 1M chips */ -/* sketch @0x40200000 (~855KB) (876528B) */ -/* empty @0x402D5FF0 (~4KB) (4112B) */ -/* spiffs @0x402D7000 (~144KB) (147456B) */ -/* eeprom @0x402FB000 (4KB) */ -/* rfcal @0x402FC000 (4KB) */ -/* wifi @0x402FD000 (12KB) */ +/* Flash Split for 1MB chips */ +/* sketch @0x40201010 (~855KB) (876528B) */ +/* fs @0x402D7000 (~144KB) (147456B) */ +/* eeprom @0x402FB000 (4096B) */ +/* rfcal @0x402FC000 (4096B) */ +/* wifi @0x402FD000 (12288B) */ MEMORY { @@ -17,7 +16,7 @@ PROVIDE ( _FS_start = 0x402D7000 ); PROVIDE ( _FS_end = 0x402FB000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x1000 ); -PROVIDE ( _EEPROM_start = 0x402fb000 ); +PROVIDE ( _EEPROM_start = 0x402FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x402D7000 ); PROVIDE ( _SPIFFS_end = 0x402FB000 ); diff --git a/tools/sdk/ld/eagle.flash.1m160.ld b/tools/sdk/ld/eagle.flash.1m160.ld index b4a26c4a78..ee1a90fd20 100644 --- a/tools/sdk/ld/eagle.flash.1m160.ld +++ b/tools/sdk/ld/eagle.flash.1m160.ld @@ -1,10 +1,9 @@ -/* Flash Split for 1M chips */ -/* sketch @0x40200000 (~839KB) (860144B) */ -/* empty @0x402D1FF0 (~4KB) (4112B) */ -/* spiffs @0x402D3000 (~160KB) (163840B) */ -/* eeprom @0x402FB000 (4KB) */ -/* rfcal @0x402FC000 (4KB) */ -/* wifi @0x402FD000 (12KB) */ +/* Flash Split for 1MB chips */ +/* sketch @0x40201010 (~839KB) (860144B) */ +/* fs @0x402D3000 (~160KB) (163840B) */ +/* eeprom @0x402FB000 (4096B) */ +/* rfcal @0x402FC000 (4096B) */ +/* wifi @0x402FD000 (12288B) */ MEMORY { @@ -17,7 +16,7 @@ PROVIDE ( _FS_start = 0x402D3000 ); PROVIDE ( _FS_end = 0x402FB000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x1000 ); -PROVIDE ( _EEPROM_start = 0x402fb000 ); +PROVIDE ( _EEPROM_start = 0x402FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x402D3000 ); PROVIDE ( _SPIFFS_end = 0x402FB000 ); diff --git a/tools/sdk/ld/eagle.flash.1m192.ld b/tools/sdk/ld/eagle.flash.1m192.ld index 0999e501da..168412c7b1 100644 --- a/tools/sdk/ld/eagle.flash.1m192.ld +++ b/tools/sdk/ld/eagle.flash.1m192.ld @@ -1,10 +1,9 @@ -/* Flash Split for 1M chips */ -/* sketch @0x40200000 (~807KB) (827376B) */ -/* empty @0x402C9FF0 (~4KB) (4112B) */ -/* spiffs @0x402CB000 (~192KB) (196608B) */ -/* eeprom @0x402FB000 (4KB) */ -/* rfcal @0x402FC000 (4KB) */ -/* wifi @0x402FD000 (12KB) */ +/* Flash Split for 1MB chips */ +/* sketch @0x40201010 (~807KB) (827376B) */ +/* fs @0x402CB000 (~192KB) (196608B) */ +/* eeprom @0x402FB000 (4096B) */ +/* rfcal @0x402FC000 (4096B) */ +/* wifi @0x402FD000 (12288B) */ MEMORY { @@ -17,7 +16,7 @@ PROVIDE ( _FS_start = 0x402CB000 ); PROVIDE ( _FS_end = 0x402FB000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x1000 ); -PROVIDE ( _EEPROM_start = 0x402fb000 ); +PROVIDE ( _EEPROM_start = 0x402FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x402CB000 ); PROVIDE ( _SPIFFS_end = 0x402FB000 ); diff --git a/tools/sdk/ld/eagle.flash.1m256.ld b/tools/sdk/ld/eagle.flash.1m256.ld index 1e07141235..584ec4b0d2 100644 --- a/tools/sdk/ld/eagle.flash.1m256.ld +++ b/tools/sdk/ld/eagle.flash.1m256.ld @@ -1,10 +1,9 @@ -/* Flash Split for 1M chips */ -/* sketch @0x40200000 (~743KB) (761840B) */ -/* empty @0x402B9FF0 (~4KB) (4112B) */ -/* spiffs @0x402BB000 (~256KB) (262144B) */ -/* eeprom @0x402FB000 (4KB) */ -/* rfcal @0x402FC000 (4KB) */ -/* wifi @0x402FD000 (12KB) */ +/* Flash Split for 1MB chips */ +/* sketch @0x40201010 (~743KB) (761840B) */ +/* fs @0x402BB000 (~256KB) (262144B) */ +/* eeprom @0x402FB000 (4096B) */ +/* rfcal @0x402FC000 (4096B) */ +/* wifi @0x402FD000 (12288B) */ MEMORY { @@ -17,7 +16,7 @@ PROVIDE ( _FS_start = 0x402BB000 ); PROVIDE ( _FS_end = 0x402FB000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x1000 ); -PROVIDE ( _EEPROM_start = 0x402fb000 ); +PROVIDE ( _EEPROM_start = 0x402FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x402BB000 ); PROVIDE ( _SPIFFS_end = 0x402FB000 ); diff --git a/tools/sdk/ld/eagle.flash.1m512.ld b/tools/sdk/ld/eagle.flash.1m512.ld index 1e3b42f1b3..f080bf83f4 100644 --- a/tools/sdk/ld/eagle.flash.1m512.ld +++ b/tools/sdk/ld/eagle.flash.1m512.ld @@ -1,10 +1,9 @@ -/* Flash Split for 1M chips */ -/* sketch @0x40200000 (~487KB) (499696B) */ -/* empty @0x40279FF0 (~4KB) (4112B) */ -/* spiffs @0x4027B000 (~512KB) (524288B) */ -/* eeprom @0x402FB000 (4KB) */ -/* rfcal @0x402FC000 (4KB) */ -/* wifi @0x402FD000 (12KB) */ +/* Flash Split for 1MB chips */ +/* sketch @0x40201010 (~487KB) (499696B) */ +/* fs @0x4027B000 (~512KB) (524288B) */ +/* eeprom @0x402FB000 (4096B) */ +/* rfcal @0x402FC000 (4096B) */ +/* wifi @0x402FD000 (12288B) */ MEMORY { @@ -17,7 +16,7 @@ PROVIDE ( _FS_start = 0x4027B000 ); PROVIDE ( _FS_end = 0x402FB000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x2000 ); -PROVIDE ( _EEPROM_start = 0x402fb000 ); +PROVIDE ( _EEPROM_start = 0x402FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x4027B000 ); PROVIDE ( _SPIFFS_end = 0x402FB000 ); diff --git a/tools/sdk/ld/eagle.flash.1m64.ld b/tools/sdk/ld/eagle.flash.1m64.ld index 9fa4bae54a..fd9dddbdb6 100644 --- a/tools/sdk/ld/eagle.flash.1m64.ld +++ b/tools/sdk/ld/eagle.flash.1m64.ld @@ -1,10 +1,9 @@ -/* Flash Split for 1M chips */ -/* sketch @0x40200000 (~935KB) (958448B) */ -/* empty @0x402E9FF0 (~4KB) (4112B) */ -/* spiffs @0x402EB000 (~64KB) (65536B) */ -/* eeprom @0x402FB000 (4KB) */ -/* rfcal @0x402FC000 (4KB) */ -/* wifi @0x402FD000 (12KB) */ +/* Flash Split for 1MB chips */ +/* sketch @0x40201010 (~935KB) (958448B) */ +/* fs @0x402EB000 (~64KB) (65536B) */ +/* eeprom @0x402FB000 (4096B) */ +/* rfcal @0x402FC000 (4096B) */ +/* wifi @0x402FD000 (12288B) */ MEMORY { @@ -17,7 +16,7 @@ PROVIDE ( _FS_start = 0x402EB000 ); PROVIDE ( _FS_end = 0x402FB000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x1000 ); -PROVIDE ( _EEPROM_start = 0x402fb000 ); +PROVIDE ( _EEPROM_start = 0x402FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x402EB000 ); PROVIDE ( _SPIFFS_end = 0x402FB000 ); diff --git a/tools/sdk/ld/eagle.flash.2m.ld b/tools/sdk/ld/eagle.flash.2m.ld index 125f20278b..3a334d0c5a 100644 --- a/tools/sdk/ld/eagle.flash.2m.ld +++ b/tools/sdk/ld/eagle.flash.2m.ld @@ -1,10 +1,9 @@ -/* Flash Split for 2M chips */ -/* sketch @0x40200000 (~1019KB) (1044464B) */ -/* empty @0x402FEFF0 (~1008KB) (1032208B) */ -/* spiffs @0x403FB000 (~0KB) (0B) */ -/* eeprom @0x403FB000 (4KB) */ -/* rfcal @0x403FC000 (4KB) */ -/* wifi @0x403FD000 (12KB) */ +/* Flash Split for 2MB chips */ +/* sketch @0x40201010 (~1019KB) (1044464B) */ +/* empty @0x40300000 (~1004KB) (1028096B) */ +/* eeprom @0x403FB000 (4096B) */ +/* rfcal @0x403FC000 (4096B) */ +/* wifi @0x403FD000 (12288B) */ MEMORY { @@ -17,7 +16,7 @@ PROVIDE ( _FS_start = 0x403FB000 ); PROVIDE ( _FS_end = 0x403FB000 ); PROVIDE ( _FS_page = 0x0 ); PROVIDE ( _FS_block = 0x0 ); -PROVIDE ( _EEPROM_start = 0x403fb000 ); +PROVIDE ( _EEPROM_start = 0x403FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x403FB000 ); PROVIDE ( _SPIFFS_end = 0x403FB000 ); diff --git a/tools/sdk/ld/eagle.flash.2m128.ld b/tools/sdk/ld/eagle.flash.2m128.ld index e15a7896f1..116ae19a70 100644 --- a/tools/sdk/ld/eagle.flash.2m128.ld +++ b/tools/sdk/ld/eagle.flash.2m128.ld @@ -1,10 +1,10 @@ -/* Flash Split for 2M chips */ -/* sketch @0x40200000 (~1019KB) (1044464B) */ -/* empty @0x402FEFF0 (~900KB) (921616B) */ -/* spiffs @0x403E0000 (~108KB) (110592B) */ -/* eeprom @0x403FB000 (4KB) */ -/* rfcal @0x403FC000 (4KB) */ -/* wifi @0x403FD000 (12KB) */ +/* Flash Split for 2MB chips */ +/* sketch @0x40201010 (~1019KB) (1044464B) */ +/* empty @0x40300000 (~896KB) (917504B) */ +/* fs @0x403E0000 (~108KB) (110592B) */ +/* eeprom @0x403FB000 (4096B) */ +/* rfcal @0x403FC000 (4096B) */ +/* wifi @0x403FD000 (12288B) */ MEMORY { @@ -17,7 +17,7 @@ PROVIDE ( _FS_start = 0x403E0000 ); PROVIDE ( _FS_end = 0x403FB000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x1000 ); -PROVIDE ( _EEPROM_start = 0x403fb000 ); +PROVIDE ( _EEPROM_start = 0x403FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x403E0000 ); PROVIDE ( _SPIFFS_end = 0x403FB000 ); diff --git a/tools/sdk/ld/eagle.flash.2m1m.ld b/tools/sdk/ld/eagle.flash.2m1m.ld index 1190e54d74..aec90267a1 100644 --- a/tools/sdk/ld/eagle.flash.2m1m.ld +++ b/tools/sdk/ld/eagle.flash.2m1m.ld @@ -1,10 +1,9 @@ -/* Flash Split for 2M chips */ -/* sketch @0x40200000 (~1019KB) (1044464B) */ -/* empty @0x402FEFF0 (~4KB) (4112B) */ -/* spiffs @0x40300000 (~1000KB) (1024000B) */ -/* eeprom @0x403FB000 (4KB) */ -/* rfcal @0x403FC000 (4KB) */ -/* wifi @0x403FD000 (12KB) */ +/* Flash Split for 2MB chips */ +/* sketch @0x40201010 (~1019KB) (1044464B) */ +/* fs @0x40300000 (~1000KB) (1024000B) */ +/* eeprom @0x403FB000 (4096B) */ +/* rfcal @0x403FC000 (4096B) */ +/* wifi @0x403FD000 (12288B) */ MEMORY { @@ -17,7 +16,7 @@ PROVIDE ( _FS_start = 0x40300000 ); PROVIDE ( _FS_end = 0x403FA000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x2000 ); -PROVIDE ( _EEPROM_start = 0x403fb000 ); +PROVIDE ( _EEPROM_start = 0x403FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x40300000 ); PROVIDE ( _SPIFFS_end = 0x403FA000 ); diff --git a/tools/sdk/ld/eagle.flash.2m256.ld b/tools/sdk/ld/eagle.flash.2m256.ld index 51259864e7..08b46c3d2a 100644 --- a/tools/sdk/ld/eagle.flash.2m256.ld +++ b/tools/sdk/ld/eagle.flash.2m256.ld @@ -1,10 +1,10 @@ -/* Flash Split for 2M chips */ -/* sketch @0x40200000 (~1019KB) (1044464B) */ -/* empty @0x402FEFF0 (~772KB) (790544B) */ -/* spiffs @0x403C0000 (~236KB) (241664B) */ -/* eeprom @0x403FB000 (4KB) */ -/* rfcal @0x403FC000 (4KB) */ -/* wifi @0x403FD000 (12KB) */ +/* Flash Split for 2MB chips */ +/* sketch @0x40201010 (~1019KB) (1044464B) */ +/* empty @0x40300000 (~768KB) (786432B) */ +/* fs @0x403C0000 (~236KB) (241664B) */ +/* eeprom @0x403FB000 (4096B) */ +/* rfcal @0x403FC000 (4096B) */ +/* wifi @0x403FD000 (12288B) */ MEMORY { @@ -17,7 +17,7 @@ PROVIDE ( _FS_start = 0x403C0000 ); PROVIDE ( _FS_end = 0x403FB000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x1000 ); -PROVIDE ( _EEPROM_start = 0x403fb000 ); +PROVIDE ( _EEPROM_start = 0x403FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x403C0000 ); PROVIDE ( _SPIFFS_end = 0x403FB000 ); diff --git a/tools/sdk/ld/eagle.flash.2m512.ld b/tools/sdk/ld/eagle.flash.2m512.ld index 1c495fca01..31b9efa494 100644 --- a/tools/sdk/ld/eagle.flash.2m512.ld +++ b/tools/sdk/ld/eagle.flash.2m512.ld @@ -1,10 +1,10 @@ -/* Flash Split for 2M chips */ -/* sketch @0x40200000 (~1019KB) (1044464B) */ -/* empty @0x402FEFF0 (~516KB) (528400B) */ -/* spiffs @0x40380000 (~488KB) (499712B) */ -/* eeprom @0x403FB000 (4KB) */ -/* rfcal @0x403FC000 (4KB) */ -/* wifi @0x403FD000 (12KB) */ +/* Flash Split for 2MB chips */ +/* sketch @0x40201010 (~1019KB) (1044464B) */ +/* empty @0x40300000 (~512KB) (524288B) */ +/* fs @0x40380000 (~488KB) (499712B) */ +/* eeprom @0x403FB000 (4096B) */ +/* rfcal @0x403FC000 (4096B) */ +/* wifi @0x403FD000 (12288B) */ MEMORY { @@ -17,7 +17,7 @@ PROVIDE ( _FS_start = 0x40380000 ); PROVIDE ( _FS_end = 0x403FA000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x2000 ); -PROVIDE ( _EEPROM_start = 0x403fb000 ); +PROVIDE ( _EEPROM_start = 0x403FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x40380000 ); PROVIDE ( _SPIFFS_end = 0x403FA000 ); diff --git a/tools/sdk/ld/eagle.flash.2m64.ld b/tools/sdk/ld/eagle.flash.2m64.ld index 5d4fcddc8a..d9e4b9200f 100644 --- a/tools/sdk/ld/eagle.flash.2m64.ld +++ b/tools/sdk/ld/eagle.flash.2m64.ld @@ -1,10 +1,10 @@ -/* Flash Split for 2M chips */ -/* sketch @0x40200000 (~1019KB) (1044464B) */ -/* empty @0x402FEFF0 (~964KB) (987152B) */ -/* spiffs @0x403F0000 (~44KB) (45056B) */ -/* eeprom @0x403FB000 (4KB) */ -/* rfcal @0x403FC000 (4KB) */ -/* wifi @0x403FD000 (12KB) */ +/* Flash Split for 2MB chips */ +/* sketch @0x40201010 (~1019KB) (1044464B) */ +/* empty @0x40300000 (~960KB) (983040B) */ +/* fs @0x403F0000 (~44KB) (45056B) */ +/* eeprom @0x403FB000 (4096B) */ +/* rfcal @0x403FC000 (4096B) */ +/* wifi @0x403FD000 (12288B) */ MEMORY { @@ -17,7 +17,7 @@ PROVIDE ( _FS_start = 0x403F0000 ); PROVIDE ( _FS_end = 0x403FB000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x1000 ); -PROVIDE ( _EEPROM_start = 0x403fb000 ); +PROVIDE ( _EEPROM_start = 0x403FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x403F0000 ); PROVIDE ( _SPIFFS_end = 0x403FB000 ); diff --git a/tools/sdk/ld/eagle.flash.4m.ld b/tools/sdk/ld/eagle.flash.4m.ld index 36e71f64a2..bcb2b199bb 100644 --- a/tools/sdk/ld/eagle.flash.4m.ld +++ b/tools/sdk/ld/eagle.flash.4m.ld @@ -1,10 +1,9 @@ -/* Flash Split for 4M chips */ -/* sketch @0x40200000 (~1019KB) (1044464B) */ -/* empty @0x402FEFF0 (~3056KB) (3129360B) */ -/* spiffs @0x405FB000 (~0KB) (0B) */ -/* eeprom @0x405FB000 (4KB) */ -/* rfcal @0x405FC000 (4KB) */ -/* wifi @0x405FD000 (12KB) */ +/* Flash Split for 4MB chips */ +/* sketch @0x40201010 (~1019KB) (1044464B) */ +/* empty @0x40300000 (~3052KB) (3125248B) */ +/* eeprom @0x405FB000 (4096B) */ +/* rfcal @0x405FC000 (4096B) */ +/* wifi @0x405FD000 (12288B) */ MEMORY { @@ -17,7 +16,7 @@ PROVIDE ( _FS_start = 0x405FB000 ); PROVIDE ( _FS_end = 0x405FB000 ); PROVIDE ( _FS_page = 0x0 ); PROVIDE ( _FS_block = 0x0 ); -PROVIDE ( _EEPROM_start = 0x405fb000 ); +PROVIDE ( _EEPROM_start = 0x405FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x405FB000 ); PROVIDE ( _SPIFFS_end = 0x405FB000 ); diff --git a/tools/sdk/ld/eagle.flash.4m1m.ld b/tools/sdk/ld/eagle.flash.4m1m.ld index 5b0c692e70..9b73528e27 100644 --- a/tools/sdk/ld/eagle.flash.4m1m.ld +++ b/tools/sdk/ld/eagle.flash.4m1m.ld @@ -1,10 +1,10 @@ -/* Flash Split for 4M chips */ -/* sketch @0x40200000 (~1019KB) (1044464B) */ -/* empty @0x402FEFF0 (~2052KB) (2101264B) */ -/* spiffs @0x40500000 (~1000KB) (1024000B) */ -/* eeprom @0x405FB000 (4KB) */ -/* rfcal @0x405FC000 (4KB) */ -/* wifi @0x405FD000 (12KB) */ +/* Flash Split for 4MB chips */ +/* sketch @0x40201010 (~1019KB) (1044464B) */ +/* empty @0x40300000 (~2MB) (2097152B) */ +/* fs @0x40500000 (~1000KB) (1024000B) */ +/* eeprom @0x405FB000 (4096B) */ +/* rfcal @0x405FC000 (4096B) */ +/* wifi @0x405FD000 (12288B) */ MEMORY { @@ -17,7 +17,7 @@ PROVIDE ( _FS_start = 0x40500000 ); PROVIDE ( _FS_end = 0x405FA000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x2000 ); -PROVIDE ( _EEPROM_start = 0x405fb000 ); +PROVIDE ( _EEPROM_start = 0x405FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x40500000 ); PROVIDE ( _SPIFFS_end = 0x405FA000 ); diff --git a/tools/sdk/ld/eagle.flash.4m2m.ld b/tools/sdk/ld/eagle.flash.4m2m.ld index 554237fb97..88c2f7ff6f 100644 --- a/tools/sdk/ld/eagle.flash.4m2m.ld +++ b/tools/sdk/ld/eagle.flash.4m2m.ld @@ -1,10 +1,10 @@ -/* Flash Split for 4M chips */ -/* sketch @0x40200000 (~1019KB) (1044464B) */ -/* empty @0x402FEFF0 (~1028KB) (1052688B) */ -/* spiffs @0x40400000 (~2024KB) (2072576B) */ -/* eeprom @0x405FB000 (4KB) */ -/* rfcal @0x405FC000 (4KB) */ -/* wifi @0x405FD000 (12KB) */ +/* Flash Split for 4MB chips */ +/* sketch @0x40201010 (~1019KB) (1044464B) */ +/* empty @0x40300000 (~1MB) (1048576B) */ +/* fs @0x40400000 (~2024KB) (2072576B) */ +/* eeprom @0x405FB000 (4096B) */ +/* rfcal @0x405FC000 (4096B) */ +/* wifi @0x405FD000 (12288B) */ MEMORY { @@ -17,7 +17,7 @@ PROVIDE ( _FS_start = 0x40400000 ); PROVIDE ( _FS_end = 0x405FA000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x2000 ); -PROVIDE ( _EEPROM_start = 0x405fb000 ); +PROVIDE ( _EEPROM_start = 0x405FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x40400000 ); PROVIDE ( _SPIFFS_end = 0x405FA000 ); diff --git a/tools/sdk/ld/eagle.flash.4m3m.ld b/tools/sdk/ld/eagle.flash.4m3m.ld index 47cf1f93e6..1db1c9171f 100644 --- a/tools/sdk/ld/eagle.flash.4m3m.ld +++ b/tools/sdk/ld/eagle.flash.4m3m.ld @@ -1,10 +1,9 @@ -/* Flash Split for 4M chips */ -/* sketch @0x40200000 (~1019KB) (1044464B) */ -/* empty @0x402FEFF0 (~4KB) (4112B) */ -/* spiffs @0x40300000 (~3048KB) (3121152B) */ -/* eeprom @0x405FB000 (4KB) */ -/* rfcal @0x405FC000 (4KB) */ -/* wifi @0x405FD000 (12KB) */ +/* Flash Split for 4MB chips */ +/* sketch @0x40201010 (~1019KB) (1044464B) */ +/* fs @0x40300000 (~3048KB) (3121152B) */ +/* eeprom @0x405FB000 (4096B) */ +/* rfcal @0x405FC000 (4096B) */ +/* wifi @0x405FD000 (12288B) */ MEMORY { @@ -17,7 +16,7 @@ PROVIDE ( _FS_start = 0x40300000 ); PROVIDE ( _FS_end = 0x405FA000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x2000 ); -PROVIDE ( _EEPROM_start = 0x405fb000 ); +PROVIDE ( _EEPROM_start = 0x405FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x40300000 ); PROVIDE ( _SPIFFS_end = 0x405FA000 ); diff --git a/tools/sdk/ld/eagle.flash.512k.ld b/tools/sdk/ld/eagle.flash.512k.ld index df8d6fd3dc..064b4b43bd 100644 --- a/tools/sdk/ld/eagle.flash.512k.ld +++ b/tools/sdk/ld/eagle.flash.512k.ld @@ -1,10 +1,8 @@ -/* Flash Split for 512K chips */ -/* sketch @0x40200000 (~487KB) (499696B) */ -/* empty @0x40279FF0 (~4KB) (4112B) */ -/* spiffs @0x4027B000 (~0KB) (0B) */ -/* eeprom @0x4027B000 (4KB) */ -/* rfcal @0x4027C000 (4KB) */ -/* wifi @0x4027D000 (12KB) */ +/* Flash Split for 512KB chips */ +/* sketch @0x40201010 (~487KB) (499696B) */ +/* eeprom @0x4027B000 (4096B) */ +/* rfcal @0x4027C000 (4096B) */ +/* wifi @0x4027D000 (12288B) */ MEMORY { @@ -17,7 +15,7 @@ PROVIDE ( _FS_start = 0x4027B000 ); PROVIDE ( _FS_end = 0x4027B000 ); PROVIDE ( _FS_page = 0x0 ); PROVIDE ( _FS_block = 0x0 ); -PROVIDE ( _EEPROM_start = 0x4027b000 ); +PROVIDE ( _EEPROM_start = 0x4027B000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x4027B000 ); PROVIDE ( _SPIFFS_end = 0x4027B000 ); diff --git a/tools/sdk/ld/eagle.flash.512k128.ld b/tools/sdk/ld/eagle.flash.512k128.ld index 86132a9cf6..a120e2e2b3 100644 --- a/tools/sdk/ld/eagle.flash.512k128.ld +++ b/tools/sdk/ld/eagle.flash.512k128.ld @@ -1,10 +1,9 @@ -/* Flash Split for 512K chips */ -/* sketch @0x40200000 (~359KB) (368624B) */ -/* empty @0x40259FF0 (~4KB) (4112B) */ -/* spiffs @0x4025B000 (~128KB) (131072B) */ -/* eeprom @0x4027B000 (4KB) */ -/* rfcal @0x4027C000 (4KB) */ -/* wifi @0x4027D000 (12KB) */ +/* Flash Split for 512KB chips */ +/* sketch @0x40201010 (~359KB) (368624B) */ +/* fs @0x4025B000 (~128KB) (131072B) */ +/* eeprom @0x4027B000 (4096B) */ +/* rfcal @0x4027C000 (4096B) */ +/* wifi @0x4027D000 (12288B) */ MEMORY { @@ -17,7 +16,7 @@ PROVIDE ( _FS_start = 0x4025B000 ); PROVIDE ( _FS_end = 0x4027B000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x1000 ); -PROVIDE ( _EEPROM_start = 0x4027b000 ); +PROVIDE ( _EEPROM_start = 0x4027B000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x4025B000 ); PROVIDE ( _SPIFFS_end = 0x4027B000 ); diff --git a/tools/sdk/ld/eagle.flash.512k32.ld b/tools/sdk/ld/eagle.flash.512k32.ld index 12042444ac..920d8ea996 100644 --- a/tools/sdk/ld/eagle.flash.512k32.ld +++ b/tools/sdk/ld/eagle.flash.512k32.ld @@ -1,10 +1,9 @@ -/* Flash Split for 512K chips */ -/* sketch @0x40200000 (~455KB) (466928B) */ -/* empty @0x40271FF0 (~4KB) (4112B) */ -/* spiffs @0x40273000 (~32KB) (32768B) */ -/* eeprom @0x4027B000 (4KB) */ -/* rfcal @0x4027C000 (4KB) */ -/* wifi @0x4027D000 (12KB) */ +/* Flash Split for 512KB chips */ +/* sketch @0x40201010 (~455KB) (466928B) */ +/* fs @0x40273000 (~32KB) (32768B) */ +/* eeprom @0x4027B000 (4096B) */ +/* rfcal @0x4027C000 (4096B) */ +/* wifi @0x4027D000 (12288B) */ MEMORY { @@ -17,7 +16,7 @@ PROVIDE ( _FS_start = 0x40273000 ); PROVIDE ( _FS_end = 0x4027B000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x1000 ); -PROVIDE ( _EEPROM_start = 0x4027b000 ); +PROVIDE ( _EEPROM_start = 0x4027B000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x40273000 ); PROVIDE ( _SPIFFS_end = 0x4027B000 ); diff --git a/tools/sdk/ld/eagle.flash.512k64.ld b/tools/sdk/ld/eagle.flash.512k64.ld index 47a8b1fd1d..ef38360e19 100644 --- a/tools/sdk/ld/eagle.flash.512k64.ld +++ b/tools/sdk/ld/eagle.flash.512k64.ld @@ -1,10 +1,9 @@ -/* Flash Split for 512K chips */ -/* sketch @0x40200000 (~423KB) (434160B) */ -/* empty @0x40269FF0 (~4KB) (4112B) */ -/* spiffs @0x4026B000 (~64KB) (65536B) */ -/* eeprom @0x4027B000 (4KB) */ -/* rfcal @0x4027C000 (4KB) */ -/* wifi @0x4027D000 (12KB) */ +/* Flash Split for 512KB chips */ +/* sketch @0x40201010 (~423KB) (434160B) */ +/* fs @0x4026B000 (~64KB) (65536B) */ +/* eeprom @0x4027B000 (4096B) */ +/* rfcal @0x4027C000 (4096B) */ +/* wifi @0x4027D000 (12288B) */ MEMORY { @@ -17,7 +16,7 @@ PROVIDE ( _FS_start = 0x4026B000 ); PROVIDE ( _FS_end = 0x4027B000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x1000 ); -PROVIDE ( _EEPROM_start = 0x4027b000 ); +PROVIDE ( _EEPROM_start = 0x4027B000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x4026B000 ); PROVIDE ( _SPIFFS_end = 0x4027B000 ); diff --git a/tools/sdk/ld/eagle.flash.8m.ld b/tools/sdk/ld/eagle.flash.8m.ld new file mode 100644 index 0000000000..03ebcb975e --- /dev/null +++ b/tools/sdk/ld/eagle.flash.8m.ld @@ -0,0 +1,26 @@ +/* Flash Split for 8MB chips */ +/* sketch @0x40201010 (~1019KB) (1044464B) */ +/* empty @0x40300000 (~6MB) (7319552B) */ +/* eeprom @0x409FB000 (4096B) */ +/* rfcal @0x409FC000 (4096B) */ +/* wifi @0x409FD000 (12288B) */ + +MEMORY +{ + dport0_0_seg : org = 0x3FF00000, len = 0x10 + dram0_0_seg : org = 0x3FFE8000, len = 0x14000 + irom0_0_seg : org = 0x40201010, len = 0xfeff0 +} + +PROVIDE ( _FS_start = 0x409FB000 ); +PROVIDE ( _FS_end = 0x409FB000 ); +PROVIDE ( _FS_page = 0x0 ); +PROVIDE ( _FS_block = 0x0 ); +PROVIDE ( _EEPROM_start = 0x409FB000 ); +/* The following symbols are DEPRECATED and will be REMOVED in a future release */ +PROVIDE ( _SPIFFS_start = 0x409FB000 ); +PROVIDE ( _SPIFFS_end = 0x409FB000 ); +PROVIDE ( _SPIFFS_page = 0x0 ); +PROVIDE ( _SPIFFS_block = 0x0 ); + +INCLUDE "local.eagle.app.v6.common.ld" diff --git a/tools/sdk/ld/eagle.flash.8m6m.ld b/tools/sdk/ld/eagle.flash.8m6m.ld index f3febe2085..90e9198503 100644 --- a/tools/sdk/ld/eagle.flash.8m6m.ld +++ b/tools/sdk/ld/eagle.flash.8m6m.ld @@ -1,10 +1,10 @@ -/* Flash Split for 8M chips */ -/* sketch @0x40200000 (~1019KB) (1044464B) */ -/* empty @0x402FEFF0 (~1028KB) (1052688B) */ -/* spiffs @0x40400000 (~6120KB) (6266880B) */ -/* eeprom @0x409FB000 (4KB) */ -/* rfcal @0x409FC000 (4KB) */ -/* wifi @0x409FD000 (12KB) */ +/* Flash Split for 8MB chips */ +/* sketch @0x40201010 (~1019KB) (1044464B) */ +/* empty @0x40300000 (~1MB) (1048576B) */ +/* fs @0x40400000 (~5MB) (6266880B) */ +/* eeprom @0x409FB000 (4096B) */ +/* rfcal @0x409FC000 (4096B) */ +/* wifi @0x409FD000 (12288B) */ MEMORY { @@ -17,7 +17,7 @@ PROVIDE ( _FS_start = 0x40400000 ); PROVIDE ( _FS_end = 0x409FA000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x2000 ); -PROVIDE ( _EEPROM_start = 0x409fb000 ); +PROVIDE ( _EEPROM_start = 0x409FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x40400000 ); PROVIDE ( _SPIFFS_end = 0x409FA000 ); diff --git a/tools/sdk/ld/eagle.flash.8m7m.ld b/tools/sdk/ld/eagle.flash.8m7m.ld index ee4de71084..4c3dff9eff 100644 --- a/tools/sdk/ld/eagle.flash.8m7m.ld +++ b/tools/sdk/ld/eagle.flash.8m7m.ld @@ -1,10 +1,9 @@ -/* Flash Split for 8M chips */ -/* sketch @0x40200000 (~1019KB) (1044464B) */ -/* empty @0x402FEFF0 (~4KB) (4112B) */ -/* spiffs @0x40300000 (~7144KB) (7315456B) */ -/* eeprom @0x409FB000 (4KB) */ -/* rfcal @0x409FC000 (4KB) */ -/* wifi @0x409FD000 (12KB) */ +/* Flash Split for 8MB chips */ +/* sketch @0x40201010 (~1019KB) (1044464B) */ +/* fs @0x40300000 (~6MB) (7315456B) */ +/* eeprom @0x409FB000 (4096B) */ +/* rfcal @0x409FC000 (4096B) */ +/* wifi @0x409FD000 (12288B) */ MEMORY { @@ -17,7 +16,7 @@ PROVIDE ( _FS_start = 0x40300000 ); PROVIDE ( _FS_end = 0x409FA000 ); PROVIDE ( _FS_page = 0x100 ); PROVIDE ( _FS_block = 0x2000 ); -PROVIDE ( _EEPROM_start = 0x409fb000 ); +PROVIDE ( _EEPROM_start = 0x409FB000 ); /* The following symbols are DEPRECATED and will be REMOVED in a future release */ PROVIDE ( _SPIFFS_start = 0x40300000 ); PROVIDE ( _SPIFFS_end = 0x409FA000 ); From 123057fdf9cfb5a8eb04403d4c6436c148307728 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Tue, 7 Jun 2022 23:45:07 +0300 Subject: [PATCH 17/35] separate .json for boards, use slurpfile available since jq version 1.5 that was released on Sat Aug 15 2015 --- package/build_boards_manager_package.sh | 8 +- package/package_esp8266com_index.boards.json | 113 +++++++++++++++++ .../package_esp8266com_index.template.json | 116 +----------------- tools/boards.txt.py | 60 ++++----- 4 files changed, 147 insertions(+), 150 deletions(-) create mode 100644 package/package_esp8266com_index.boards.json diff --git a/package/build_boards_manager_package.sh b/package/build_boards_manager_package.sh index e5d4e58aa0..9ae65f077d 100755 --- a/package/build_boards_manager_package.sh +++ b/package/build_boards_manager_package.sh @@ -146,8 +146,12 @@ if [ ! -z "${DOC_URL}" ]; then .packages[0].platforms[0].help.online = \"${DOC_URL}\"" fi -cat ${srcdir}/package/package_esp8266com_index.template.json | \ - jq "${jq_arg}" > package_esp8266com_index.json +jq_arg="${jq_arg} |\ + .packages[0].platforms[0].boards = "'$'"boards" + +jq --slurpfile boards ${srcdir}/package/package_esp8266com_index.boards.json \ + "${jq_arg}" ${srcdir}/package/package_esp8266com_index.template.json \ + > package_esp8266com_index.json # Use Github API token, if available curl_gh_token_arg=() diff --git a/package/package_esp8266com_index.boards.json b/package/package_esp8266com_index.boards.json new file mode 100644 index 0000000000..6d4929f230 --- /dev/null +++ b/package/package_esp8266com_index.boards.json @@ -0,0 +1,113 @@ +[ + { + "name": "Generic ESP8266 Module" + }, + { + "name": "Generic ESP8285 Module" + }, + { + "name": "Lifely Agrumino Lemon v4" + }, + { + "name": "ESPDuino (ESP-13 Module)" + }, + { + "name": "Adafruit Feather HUZZAH ESP8266" + }, + { + "name": "WiFi Kit 8" + }, + { + "name": "Invent One" + }, + { + "name": "XinaBox CW01" + }, + { + "name": "ESPresso Lite 1.0" + }, + { + "name": "ESPresso Lite 2.0" + }, + { + "name": "Phoenix 1.0" + }, + { + "name": "Phoenix 2.0" + }, + { + "name": "NodeMCU 0.9 (ESP-12 Module)" + }, + { + "name": "NodeMCU 1.0 (ESP-12E Module)" + }, + { + "name": "Olimex MOD-WIFI-ESP8266(-DEV)" + }, + { + "name": "SparkFun ESP8266 Thing" + }, + { + "name": "SparkFun ESP8266 Thing Dev" + }, + { + "name": "SparkFun Blynk Board" + }, + { + "name": "SweetPea ESP-210" + }, + { + "name": "LOLIN(WEMOS) D1 R2 & mini" + }, + { + "name": "LOLIN(WEMOS) D1 mini (clone)" + }, + { + "name": "LOLIN(WEMOS) D1 mini Pro" + }, + { + "name": "LOLIN(WEMOS) D1 mini Lite" + }, + { + "name": "LOLIN(WeMos) D1 R1" + }, + { + "name": "ESPino (ESP-12 Module)" + }, + { + "name": "ThaiEasyElec's ESPino" + }, + { + "name": "WifInfo" + }, + { + "name": "Arduino" + }, + { + "name": "4D Systems gen4 IoD Range" + }, + { + "name": "Digistump Oak" + }, + { + "name": "WiFiduino" + }, + { + "name": "Amperka WiFi Slot" + }, + { + "name": "Seeed Wio Link" + }, + { + "name": "ESPectro Core" + }, + { + "name": "Schirmilabs Eduino WiFi" + }, + { + "name": "ITEAD Sonoff" + }, + { + "name": "DOIT ESP-Mx DevKit (ESP8285)" + } +] diff --git a/package/package_esp8266com_index.template.json b/package/package_esp8266com_index.template.json index 7acbccae9d..22a96d7540 100644 --- a/package/package_esp8266com_index.template.json +++ b/package/package_esp8266com_index.template.json @@ -16,119 +16,7 @@ "version": "", "architecture": "esp8266", "archiveFileName": "", - "boards": [ - { - "name": "Generic ESP8266 Module" - }, - { - "name": "Generic ESP8285 Module" - }, - { - "name": "Lifely Agrumino Lemon v4" - }, - { - "name": "ESPDuino (ESP-13 Module)" - }, - { - "name": "Adafruit Feather HUZZAH ESP8266" - }, - { - "name": "WiFi Kit 8" - }, - { - "name": "Invent One" - }, - { - "name": "XinaBox CW01" - }, - { - "name": "ESPresso Lite 1.0" - }, - { - "name": "ESPresso Lite 2.0" - }, - { - "name": "Phoenix 1.0" - }, - { - "name": "Phoenix 2.0" - }, - { - "name": "NodeMCU 0.9 (ESP-12 Module)" - }, - { - "name": "NodeMCU 1.0 (ESP-12E Module)" - }, - { - "name": "Olimex MOD-WIFI-ESP8266(-DEV)" - }, - { - "name": "SparkFun ESP8266 Thing" - }, - { - "name": "SparkFun ESP8266 Thing Dev" - }, - { - "name": "SparkFun Blynk Board" - }, - { - "name": "SweetPea ESP-210" - }, - { - "name": "LOLIN(WEMOS) D1 R2 & mini" - }, - { - "name": "LOLIN(WEMOS) D1 mini (clone)" - }, - { - "name": "LOLIN(WEMOS) D1 mini Pro" - }, - { - "name": "LOLIN(WEMOS) D1 mini Lite" - }, - { - "name": "LOLIN(WeMos) D1 R1" - }, - { - "name": "ESPino (ESP-12 Module)" - }, - { - "name": "ThaiEasyElec's ESPino" - }, - { - "name": "WifInfo" - }, - { - "name": "Arduino" - }, - { - "name": "4D Systems gen4 IoD Range" - }, - { - "name": "Digistump Oak" - }, - { - "name": "WiFiduino" - }, - { - "name": "Amperka WiFi Slot" - }, - { - "name": "Seeed Wio Link" - }, - { - "name": "ESPectro Core" - }, - { - "name": "Schirmilabs Eduino WiFi" - }, - { - "name": "ITEAD Sonoff" - }, - { - "name": "DOIT ESP-Mx DevKit (ESP8285)" - } - ], + "boards": [], "toolsDependencies": [ { "packager": "esp8266", @@ -380,4 +268,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 95d9f3c58d..9ab7f09f96 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1984,7 +1984,10 @@ def size(value): if not fs: fs = Filesystem(Region("", eeprom.start, eeprom.start), 0, 0) - with context(os.path.join(output, ld)): + if output and not os.path.isdir(output): + raise TypeError('.ld output must be a directory') + + with context(os.path.join(output, ld) if output else None): print(f'/* Flash Split for {size(layout)} chips */') print(f'/* sketch @{address(sketch)} (~{size(sketch)}) ({sketch.size}B) */') if empty: @@ -2389,22 +2392,15 @@ def boardnames (boards): ################################################################ def package_generate (output, boards): - with open(output, "r", encoding="utf-8") as f: - data = json.load(f, object_pairs_hook=collections.OrderedDict) - - target = None - for package in data["packages"]: - for platform in package["platforms"]: - if platform["name"] == "esp8266": - target = platform["boards"] - - if not target: - raise ValueError('no "boards" field found for the platform') + context = contextlib.nullcontext + if output: + context = OpenWithBackupFile - with OpenWithBackupFile(output): + with context(output): target = [{"name": board["name"]} for board in boards.values()] print(json.dumps(data, indent=3, separators=(",", ": "))) + ################################################################ def doc_generate (output, boards): @@ -2444,11 +2440,11 @@ def parse_cmdline (): filters.add_argument("--exclude", nargs="?", help="resulting BOARDSFILE will *not* include boards listed in the EXCLUDE file") generators = [ - ["boards", "boardsfile", "boards.txt", "boards.txt"], - ["ld", "lddir", "tools/sdk/ld", ".ld scripts"], - ["flashmap", "flashmapfile", "cores/esp8266/FlashMap.h", "FlashMap header"], - ["package", "packagefile", "package/package_esp8266com_index.template.json", "package template .json"], - ["doc", "docfile", "doc/boards.rst", "boards documentation"], + ["boards", "boards-file", "boards.txt", "boards.txt"], + ["ld", "ld-dir", "tools/sdk/ld", ".ld scripts"], + ["flashmap", "flashmap-file", "cores/esp8266/FlashMap.h", "FlashMap header"], + ["package", "package-file", "package/package_esp8266com_index.boards.json", "IDE package index boards list (.json)"], + ["doc", "doc-file", "doc/boards.rst", "Boards documentation (.rst)"], ] for name, output, default, title in generators: @@ -2456,11 +2452,12 @@ def parse_cmdline (): sub.add_argument(f'--{name}', dest="generators", action="append_const", const=name) sub.add_argument(f'--{output}', default=default) - parser.add_argument("--all", dest="generators", action="store_const", const=[ + generate_all = parser.add_argument_group("Use all available generators") + generate_all.add_argument("--all", dest="generators", action="store_const", const=[ name for name, _, _, _ in generators - ], help="Select all available generators") + ]) - parser.add_argument("--generate", action="store_true", help="Generate and write to selected files") + parser.add_argument("--output", action="store", choices=("file", "stdout"), default="stdout", help="Generators output to file (or directory) or stdout (default)") return parser.parse_args() @@ -2482,11 +2479,14 @@ def main (): boardnames(boards) return + def maybe_output(file): + return file if args.output == "file" else None + generators = set(name for name in args.generators or []) if "boards" in generators: all_boards_generate( - args.boardsfile if args.generate else None, + maybe_output(args.boards_file), boards, macros=prepare_macros(MACROS, all_flash_maps(), args.led), extra_header=[ @@ -2499,24 +2499,16 @@ def main (): ]) if "ld" in generators: - all_ldscript_generate( - args.lddir if args.generate else None, - all_flash_maps()) + all_ldscript_generate(maybe_output(args.ld_dir), all_flash_maps()) if "flashmap" in generators: - flashmap_generate( - args.flashmapfile if args.generate else None, - all_flash_maps()) + flashmap_generate(maybe_output(args.flashmap_file), all_flash_maps()) if "package" in generators: - package_generate( - args.packagefile if args.generate else None, - boards) + package_generate(maybe_output(args.package_file), boards) if "doc" in generators: - doc_generate( - args.docfile if args.generate else None, - boards) + doc_generate(maybe_output(args.doc_file), boards) if __name__ == "__main__": From 80911f047913d16ee972fb5abad1307249eed9ac Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Wed, 8 Jun 2022 00:22:36 +0300 Subject: [PATCH 18/35] dashes, fix outputs --- boards.txt | 2 +- tools/boards.txt.py | 54 ++++++++++++++++++++++++++------------------- 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/boards.txt b/boards.txt index 5731feb220..65a12b04a6 100644 --- a/boards.txt +++ b/boards.txt @@ -1,5 +1,5 @@ // - DO NOT EDIT - autogenerated by boards.txt.py -# Instead, modify boards.txt.py and run `boards.txt.py --boards --generate` +# Instead, modify boards.txt.py and run `boards.txt.py --boards --output-file` # menu.BoardModel=Model diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 9ab7f09f96..6736ca354a 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -2244,7 +2244,7 @@ def handler(path): return handler -def customspeeds_boards_txt (speeds): +def custom_speeds_boards_txt (speeds): def handler(name): for speed in speeds: print(f'{name}.menu.baud.{speed}={speed}') @@ -2253,7 +2253,7 @@ def handler(name): return handler -def nofloat_boards_txt (disabled): +def no_float_boards_txt (disabled): def handler(name): if disabled: print(f'{name}.build.float=') @@ -2280,7 +2280,7 @@ def all_boards_generate (output, boards, macros, extra_header=[], extra_board=[] with context(output): print("// - DO NOT EDIT - autogenerated by boards.txt.py") - print('# Instead, modify {cmdname} and run `{cmdname} --boards --generate`'.format( + print('# Instead, modify {cmdname} and run `{cmdname} --boards --output-file`'.format( cmdname=os.path.basename(sys.argv[0]))) print('#') for func in extra_header: @@ -2312,7 +2312,7 @@ def all_boards_generate (output, boards, macros, extra_header=[], extra_board=[] print() for name, board in boards.items(): - print('##############################################################') + print("#" * 62) print(f'{name}.name={board["name"]}') # standalone options @@ -2397,8 +2397,9 @@ def package_generate (output, boards): context = OpenWithBackupFile with context(output): - target = [{"name": board["name"]} for board in boards.values()] - print(json.dumps(data, indent=3, separators=(",", ": "))) + print(json.dumps( + [{"name": board["name"]} for board in boards.values()], + indent=3, separators=(",", ": "))) ################################################################ @@ -2409,12 +2410,12 @@ def doc_generate (output, boards): context = OpenWithBackupFile with context(output): - print('Boards') - print('======') + print("Boards") + print("=" * len("Boards")) print() for board in boards.values(): - print(board['name']) + print(board["name"]) print("-" * len(board["name"])) print() for line in board.get("desc", []): @@ -2427,17 +2428,23 @@ def doc_generate (output, boards): def parse_cmdline (): parser = argparse.ArgumentParser(description="File generator for esp8266/Arduino") - parser.add_argument("--test", action="store_true", help=argparse.SUPPRESS) + generic = parser.add_argument_group(title="Generic options") + generic.add_argument("--test", action="store_true", help=argparse.SUPPRESS) - parser.add_argument("--led", type=int, default=2, help="default builtin led specified for generic boards") - parser.add_argument("--nofloat", action="store_true", help="disable float support in printf and scanf") - parser.add_argument("--customspeed", action="append", default=[], help="additional serial speed option for all boards") + generic.add_argument("--led", type=int, default=2, help="default builtin led specified for generic boards (default %(default)d)") + generic.add_argument("--no-float", action="store_true", help="disable float support in printf and scanf (enabled by default)") + generic.add_argument("--custom-speed", action="append", default=[], help="additional serial speed option for all boards. can be specified multiple times.") - parser.add_argument("--boardnames", action="store_true", help="prints a list of board names") + generic.add_argument("--board-names", action="store_true", help="prints a list of board names") - filters = parser.add_mutually_exclusive_group() - filters.add_argument("--include", nargs="?", help="resulting BOARDSFILE will include *only* the boards listed in the INCLUDE file") - filters.add_argument("--exclude", nargs="?", help="resulting BOARDSFILE will *not* include boards listed in the EXCLUDE file") + filters = generic.add_mutually_exclusive_group() + filters.add_argument("--include", nargs="?", help="resulting BOARDS_FILE will include *only* the boards listed in the INCLUDE file") + filters.add_argument("--exclude", nargs="?", help="resulting BOARDS_FILE will *not* include boards listed in the EXCLUDE file") + + output = parser.add_argument_group(title="Output") + outputs = output.add_mutually_exclusive_group() + outputs.add_argument("--output-stdout", action="store_true", default=True) + outputs.add_argument("--output-file", action="store_true") generators = [ ["boards", "boards-file", "boards.txt", "boards.txt"], @@ -2457,8 +2464,6 @@ def parse_cmdline (): name for name, _, _, _ in generators ]) - parser.add_argument("--output", action="store", choices=("file", "stdout"), default="stdout", help="Generators output to file (or directory) or stdout (default)") - return parser.parse_args() @@ -2475,15 +2480,18 @@ def main (): action = operator.and_ if args.include else operator.sub boards = filtered_boards(boards, filter_path, action) - if args.boardnames: + if args.board_names: boardnames(boards) return def maybe_output(file): - return file if args.output == "file" else None + return file if args.output_file else None generators = set(name for name in args.generators or []) + if not generators: + raise ValueError("no generators selected") + if "boards" in generators: all_boards_generate( maybe_output(args.boards_file), @@ -2494,8 +2502,8 @@ def maybe_output(file): cmdline=" ".join(sys.argv)) ], extra_board=[ - nofloat_boards_txt(args.nofloat), - customspeeds_boards_txt(args.customspeed) + no_float_boards_txt(args.no_float), + custom_speeds_boards_txt(args.custom_speed) ]) if "ld" in generators: From b7054200b541ce513cce1cf3f849403990ff91c1 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Wed, 8 Jun 2022 00:23:01 +0300 Subject: [PATCH 19/35] boards rst was not sorted --- doc/boards.rst | 316 ++++++++++++++++++++++++------------------------- 1 file changed, 158 insertions(+), 158 deletions(-) diff --git a/doc/boards.rst b/doc/boards.rst index 5721fab624..0d55d711df 100644 --- a/doc/boards.rst +++ b/doc/boards.rst @@ -207,22 +207,18 @@ ESP8285 (`datasheet `__) using a ESP8285 Chip. With the DOIT ESP-Mx module, GPIO pins 9 and 10 are not available. The DOIT ESP-Mx DevKit board has a red power LED and a blue LED connected to GPIO16 and is active low to turn on. It uses a CH340C, USB to Serial converter chip. -Product page: http://www.espert.co +ESP8285 (`datasheet `__) is a multi-chip package which contains ESP8266 and 1MB flash. -NodeMCU 0.9 (ESP-12 Module) ---------------------------- +Digistump Oak +------------- -Pin mapping -~~~~~~~~~~~ +The Oak requires an `Serial Adapter`_ for a serial connection or flashing; its micro USB port is only for power. -Pin numbers written on the board itself do not correspond to ESP8266 GPIO pin numbers. Constants are defined to make using this board easier: +To make a serial connection, wire the adapter's **TX to P3**, **RX to P4**, and **GND** to **GND**. Supply 3.3v from the serial adapter if not already powered via USB. -.. code:: c++ +To put the board into bootloader mode, configure a serial connection as above, connect **P2 to GND**, then re-apply power. Once flashing is complete, remove the connection from P2 to GND, then re-apply power to boot into normal mode. - static const uint8_t D0 = 16; - static const uint8_t D1 = 5; - static const uint8_t D2 = 4; - static const uint8_t D3 = 0; - static const uint8_t D4 = 2; - static const uint8_t D5 = 14; - static const uint8_t D6 = 12; - static const uint8_t D7 = 13; - static const uint8_t D8 = 15; - static const uint8_t D9 = 3; - static const uint8_t D10 = 1; +ESPDuino (ESP-13 Module) +------------------------ -If you want to use NodeMCU pin 5, use D5 for pin number, and it will be translated to 'real' GPIO pin 14. +*TODO* -NodeMCU 1.0 (ESP-12E Module) ----------------------------- +ESPectro Core +------------- -This module is sold under many names for around $6.50 on AliExpress and it's one of the cheapest, fully integrated ESP8266 solutions. +ESPectro Core is ESP8266 development board as the culmination of our 3+ year experience in exploring and developing products with ESP8266 MCU. -It's an open hardware design with an ESP-12E core and 4 MB of SPI flash. +Initially designed for kids in mind, everybody should be able to use it. Yet it's still hacker-friendly as we break out all ESP8266 ESP-12F pins. -According to the manufacturer, "with a micro USB cable, you can connect NodeMCU devkit to your laptop and flash it without any trouble". This is more or less true: the board comes with a CP2102 onboard USB to serial adapter which just works, well, the majority of the time. Sometimes flashing fails and you have to reset the board by holding down FLASH + -RST, then releasing FLASH, then releasing RST. This forces the CP2102 device to power cycle and to be re-numbered by Linux. +More details at https://shop.makestro.com/product/espectrocore/ -The board also features a NCP1117 voltage regulator, a blue LED on GPIO16 and a 220k/100k Ohm voltage divider on the ADC input pin. -The ESP-12E usually has a led connected on GPIO2. +ESPino (ESP-12 Module) +---------------------- -Full pinout and PDF schematics can be found `here `__ +ESPino integrates the ESP-12 module with a 3.3v regulator, CP2104 USB-Serial bridge and a micro USB connector for easy programming. It is designed for fitting in a breadboard and has an RGB Led and two buttons for easy prototyping. -Olimex MOD-WIFI-ESP8266(-DEV) ------------------------------ +For more information about the hardware, pinout diagram and programming procedures, please see the `datasheet `__. -This board comes with 2 MB of SPI flash and optional accessories (e.g. evaluation board ESP8266-EVB or BAT-BOX for batteries). +Product page: http://www.espino.io/en -The basic module has three solder jumpers that allow you to switch the operating mode between SDIO, UART and FLASH. +ESPresso Lite 1.0 +----------------- -The board is shipped for FLASH operation mode, with jumpers TD0JP=0, IO0JP=1, IO2JP=1. +ESPresso Lite 1.0 (beta version) is an Arduino-compatible Wi-Fi development board powered by Espressif System's own ESP8266 WROOM-02 module. It has breadboard-friendly breakout pins with in-built LED, two reset/flash buttons and a user programmable button . The operating voltage is 3.3VDC, regulated with 800mA maximum current. Special distinctive features include on-board I2C pads that allow direct connection to OLED LCD and sensor boards. -Since jumper IO0JP is tied to GPIO0, which is PIN 21, you'll have to ground it before programming with a USB to serial adapter and reset the board by power cycling it. +ESPresso Lite 2.0 +----------------- -UART pins for programming and serial I/O are GPIO1 (TXD, pin 3) and GPIO3 (RXD, pin 4). +ESPresso Lite 2.0 is an Arduino-compatible Wi-Fi development board based on an earlier V1 (beta version). Re-designed together with Cytron Technologies, the newly-revised ESPresso Lite V2.0 features the auto-load/auto-program function, eliminating the previous need to reset the board manually before flashing a new program. It also feature two user programmable side buttons and a reset button. The special distinctive features of on-board pads for I2C sensor and actuator is retained. -You can find the board schematics `here `__ +ITEAD Sonoff +------------ -SparkFun ESP8266 Thing ----------------------- +ESP8266 based devices from ITEAD: Sonoff SV, Sonoff TH, Sonoff Basic, and Sonoff S20 -Product page: https://www.sparkfun.com/products/13231 +These are not development boards. The development process is inconvenient with these devices. When flashing firmware you will need a Serial Adapter to connect it to your computer. -SparkFun ESP8266 Thing Dev --------------------------- + | Most of these devices, during normal operation, are connected to *wall power (AKA Mains Electricity)*. **NEVER** try to flash these devices when connected to *wall power*. **ALWAYS** have them disconnected from *wall power* when connecting them to your computer. Your life may depend on it! -Product page: https://www.sparkfun.com/products/13711 +When flashing you will need to hold down the push button connected to the GPIO0 pin, while powering up with a safe 3.3 Volt source. Some USB Serial Adapters may supply enough power to handle flashing; however, it many may not supply enough power to handle the activities when the device reboots. -SparkFun Blynk Board --------------------- +More product details at the bottom of https://www.itead.cc/wiki/Product/ -Product page: https://www.sparkfun.com/products/13794 +Invent One +---------- -SweetPea ESP-210 ----------------- +The Invent One is an Arduino-compatible Wi-Fi development board powered by Ai-Thinker's ESP-12F, clocked at 80 MHz at 3.3V logic. It has an onboard ADC (PCF8591) so that you can have multiple analog inputs to work with. More information can be found here: https://blog.inventone.ng -*TODO* +Product page: https://inventone.ng LOLIN(WEMOS) D1 R2 & mini ------------------------- @@ -359,11 +319,6 @@ with enabled flash-mode menu, DOUT selected by default. Product page of the preferred official board: https://www.wemos.cc/ -LOLIN(WEMOS) D1 mini Pro ------------------------- - -Product page: https://www.wemos.cc/ - LOLIN(WEMOS) D1 mini Lite ------------------------- @@ -389,77 +344,98 @@ links: - ESP8285 datasheet: https://www.espressif.com/sites/default/files/0a-esp8285_datasheet_en_v1.0_20160422.pdf - Voltage regulator datasheet: http://pdf-datasheet.datasheet.netdna-cdn.com/pdf-down/M/E/6/ME6211-Microne.pdf +LOLIN(WEMOS) D1 mini Pro +------------------------ + +Product page: https://www.wemos.cc/ + LOLIN(WeMos) D1 R1 ------------------ Product page: https://www.wemos.cc/ -ESPino (ESP-12 Module) ----------------------- +Lifely Agrumino Lemon v4 +------------------------ -ESPino integrates the ESP-12 module with a 3.3v regulator, CP2104 USB-Serial bridge and a micro USB connector for easy programming. It is designed for fitting in a breadboard and has an RGB Led and two buttons for easy prototyping. +Procuct page https://www.lifely.cc -For more information about the hardware, pinout diagram and programming procedures, please see the `datasheet `__. +This Board "Lifely Agrumino Lemon" is based with WT8266-S1 core with WiFi 2,4Ghz and 2MB of Flash. +Power +Micro usb power cable, Lir2450 rechargeable battery (or not rechargeable)or with JST connector in the back board Max 6 Vin +Libraries and examples +Download libraries from: Official Arduino Ide, our website https://www.lifely.cc or https://github.com/lifely-cc/ +Full pinout and PDF for setup here https://www.lifely.cc our libraries is OpenSource -Product page: http://www.espino.io/en +NodeMCU 0.9 (ESP-12 Module) +--------------------------- -ThaiEasyElec's ESPino ---------------------- +Pin mapping +~~~~~~~~~~~ -ESPino by ThaiEasyElec using WROOM-02 module from Espressif Systems with 4 MB Flash. +Pin numbers written on the board itself do not correspond to ESP8266 GPIO pin numbers. Constants are defined to make using this board easier: -We will update an English description soon. - Product page: -http://thaieasyelec.com/products/wireless-modules/wifi-modules/espino-wifi-development-board-detail.html -- Schematics: -www.thaieasyelec.com/downloads/ETEE052/ETEE052\_ESPino\_Schematic.pdf - -Dimensions: -http://thaieasyelec.com/downloads/ETEE052/ETEE052\_ESPino\_Dimension.pdf -- Pinouts: -http://thaieasyelec.com/downloads/ETEE052/ETEE052\_ESPino\_User\_Manual\_TH\_v1\_0\_20160204.pdf (Please see pg. 8) +.. code:: c++ -WifInfo -------- + static const uint8_t D0 = 16; + static const uint8_t D1 = 5; + static const uint8_t D2 = 4; + static const uint8_t D3 = 0; + static const uint8_t D4 = 2; + static const uint8_t D5 = 14; + static const uint8_t D6 = 12; + static const uint8_t D7 = 13; + static const uint8_t D8 = 15; + static const uint8_t D9 = 3; + static const uint8_t D10 = 1; -WifInfo integrates the ESP-12 or ESP-07+Ext antenna module with a 3.3v regulator and the hardware to be able to measure French telemetry issue from ERDF powering meter serial output. It has a USB connector for powering, an RGB WS2812 Led, 4 pins I2C connector to fit OLED or sensor, and two buttons + FTDI connector and auto reset feature. +If you want to use NodeMCU pin 5, use D5 for pin number, and it will be translated to 'real' GPIO pin 14. -For more information, please see WifInfo related `blog `__ entries, `github `__ and `community `__ forum. +NodeMCU 1.0 (ESP-12E Module) +---------------------------- -Arduino -------- +This module is sold under many names for around $6.50 on AliExpress and it's one of the cheapest, fully integrated ESP8266 solutions. -*TODO* +It's an open hardware design with an ESP-12E core and 4 MB of SPI flash. -4D Systems gen4 IoD Range -------------------------- +According to the manufacturer, "with a micro USB cable, you can connect NodeMCU devkit to your laptop and flash it without any trouble". This is more or less true: the board comes with a CP2102 onboard USB to serial adapter which just works, well, the majority of the time. Sometimes flashing fails and you have to reset the board by holding down FLASH + +RST, then releasing FLASH, then releasing RST. This forces the CP2102 device to power cycle and to be re-numbered by Linux. -gen4-IoD Range of ESP8266 powered Display Modules by 4D Systems. +The board also features a NCP1117 voltage regulator, a blue LED on GPIO16 and a 220k/100k Ohm voltage divider on the ADC input pin. +The ESP-12E usually has a led connected on GPIO2. -2.4", 2.8" and 3.2" TFT LCD with uSD card socket and Resistive Touch. Chip Antenna + uFL Connector. +Full pinout and PDF schematics can be found `here `__ -Datasheet and associated downloads can be found on the 4D Systems product page. +Olimex MOD-WIFI-ESP8266(-DEV) +----------------------------- -The gen4-IoD range can be programmed using the Arduino IDE and also the 4D Systems Workshop4 IDE, which incorporates many additional graphics benefits. GFX4d library is available, along with a number of demo applications. +This board comes with 2 MB of SPI flash and optional accessories (e.g. evaluation board ESP8266-EVB or BAT-BOX for batteries). -- Product page: https://4dsystems.com.au/products/iot-display-modules +The basic module has three solder jumpers that allow you to switch the operating mode between SDIO, UART and FLASH. -Digistump Oak -------------- +The board is shipped for FLASH operation mode, with jumpers TD0JP=0, IO0JP=1, IO2JP=1. -The Oak requires an `Serial Adapter`_ for a serial connection or flashing; its micro USB port is only for power. +Since jumper IO0JP is tied to GPIO0, which is PIN 21, you'll have to ground it before programming with a USB to serial adapter and reset the board by power cycling it. -To make a serial connection, wire the adapter's **TX to P3**, **RX to P4**, and **GND** to **GND**. Supply 3.3v from the serial adapter if not already powered via USB. +UART pins for programming and serial I/O are GPIO1 (TXD, pin 3) and GPIO3 (RXD, pin 4). -To put the board into bootloader mode, configure a serial connection as above, connect **P2 to GND**, then re-apply power. Once flashing is complete, remove the connection from P2 to GND, then re-apply power to boot into normal mode. +You can find the board schematics `here `__ -WiFiduino ---------- +Phoenix 1.0 +----------- -Product page: https://wifiduino.com/esp8266 +Product page: http://www.espert.co -Amperka WiFi Slot ------------------ +Phoenix 2.0 +----------- -Product page: http://wiki.amperka.ru/wifi-slot +Product page: http://www.espert.co + +Schirmilabs Eduino WiFi +----------------------- + +Eduino WiFi is an Arduino-compatible DIY WiFi development board using an ESP-12 module + +Product page: https://schirmilabs.de/?page_id=165 Seeed Wio Link -------------- @@ -470,39 +446,63 @@ Please DO NOTICE that you MUST pull up pin 15 to enable the power for Grove port Product page: https://www.seeedstudio.com/Wio-Link-p-2604.html -ESPectro Core -------------- +SparkFun Blynk Board +-------------------- -ESPectro Core is ESP8266 development board as the culmination of our 3+ year experience in exploring and developing products with ESP8266 MCU. +Product page: https://www.sparkfun.com/products/13794 -Initially designed for kids in mind, everybody should be able to use it. Yet it's still hacker-friendly as we break out all ESP8266 ESP-12F pins. +SparkFun ESP8266 Thing +---------------------- -More details at https://shop.makestro.com/product/espectrocore/ +Product page: https://www.sparkfun.com/products/13231 -Schirmilabs Eduino WiFi ------------------------ +SparkFun ESP8266 Thing Dev +-------------------------- -Eduino WiFi is an Arduino-compatible DIY WiFi development board using an ESP-12 module +Product page: https://www.sparkfun.com/products/13711 -Product page: https://schirmilabs.de/?page_id=165 +SweetPea ESP-210 +---------------- -ITEAD Sonoff ------------- +*TODO* -ESP8266 based devices from ITEAD: Sonoff SV, Sonoff TH, Sonoff Basic, and Sonoff S20 +ThaiEasyElec's ESPino +--------------------- -These are not development boards. The development process is inconvenient with these devices. When flashing firmware you will need a Serial Adapter to connect it to your computer. +ESPino by ThaiEasyElec using WROOM-02 module from Espressif Systems with 4 MB Flash. - | Most of these devices, during normal operation, are connected to *wall power (AKA Mains Electricity)*. **NEVER** try to flash these devices when connected to *wall power*. **ALWAYS** have them disconnected from *wall power* when connecting them to your computer. Your life may depend on it! +We will update an English description soon. - Product page: +http://thaieasyelec.com/products/wireless-modules/wifi-modules/espino-wifi-development-board-detail.html +- Schematics: +www.thaieasyelec.com/downloads/ETEE052/ETEE052\_ESPino\_Schematic.pdf - +Dimensions: +http://thaieasyelec.com/downloads/ETEE052/ETEE052\_ESPino\_Dimension.pdf +- Pinouts: +http://thaieasyelec.com/downloads/ETEE052/ETEE052\_ESPino\_User\_Manual\_TH\_v1\_0\_20160204.pdf (Please see pg. 8) -When flashing you will need to hold down the push button connected to the GPIO0 pin, while powering up with a safe 3.3 Volt source. Some USB Serial Adapters may supply enough power to handle flashing; however, it many may not supply enough power to handle the activities when the device reboots. +WiFi Kit 8 +---------- -More product details at the bottom of https://www.itead.cc/wiki/Product/ +The Heltec WiFi Kit 8 is an Arduino-compatible Wi-Fi development board powered by Ai-Thinker's ESP-12S, clocked at 80 MHz at 3.3V logic. A high-quality SiLabs CP2104 USB-Serial chip is included so that you can upload code at a blistering 921600 baud for fast development time. It also has auto-reset so no noodling with pins and reset button pressings. A 3.7V Lithium polymer battery connector is included, making it ideal for portable projects. The Heltec WiFi Kit 8 will automatically recharge a connected battery when USB power is available. -DOIT ESP-Mx DevKit (ESP8285) ----------------------------- +Product page: https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series -DOIT ESP-Mx DevKit - This is a development board by DOIT, with a DOIT ESP-Mx module (`datasheet `__) using a ESP8285 Chip. With the DOIT ESP-Mx module, GPIO pins 9 and 10 are not available. The DOIT ESP-Mx DevKit board has a red power LED and a blue LED connected to GPIO16 and is active low to turn on. It uses a CH340C, USB to Serial converter chip. +WiFiduino +--------- -ESP8285 (`datasheet `__) is a multi-chip package which contains ESP8266 and 1MB flash. +Product page: https://wifiduino.com/esp8266 + +WifInfo +------- + +WifInfo integrates the ESP-12 or ESP-07+Ext antenna module with a 3.3v regulator and the hardware to be able to measure French telemetry issue from ERDF powering meter serial output. It has a USB connector for powering, an RGB WS2812 Led, 4 pins I2C connector to fit OLED or sensor, and two buttons + FTDI connector and auto reset feature. + +For more information, please see WifInfo related `blog `__ entries, `github `__ and `community `__ forum. + +XinaBox CW01 +------------ + +The XinaBox CW01(ESP8266) is an Arduino-compatible Wi-Fi development board powered by an ESP-12F, clocked at 80 MHz at 3.3V logic. The CW01 has an onboard RGB LED and 3 xBUS connection ports. + +Product page: https://xinabox.cc/products/CW01 From 922830149fba43eb1f9051b3c507cd686b411790 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Wed, 8 Jun 2022 00:23:21 +0300 Subject: [PATCH 20/35] boards json aligned --- package/package_esp8266com_index.boards.json | 222 +++++++++---------- 1 file changed, 111 insertions(+), 111 deletions(-) diff --git a/package/package_esp8266com_index.boards.json b/package/package_esp8266com_index.boards.json index 6d4929f230..cde50a0579 100644 --- a/package/package_esp8266com_index.boards.json +++ b/package/package_esp8266com_index.boards.json @@ -1,113 +1,113 @@ [ - { - "name": "Generic ESP8266 Module" - }, - { - "name": "Generic ESP8285 Module" - }, - { - "name": "Lifely Agrumino Lemon v4" - }, - { - "name": "ESPDuino (ESP-13 Module)" - }, - { - "name": "Adafruit Feather HUZZAH ESP8266" - }, - { - "name": "WiFi Kit 8" - }, - { - "name": "Invent One" - }, - { - "name": "XinaBox CW01" - }, - { - "name": "ESPresso Lite 1.0" - }, - { - "name": "ESPresso Lite 2.0" - }, - { - "name": "Phoenix 1.0" - }, - { - "name": "Phoenix 2.0" - }, - { - "name": "NodeMCU 0.9 (ESP-12 Module)" - }, - { - "name": "NodeMCU 1.0 (ESP-12E Module)" - }, - { - "name": "Olimex MOD-WIFI-ESP8266(-DEV)" - }, - { - "name": "SparkFun ESP8266 Thing" - }, - { - "name": "SparkFun ESP8266 Thing Dev" - }, - { - "name": "SparkFun Blynk Board" - }, - { - "name": "SweetPea ESP-210" - }, - { - "name": "LOLIN(WEMOS) D1 R2 & mini" - }, - { - "name": "LOLIN(WEMOS) D1 mini (clone)" - }, - { - "name": "LOLIN(WEMOS) D1 mini Pro" - }, - { - "name": "LOLIN(WEMOS) D1 mini Lite" - }, - { - "name": "LOLIN(WeMos) D1 R1" - }, - { - "name": "ESPino (ESP-12 Module)" - }, - { - "name": "ThaiEasyElec's ESPino" - }, - { - "name": "WifInfo" - }, - { - "name": "Arduino" - }, - { - "name": "4D Systems gen4 IoD Range" - }, - { - "name": "Digistump Oak" - }, - { - "name": "WiFiduino" - }, - { - "name": "Amperka WiFi Slot" - }, - { - "name": "Seeed Wio Link" - }, - { - "name": "ESPectro Core" - }, - { - "name": "Schirmilabs Eduino WiFi" - }, - { - "name": "ITEAD Sonoff" - }, - { - "name": "DOIT ESP-Mx DevKit (ESP8285)" - } + { + "name": "Generic ESP8266 Module" + }, + { + "name": "Generic ESP8285 Module" + }, + { + "name": "4D Systems gen4 IoD Range" + }, + { + "name": "Adafruit Feather HUZZAH ESP8266" + }, + { + "name": "Amperka WiFi Slot" + }, + { + "name": "Arduino" + }, + { + "name": "DOIT ESP-Mx DevKit (ESP8285)" + }, + { + "name": "Digistump Oak" + }, + { + "name": "ESPDuino (ESP-13 Module)" + }, + { + "name": "ESPectro Core" + }, + { + "name": "ESPino (ESP-12 Module)" + }, + { + "name": "ESPresso Lite 1.0" + }, + { + "name": "ESPresso Lite 2.0" + }, + { + "name": "ITEAD Sonoff" + }, + { + "name": "Invent One" + }, + { + "name": "LOLIN(WEMOS) D1 R2 & mini" + }, + { + "name": "LOLIN(WEMOS) D1 mini (clone)" + }, + { + "name": "LOLIN(WEMOS) D1 mini Lite" + }, + { + "name": "LOLIN(WEMOS) D1 mini Pro" + }, + { + "name": "LOLIN(WeMos) D1 R1" + }, + { + "name": "Lifely Agrumino Lemon v4" + }, + { + "name": "NodeMCU 0.9 (ESP-12 Module)" + }, + { + "name": "NodeMCU 1.0 (ESP-12E Module)" + }, + { + "name": "Olimex MOD-WIFI-ESP8266(-DEV)" + }, + { + "name": "Phoenix 1.0" + }, + { + "name": "Phoenix 2.0" + }, + { + "name": "Schirmilabs Eduino WiFi" + }, + { + "name": "Seeed Wio Link" + }, + { + "name": "SparkFun Blynk Board" + }, + { + "name": "SparkFun ESP8266 Thing" + }, + { + "name": "SparkFun ESP8266 Thing Dev" + }, + { + "name": "SweetPea ESP-210" + }, + { + "name": "ThaiEasyElec's ESPino" + }, + { + "name": "WiFi Kit 8" + }, + { + "name": "WiFiduino" + }, + { + "name": "WifInfo" + }, + { + "name": "XinaBox CW01" + } ] From 92d06a0f36b9588eeccbe4dc782ed6605050ea1e Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Wed, 8 Jun 2022 16:42:51 +0300 Subject: [PATCH 21/35] some qol changes specific context as output, expect the function to do `with output:` optional backup, for when we are inside of git repo use subparsers for distinctive actions, new names function for .ld name instead of variable (same kwargs expansion to force names) --- tools/boards.txt.py | 213 +++++++++++++++++++------------------------- 1 file changed, 93 insertions(+), 120 deletions(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 6736ca354a..910edc0d5e 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1291,55 +1291,42 @@ # file writer helpers, we need these for *gen functions -class OpenWithBackupDir: +class OpenWrapStdout: def __init__(self, path): self.path = os.path.normpath(path) - self.backup = os.path.join( - os.path.dirname(path), - "backup") + self.backup = None def __enter__(self): - if not os.path.isdir(self.backup): - os.mkdir(self.backup) - - backup_path = os.path.join(self.backup, os.path.basename(self.path)) - if os.path.isfile(self.path) and not os.path.isfile(backup_path): - os.rename(self.path, backup_path) - self._stdout = sys.stdout sys.stdout = open(self.path, "w", encoding="utf-8", newline="\n") - return self def __exit__(self, *exc): sys.stdout.close() sys.stdout = self._stdout - if not any(exc): - print(f'wrote: {self.path}') + if any(exc): + if self.backup and os.path.isfile(self.backup): + os.rename(self.backup, self.path) + print(f'error: {exc}\nrestored {self.path} from {self.backup}') + return + print(f'wrote: {self.path}') + if self.backup: + print(f'backup: {self.backup}') -class OpenWithBackupFile: +class OpenWithBackupFile(OpenWrapStdout): def __init__(self, path): - self.path = os.path.normpath(path) - self.orig = f'{self.path}.orig' + super().__init__(path) + self.backup = f'{self.path}.orig' def __enter__(self): - if os.path.isfile(self.orig): - os.remove(self.orig) + if os.path.isfile(self.backup): + os.remove(self.backup) if os.path.isfile(self.path): - os.rename(self.path, self.orig) + os.rename(self.path, self.backup) - self._stdout = sys.stdout - sys.stdout = open(self.path, "w", encoding="utf-8", newline="\n") - - return self - - def __exit__(self, *exc): - sys.stdout.close() - sys.stdout = self._stdout - if not any(exc): - print(f'wrote: {self.path}') + return super().__enter__() ################################################################ @@ -1793,6 +1780,11 @@ def humanize_flash_menu(size): return humanize(size, convert=convert) +# used as property value and for .ld output generator +def ldscript_name(*, flash_size, expected_fs_size, **kwargs): + return f'eagle.flash.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}.ld'.lower() + + SPI_START = 0x40200000 SPI_SECTOR = Kilobytes(4) @@ -1821,10 +1813,6 @@ def flash_map (flash_size, fs_size = Bytes(0), name = ''): >>> x = flash_map(Megabytes(2), Kilobytes(64), 'Test') >>> x['flash_map_name'] 'Test' - >>> x['ld'] - 'eagle.flash.2m64.ld' - >>> x['menu'] - '.menu.eesz.2M64' >>> x['layout']['Filesystem'].size 45056 >>> import pprint @@ -1893,9 +1881,6 @@ def flash_map (flash_size, fs_size = Bytes(0), name = ''): assert(layout.free == 0) - # used as property value and for .ld output generator - ld = f'eagle.flash.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}.ld'.lower() - max_upload_size = min(Megabytes(1), flash_size) - reserved if empty: max_ota_size = empty.size @@ -1915,17 +1900,16 @@ def flash_map (flash_size, fs_size = Bytes(0), name = ''): "sketch": sketch, "max_upload_size": max_upload_size, "max_ota_size": max_ota_size, - "ld": ld, } -def menu_generate (*, ld, max_ota_size, max_upload_size, rfcal, flash_size, fs, expected_fs_size, **kwargs): +def menu_generate (*, max_ota_size, max_upload_size, rfcal, flash_size, fs, expected_fs_size, **kwargs): menu = f'.menu.eesz.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}' out = [ ( menu, f'{humanize_flash_menu(flash_size)} (FS:{humanize(fs.size) if fs else "none"} OTA:~{humanize(max_ota_size)})' ), ( f'{menu}.build.flash_size', humanize_flash(flash_size) ), - ( f'{menu}.build.flash_ld', ld ), + ( f'{menu}.build.flash_ld', ldscript_name(flash_size=flash_size, expected_fs_size=expected_fs_size) ), ( f'{menu}.build.rfcal_addr', f'0x{rfcal.start:05X}' ), ] @@ -1967,11 +1951,7 @@ def menu_macros (flash_maps): return output -def ldscript_generate (output, *, ld, layout, max_upload_size, sdkwifi, rfcal, eeprom, fs, empty, sketch, **kwargs): - context = contextlib.nullcontext - if output: - context = OpenWithBackupDir - +def ldscript_generate (output, *, layout, max_upload_size, sdkwifi, rfcal, eeprom, fs, empty, sketch, **kwargs): def address(value): return f'0x{SPI_START + value.start:08X}' @@ -1984,10 +1964,7 @@ def size(value): if not fs: fs = Filesystem(Region("", eeprom.start, eeprom.start), 0, 0) - if output and not os.path.isdir(output): - raise TypeError('.ld output must be a directory') - - with context(os.path.join(output, ld) if output else None): + with output: print(f'/* Flash Split for {size(layout)} chips */') print(f'/* sketch @{address(sketch)} (~{size(sketch)}) ({sketch.size}B) */') if empty: @@ -2020,14 +1997,9 @@ def size(value): print('INCLUDE "local.eagle.app.v6.common.ld"') -def all_ldscript_generate (output, flash_maps): - for flash_map in flash_maps: - ldscript_generate(output, **flash_map) - - def flashmap_generate (output, flash_maps): """ - >>> flashmap_generate(None, (flash_map(Megabytes(1), Kilobytes(512), 'TEST'), )) + >>> flashmap_generate(contextlib.nullcontext(), (flash_map(Megabytes(1), Kilobytes(512), 'TEST'), )) // - DO NOT EDIT - autogenerated by boards.txt.py #pragma once @@ -2105,11 +2077,7 @@ def field_values(*, layout, eeprom, fs, **kwards): ["flash_size_kb", as_dec], ] - context = contextlib.nullcontext - if output: - context = OpenWithBackupFile - - with context(output): + with output: print("// - DO NOT EDIT - autogenerated by boards.txt.py") print() print("#pragma once") @@ -2272,15 +2240,10 @@ def prepare_macros (defaults, flashmap, builtinled): return macros -def all_boards_generate (output, boards, macros, extra_header=[], extra_board=[]): - - context = contextlib.nullcontext - if output: - context = OpenWithBackupFile - - with context(output): +def boards_generate (output, boards, macros, extra_header=[], extra_board=[]): + with output: print("// - DO NOT EDIT - autogenerated by boards.txt.py") - print('# Instead, modify {cmdname} and run `{cmdname} --boards --output-file`'.format( + print('# Instead, modify {cmdname} and run `{cmdname} --boards --output-file{{,-with-backup}}`'.format( cmdname=os.path.basename(sys.argv[0]))) print('#') for func in extra_header: @@ -2383,7 +2346,7 @@ def prepare_boards (boards, required_boards): return out -def boardnames (boards): +def show_names (boards): print('# Available board names. Delete or comment out the boards you do not need:') for name, board in boards.items(): print(f'{name: <20s} # {board["name"]}') @@ -2392,11 +2355,7 @@ def boardnames (boards): ################################################################ def package_generate (output, boards): - context = contextlib.nullcontext - if output: - context = OpenWithBackupFile - - with context(output): + with output: print(json.dumps( [{"name": board["name"]} for board in boards.values()], indent=3, separators=(",", ": "))) @@ -2405,11 +2364,7 @@ def package_generate (output, boards): ################################################################ def doc_generate (output, boards): - context = contextlib.nullcontext - if output: - context = OpenWithBackupFile - - with context(output): + with output: print("Boards") print("=" * len("Boards")) print() @@ -2425,75 +2380,70 @@ def doc_generate (output, boards): ################################################################ # entrypoint +GENERATORS = ( + ("boards", "boards-file", "boards.txt", "boards.txt"), + ("ld", "ld-dir", "tools/sdk/ld", ".ld scripts"), + ("flashmap", "flashmap-file", "cores/esp8266/FlashMap.h", "FlashMap header"), + ("package", "package-file", "package/package_esp8266com_index.boards.json", "IDE package index boards list (.json)"), + ("doc", "doc-file", "doc/boards.rst", "Boards documentation (.rst)"), +) + + def parse_cmdline (): parser = argparse.ArgumentParser(description="File generator for esp8266/Arduino") generic = parser.add_argument_group(title="Generic options") - generic.add_argument("--test", action="store_true", help=argparse.SUPPRESS) generic.add_argument("--led", type=int, default=2, help="default builtin led specified for generic boards (default %(default)d)") generic.add_argument("--no-float", action="store_true", help="disable float support in printf and scanf (enabled by default)") generic.add_argument("--custom-speed", action="append", default=[], help="additional serial speed option for all boards. can be specified multiple times.") - generic.add_argument("--board-names", action="store_true", help="prints a list of board names") - filters = generic.add_mutually_exclusive_group() filters.add_argument("--include", nargs="?", help="resulting BOARDS_FILE will include *only* the boards listed in the INCLUDE file") filters.add_argument("--exclude", nargs="?", help="resulting BOARDS_FILE will *not* include boards listed in the EXCLUDE file") - output = parser.add_argument_group(title="Output") + output = generic.add_argument_group(title="Output") outputs = output.add_mutually_exclusive_group() outputs.add_argument("--output-stdout", action="store_true", default=True) outputs.add_argument("--output-file", action="store_true") + outputs.add_argument("--output-file-with-backup", action="store_true") - generators = [ - ["boards", "boards-file", "boards.txt", "boards.txt"], - ["ld", "ld-dir", "tools/sdk/ld", ".ld scripts"], - ["flashmap", "flashmap-file", "cores/esp8266/FlashMap.h", "FlashMap header"], - ["package", "package-file", "package/package_esp8266com_index.boards.json", "IDE package index boards list (.json)"], - ["doc", "doc-file", "doc/boards.rst", "Boards documentation (.rst)"], - ] - - for name, output, default, title in generators: - sub = parser.add_argument_group(title=title) - sub.add_argument(f'--{name}', dest="generators", action="append_const", const=name) - sub.add_argument(f'--{output}', default=default) - - generate_all = parser.add_argument_group("Use all available generators") - generate_all.add_argument("--all", dest="generators", action="store_const", const=[ - name for name, _, _, _ in generators - ]) - - return parser.parse_args() + subparsers = parser.add_subparsers(dest="command", help="sub-commands") + subparsers.required = True + names = subparsers.add_parser("names", help="prints a list of all available board names") + test = subparsers.add_parser("test", help="run a doctest self-check") -def main (): - args = parse_cmdline() - if args.test: - doctest.testmod() - return + generate = subparsers.add_parser("generate", help="generate file(s)") - boards = prepare_boards(BOARDS, REQUIRED_BOARDS) + use_all = generate.add_argument_group(title="Use all available generators") + use_all.add_argument("--all", dest="generators", action="store_const", const=[ + name for name, _, _, _ in GENERATORS + ]) - filter_path = args.include or args.exclude - if filter_path: - action = operator.and_ if args.include else operator.sub - boards = filtered_boards(boards, filter_path, action) + for name, output, default, title in GENERATORS: + group = generate.add_argument_group(title=title) + group.add_argument(f'--{name}', dest="generators", action="append_const", const=name) + group.add_argument(f'--{output}', default=default) - if args.board_names: - boardnames(boards) - return + return parser.parse_args() - def maybe_output(file): - return file if args.output_file else None +def run_generators(args): generators = set(name for name in args.generators or []) - if not generators: raise ValueError("no generators selected") + def maybe_output(file): + if args.output_file_with_backup: + return OpenWithBackupFile(file) + if args.output_file: + return OpenWrapStdout(file) + + return contextlib.nullcontext() + if "boards" in generators: - all_boards_generate( + boards_generate( maybe_output(args.boards_file), boards, macros=prepare_macros(MACROS, all_flash_maps(), args.led), @@ -2507,7 +2457,8 @@ def maybe_output(file): ]) if "ld" in generators: - all_ldscript_generate(maybe_output(args.ld_dir), all_flash_maps()) + for flash_map in all_flash_maps(): + ldscript_generate(maybe_output(ldscript_name(**flash_map)), **flash_map) if "flashmap" in generators: flashmap_generate(maybe_output(args.flashmap_file), all_flash_maps()) @@ -2519,5 +2470,27 @@ def maybe_output(file): doc_generate(maybe_output(args.doc_file), boards) +def main (): + args = parse_cmdline() + + if args.command == "test": + doctest.testmod() + return + + boards = prepare_boards(BOARDS, REQUIRED_BOARDS) + + filter_path = args.include or args.exclude + if filter_path: + action = operator.and_ if args.include else operator.sub + boards = filtered_boards(boards, filter_path, action) + + if args.command == "names": + show_names(boards) + return + + if args.command == "generators": + run_generators(boards, args) + + if __name__ == "__main__": main() From 488e2bc108252bfd0fd316c9e594e5b0e12e3a82 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Wed, 8 Jun 2022 16:54:16 +0300 Subject: [PATCH 22/35] names --- boards.txt | 2 +- tools/boards.txt.py | 28 ++++++++++++++++++++-------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/boards.txt b/boards.txt index 65a12b04a6..797bd3a302 100644 --- a/boards.txt +++ b/boards.txt @@ -1,5 +1,5 @@ // - DO NOT EDIT - autogenerated by boards.txt.py -# Instead, modify boards.txt.py and run `boards.txt.py --boards --output-file` +# Instead, modify boards.txt.py and run `boards.txt.py --output-file{,-with-backup} generate --boards` # menu.BoardModel=Model diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 910edc0d5e..2a3f31bb79 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1288,10 +1288,13 @@ } ################################################################ -# file writer helpers, we need these for *gen functions +# file writer helpers, we need these for generator functions -class OpenWrapStdout: +class BaseOpenWithBackup: + """Generic context object. Replace stdout with the specified path. + If backup is set, save on entry and restore it on error.""" + def __init__(self, path): self.path = os.path.normpath(path) self.backup = None @@ -1314,7 +1317,15 @@ def __exit__(self, *exc): print(f'backup: {self.backup}') -class OpenWithBackupFile(OpenWrapStdout): +class Open(BaseOpenWithBackup): + """Open and replace stdout with the specified path.""" + pass + + +class OpenWithBackupFile(BaseOpenWithBackup): + """Replace stdout with the specified path. + Creates .orig file in the same location before entry.""" + def __init__(self, path): super().__init__(path) self.backup = f'{self.path}.orig' @@ -2243,7 +2254,7 @@ def prepare_macros (defaults, flashmap, builtinled): def boards_generate (output, boards, macros, extra_header=[], extra_board=[]): with output: print("// - DO NOT EDIT - autogenerated by boards.txt.py") - print('# Instead, modify {cmdname} and run `{cmdname} --boards --output-file{{,-with-backup}}`'.format( + print('# Instead, modify {cmdname} and run `{cmdname} --output-file{{,-with-backup}} generate --boards`'.format( cmdname=os.path.basename(sys.argv[0]))) print('#') for func in extra_header: @@ -2429,7 +2440,7 @@ def parse_cmdline (): return parser.parse_args() -def run_generators(args): +def run_generators(boards, filter_path, args): generators = set(name for name in args.generators or []) if not generators: raise ValueError("no generators selected") @@ -2438,7 +2449,7 @@ def maybe_output(file): if args.output_file_with_backup: return OpenWithBackupFile(file) if args.output_file: - return OpenWrapStdout(file) + return Open(file) return contextlib.nullcontext() @@ -2488,8 +2499,9 @@ def main (): show_names(boards) return - if args.command == "generators": - run_generators(boards, args) + if args.command == "generate": + run_generators(boards, filter_path, args) + return if __name__ == "__main__": From 30aaa9d60ca6ed8462d9bf15fb10d93af834c24c Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Wed, 8 Jun 2022 17:00:22 +0300 Subject: [PATCH 23/35] fix ld output --- tools/boards.txt.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 2a3f31bb79..28d2a62cb5 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -2469,7 +2469,8 @@ def maybe_output(file): if "ld" in generators: for flash_map in all_flash_maps(): - ldscript_generate(maybe_output(ldscript_name(**flash_map)), **flash_map) + file = os.path.join(args.ld_dir, ldscript_name(**flash_map)) + ldscript_generate(maybe_output(file), **flash_map) if "flashmap" in generators: flashmap_generate(maybe_output(args.flashmap_file), all_flash_maps()) From 8fbf15950a3127337ce04c3fc8d7d517a35ff970 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Wed, 8 Jun 2022 17:20:31 +0300 Subject: [PATCH 24/35] doc doc --- doc/faq/a05-board-generator.rst | 45 ++++++++++++++------------------- 1 file changed, 19 insertions(+), 26 deletions(-) diff --git a/doc/faq/a05-board-generator.rst b/doc/faq/a05-board-generator.rst index 279491355e..327d825447 100644 --- a/doc/faq/a05-board-generator.rst +++ b/doc/faq/a05-board-generator.rst @@ -31,7 +31,7 @@ It needs to be run from the root directory, :: C:\...> tools\boards.txt.py - C:\...> python tools\boards.txt.py + C:\...> py -3 tools\boards.txt.py Running without parameters will show the command line help. They are generally self-explanatory. Running with the parameters will show no output but will generate a new boards.txt file (and a backup boards.txt.orig). @@ -75,7 +75,13 @@ The generator is able to update a number of files (see list in help), and global coherency can be checked by the continuous integration facilities. After a modification in the generator, it is **mandatory** to regenerate all -files (option ``--allgen``) and add them in the pull-request. +files and include them in the pull-request. + +:: + + ./tools/boards.txt.py --output-file generate --all + git add -u + git commit How to create an abridged boards.txt file @@ -83,15 +89,15 @@ How to create an abridged boards.txt file The list of boards presented by the IDE has gotten quite long. You can reduce the ESP8266 boards shown by the IDE to a favorites list. This can -be done by generating a new boards.txt file using the ``--filter `` -option. +be done by generating a new boards.txt file using the ``--include `` +or ``--exclude `` options. Start by getting a current list of boards supported by boards.txt.py. This command will write a list of supported board names to favorites.txt. :: - ./tools/boards.txt.py --boardnames >favorites.txt + ./tools/boards.txt.py names > favorites.txt Edit favorites.txt, keeping the name of the boards you want generated in boards.txt. @@ -100,39 +106,26 @@ to generate a new abridged boards.txt run: :: - ./tools/boards.txt.py --boardsgen --filter favorites.txt - - -You can turn the process around by creating a list of boards, you do not want -to be generated. To do this we use the ``--xfilter `` option. - -to generate this abridged boards.txt run: - -:: - - ./tools/boards.txt.py --boardsgen --xfilter favorites.txt - + ./tools/boards.txt.py --include favorites.txt --output-file generate --boards -Yet another option, you can split the boards between boards.txt and -boards.local.txt. The commands below will generate a boards.txt file that omits the boards named -in favorites.txt, and generates a boards.local.txt ( via option ``--boardslocalgen`` ) that only contains boards +in favorites.txt, and generates a boards.local.txt that only contains boards named in favorites.txt. :: - ./tools/boards.txt.py --boardsgen --xfilter favorites.txt - ./tools/boards.txt.py --boardslocalgen --filter favorites.txt + ./tools/boards.txt.py --output-file --exclude favorites.txt generate --boards + ./tools/boards.txt.py --output-file --include favorites.txt generate --boards --boards-file boards.local.txt Additional Notes: -1. The boards.txt file will always contain the generic and esp8285 boards. +1. Arduino IDE requires at least one board to be specified in boards.txt. -2. If boards.txt file exist and no backup copy named boards.txt.orig exist, the current boards.txt will be renamed to boards.txt.orig. Otherwise, the existing boards.txt is over-written when you generate a new boards.txt file. Similar behavior for when generating a new boards.local.txt. +2. Using filter exclude you could omit ``generic`` and ``esp8285`` boards. -3. The boards in the boards.txt file will be in the order they were listed in your favorites file, specified by option ``--filter ``. +3. Default ``--output-file`` behaviour is to simply over-write the target file. Use ``--output-file-with-backup`` to preserve it as ``.orig``. -4. It is outside the scope of this document, but you could manually edit any boards.txt file to have fewer boards. One last observation, the Arduino IDE appears to need at least one board in a board.txt file. +4. The boards in the boards.txt file will be in the order they were listed in your favorites file, specified by option ``--include ``. By default, boards are sorted alphabetically. `FAQ list :back: `__ From a405c41031cf5b238fe5e89ddaa25636d0dfa6f9 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Wed, 8 Jun 2022 17:40:42 +0300 Subject: [PATCH 25/35] fix comment, always store cmdline --- boards.txt | 5 ++--- doc/faq/a05-board-generator.rst | 12 +++++++----- doc/faq/readme.rst | 18 ++---------------- tests/ci/build_boards.sh | 7 ++++--- tools/boards.txt.py | 24 +++++++++--------------- 5 files changed, 24 insertions(+), 42 deletions(-) diff --git a/boards.txt b/boards.txt index 797bd3a302..209d807a90 100644 --- a/boards.txt +++ b/boards.txt @@ -1,6 +1,5 @@ -// - DO NOT EDIT - autogenerated by boards.txt.py -# Instead, modify boards.txt.py and run `boards.txt.py --output-file{,-with-backup} generate --boards` -# +# DO NOT EDIT - autogenerated by boards.txt.py +# Command line `.\tools\boards.txt.py generate --boards` menu.BoardModel=Model menu.ESPModule=Module diff --git a/doc/faq/a05-board-generator.rst b/doc/faq/a05-board-generator.rst index 327d825447..d7c0086723 100644 --- a/doc/faq/a05-board-generator.rst +++ b/doc/faq/a05-board-generator.rst @@ -106,7 +106,7 @@ to generate a new abridged boards.txt run: :: - ./tools/boards.txt.py --include favorites.txt --output-file generate --boards + ./tools/boards.txt.py --include favorites.txt generate --boards The commands below will generate a boards.txt file that omits the boards named @@ -115,8 +115,8 @@ named in favorites.txt. :: - ./tools/boards.txt.py --output-file --exclude favorites.txt generate --boards - ./tools/boards.txt.py --output-file --include favorites.txt generate --boards --boards-file boards.local.txt + ./tools/boards.txt.py --exclude favorites.txt generate --boards + ./tools/boards.txt.py --include favorites.txt generate --boards --boards-file boards.local.txt Additional Notes: @@ -124,8 +124,10 @@ Additional Notes: 2. Using filter exclude you could omit ``generic`` and ``esp8285`` boards. -3. Default ``--output-file`` behaviour is to simply over-write the target file. Use ``--output-file-with-backup`` to preserve it as ``.orig``. +3. Use ``--output-stdout`` to see resulting file(s) in the console. -4. The boards in the boards.txt file will be in the order they were listed in your favorites file, specified by option ``--include ``. By default, boards are sorted alphabetically. +4. Default ``--output-file`` behaviour is to simply over-write the target file. Use ``--output-file-with-backup`` to preserve it as ``.orig``. + +5. The boards in the boards.txt file will be in the order they were listed in your favorites file, specified by option ``--include ``. By default, boards are sorted alphabetically. `FAQ list :back: `__ diff --git a/doc/faq/readme.rst b/doc/faq/readme.rst index 53e830358b..f6f38116f0 100644 --- a/doc/faq/readme.rst +++ b/doc/faq/readme.rst @@ -46,7 +46,7 @@ How can I get some extra KBs in flash ? * Using ``*printf()`` with floats is enabled by default. Some KBs of flash can be saved by using the option ``--nofloat`` with the boards generator: - ``./tools/boards.txt.py --nofloat --boardsgen`` + ``./tools/boards.txt.py --no-float generate --boards`` * Use the debug level option ``NoAssert-NDEBUG`` (in the Tools menu) @@ -55,21 +55,7 @@ How can I get some extra KBs in flash ? About WPS ~~~~~~~~~ -From release 2.4.2 and ahead, not using WPS will give an extra ~4.5KB in -heap. - -In release 2.4.2 only, WPS is disabled by default and the board generator is -required to enable it: - -``./tools/boards.txt.py --allowWPS --boardsgen`` - -`Read more `__. - -For platformIO (and maybe other build environments), you will also need to add the build flag: -D NO_EXTRA_4K_HEAP - -This manual selection is not needed starting from 2.5.0 (and in git -version). WPS is always available, and not using it will give an extra -~4.5KB compared to releases until 2.4.1 included. +Starting from release 2.5.0, WPS support is enabled automatically. This Arduino library doesn't work on ESP. How do I make it work? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/tests/ci/build_boards.sh b/tests/ci/build_boards.sh index a263bdad28..856cd54d31 100755 --- a/tests/ci/build_boards.sh +++ b/tests/ci/build_boards.sh @@ -1,14 +1,15 @@ #!/bin/bash # -# CI job which checks that boards.txt and package_esp8266com_index.template.json are up to date +# CI job which checks that files generated with boards.txt.py are up to date set -ev cd $TRAVIS_BUILD_DIR -tools/boards.txt.py --boardsgen --ldgen --packagegen --docgen +tools/boards.txt.py test +tools/boards.txt.py generate --all git diff --exit-code -- boards.txt \ doc/boards.rst \ tools/sdk/ld/ -git diff --exit-code -w -- package/package_esp8266com_index.template.json +git diff --exit-code -w -- package/package_esp8266com_index.boards.json diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 28d2a62cb5..647173697d 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -2213,13 +2213,10 @@ def sdk_macros (): ################################################################ -def abridged_boards_txt (filtered, boards, cmdline): - def handler(path): +def abridged_boards_txt (filtered, boards): + def handler(): if filtered: - print('#') - print(f'# Abridged file created by: {cmdline}') print('# The following boards were included: {}'.format(" ".join(boards.keys()))) - print('#') return handler @@ -2253,12 +2250,10 @@ def prepare_macros (defaults, flashmap, builtinled): def boards_generate (output, boards, macros, extra_header=[], extra_board=[]): with output: - print("// - DO NOT EDIT - autogenerated by boards.txt.py") - print('# Instead, modify {cmdname} and run `{cmdname} --output-file{{,-with-backup}} generate --boards`'.format( - cmdname=os.path.basename(sys.argv[0]))) - print('#') + print('# DO NOT EDIT - autogenerated by boards.txt.py') + print(f'# Command line `{" ".join(sys.argv)}`') for func in extra_header: - func(output) + func() print() # With Arduino IDE 1.8.7 the order of the menu items will be honored from the tools pull down list. print('menu.BoardModel=Model') @@ -2415,8 +2410,8 @@ def parse_cmdline (): output = generic.add_argument_group(title="Output") outputs = output.add_mutually_exclusive_group() - outputs.add_argument("--output-stdout", action="store_true", default=True) - outputs.add_argument("--output-file", action="store_true") + outputs.add_argument("--output-stdout", action="store_true") + outputs.add_argument("--output-file", action="store_true", default=True) outputs.add_argument("--output-file-with-backup", action="store_true") subparsers = parser.add_subparsers(dest="command", help="sub-commands") @@ -2459,12 +2454,11 @@ def maybe_output(file): boards, macros=prepare_macros(MACROS, all_flash_maps(), args.led), extra_header=[ - abridged_boards_txt(filter_path, boards, - cmdline=" ".join(sys.argv)) + abridged_boards_txt(filter_path, boards), ], extra_board=[ no_float_boards_txt(args.no_float), - custom_speeds_boards_txt(args.custom_speed) + custom_speeds_boards_txt(args.custom_speed), ]) if "ld" in generators: From 6f2e52bf66a621b2c7cdf4419a077fa8e6337f89 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Wed, 8 Jun 2022 19:23:16 +0300 Subject: [PATCH 26/35] choice-based selection of output --- boards.txt | 2 +- doc/faq/a05-board-generator.rst | 6 +++--- tools/boards.txt.py | 28 ++++++++++++++-------------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/boards.txt b/boards.txt index 209d807a90..1a5cce98fb 100644 --- a/boards.txt +++ b/boards.txt @@ -1,5 +1,5 @@ # DO NOT EDIT - autogenerated by boards.txt.py -# Command line `.\tools\boards.txt.py generate --boards` +# Command line `.\tools\boards.txt.py generate --all` menu.BoardModel=Model menu.ESPModule=Module diff --git a/doc/faq/a05-board-generator.rst b/doc/faq/a05-board-generator.rst index d7c0086723..57f4de596e 100644 --- a/doc/faq/a05-board-generator.rst +++ b/doc/faq/a05-board-generator.rst @@ -79,7 +79,7 @@ files and include them in the pull-request. :: - ./tools/boards.txt.py --output-file generate --all + ./tools/boards.txt.py generate --all git add -u git commit @@ -124,9 +124,9 @@ Additional Notes: 2. Using filter exclude you could omit ``generic`` and ``esp8285`` boards. -3. Use ``--output-stdout`` to see resulting file(s) in the console. +3. To avoid modifying any files, use ``--output=stdout`` and see the result in console output. -4. Default ``--output-file`` behaviour is to simply over-write the target file. Use ``--output-file-with-backup`` to preserve it as ``.orig``. +4. Default ``--output=file`` behaviour is to simply over-write the target file(s). Use ``--output=file-with-orig`` to preserve them as ``.orig``. 5. The boards in the boards.txt file will be in the order they were listed in your favorites file, specified by option ``--include ``. By default, boards are sorted alphabetically. diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 647173697d..182654f573 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 +# pylint: disable=locally-disabled, multiple-statements, fixme, line-too-long # boards.txt python builder for esp8266/Arduino # Copyright (C) 2017 community @@ -2400,19 +2401,13 @@ def parse_cmdline (): generic = parser.add_argument_group(title="Generic options") - generic.add_argument("--led", type=int, default=2, help="default builtin led specified for generic boards (default %(default)d)") + generic.add_argument("--led", type=int, default=2, help="default PIN for builtin LED, specified for generic boards (default %(default)d)") generic.add_argument("--no-float", action="store_true", help="disable float support in printf and scanf (enabled by default)") generic.add_argument("--custom-speed", action="append", default=[], help="additional serial speed option for all boards. can be specified multiple times.") - filters = generic.add_mutually_exclusive_group() - filters.add_argument("--include", nargs="?", help="resulting BOARDS_FILE will include *only* the boards listed in the INCLUDE file") - filters.add_argument("--exclude", nargs="?", help="resulting BOARDS_FILE will *not* include boards listed in the EXCLUDE file") - - output = generic.add_argument_group(title="Output") - outputs = output.add_mutually_exclusive_group() - outputs.add_argument("--output-stdout", action="store_true") - outputs.add_argument("--output-file", action="store_true", default=True) - outputs.add_argument("--output-file-with-backup", action="store_true") + filters = parser.add_argument_group("Filtering", "either INCLUDE or EXCLUDE boards based on the filter file").add_mutually_exclusive_group() + filters.add_argument("--include", nargs="?") + filters.add_argument("--exclude", nargs="?") subparsers = parser.add_subparsers(dest="command", help="sub-commands") subparsers.required = True @@ -2420,7 +2415,12 @@ def parse_cmdline (): names = subparsers.add_parser("names", help="prints a list of all available board names") test = subparsers.add_parser("test", help="run a doctest self-check") - generate = subparsers.add_parser("generate", help="generate file(s)") + generate = subparsers.add_parser("generate", help="generate file(s). pass --all to enable all or -- to enable specific generator.") + + outputs = generate.add_argument_group("Output destination", + "Either use STDOUT or write to the output file(s). " + "Optionally, when output file(s) already exist, preserve the original with .orig extension.") + outputs.add_argument("--output", choices=["stdout", "file", "file-with-backup"], default="file", help='(default "%(default)s")') use_all = generate.add_argument_group(title="Use all available generators") use_all.add_argument("--all", dest="generators", action="store_const", const=[ @@ -2430,7 +2430,7 @@ def parse_cmdline (): for name, output, default, title in GENERATORS: group = generate.add_argument_group(title=title) group.add_argument(f'--{name}', dest="generators", action="append_const", const=name) - group.add_argument(f'--{output}', default=default) + group.add_argument(f'--{output}', default=default, help='(default "%(default)s")') return parser.parse_args() @@ -2441,9 +2441,9 @@ def run_generators(boards, filter_path, args): raise ValueError("no generators selected") def maybe_output(file): - if args.output_file_with_backup: + if args.output == "file-with-backup": return OpenWithBackupFile(file) - if args.output_file: + if args.output == "file": return Open(file) return contextlib.nullcontext() From 046f8134fededce40eb48bb37be691c84a45a331 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Wed, 8 Jun 2022 19:24:55 +0300 Subject: [PATCH 27/35] consistent quoting in code, formatting --- tools/boards.txt.py | 628 ++++++++++++++++++++++++++------------------ 1 file changed, 378 insertions(+), 250 deletions(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 182654f573..f56fdb12b8 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -# pylint: disable=locally-disabled, multiple-statements, fixme, line-too-long # boards.txt python builder for esp8266/Arduino # Copyright (C) 2017 community @@ -1311,15 +1310,16 @@ def __exit__(self, *exc): if any(exc): if self.backup and os.path.isfile(self.backup): os.rename(self.backup, self.path) - print(f'error: {exc}\nrestored {self.path} from {self.backup}') + print(f"error: {exc}\nrestored {self.path} from {self.backup}") return - print(f'wrote: {self.path}') + print(f"wrote: {self.path}") if self.backup: - print(f'backup: {self.backup}') + print(f"backup: {self.backup}") class Open(BaseOpenWithBackup): """Open and replace stdout with the specified path.""" + pass @@ -1329,7 +1329,7 @@ class OpenWithBackupFile(BaseOpenWithBackup): def __init__(self, path): super().__init__(path) - self.backup = f'{self.path}.orig' + self.backup = f"{self.path}.orig" def __enter__(self): if os.path.isfile(self.backup): @@ -1344,6 +1344,7 @@ def __enter__(self): ################################################################ # debug options + def subslices(values): """Generate a combinations list for each possible length of the provided list. Useful for build defines combinations, where we would like to generate @@ -1358,54 +1359,66 @@ def subslices(values): for combination in itertools.combinations(values, n): yield combination -def debug_macros (): - debugmenu = collections.OrderedDict([ - ( '.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.Serial1', 'Serial1' ), - ( '.menu.dbg.Serial1.build.debug_port', '-DDEBUG_ESP_PORT=Serial1' ), - ( '.menu.lvl.None____', 'None' ), - ( '.menu.lvl.None____.build.debug_level', '' ), - ]) + +def debug_macros(): + debugmenu = collections.OrderedDict( + [ + (".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.Serial1", "Serial1"), + (".menu.dbg.Serial1.build.debug_port", "-DDEBUG_ESP_PORT=Serial1"), + (".menu.lvl.None____", "None"), + (".menu.lvl.None____.build.debug_level", ""), + ] + ) options = [] # since IDE does not allow to flag multiple options, these are split # into two sort-of related groups. first ones end up as 'subslice' combinations - a = ( 'SSL', 'TLS_MEM', 'HTTP_CLIENT', 'HTTP_SERVER' ) + a = ("SSL", "TLS_MEM", "HTTP_CLIENT", "HTTP_SERVER") options.extend(subslices(a)) # these end up as standalone options and a combined one - b = ( 'CORE', 'WIFI', 'HTTP_UPDATE', 'UPDATER', 'OTA', 'OOM', 'MDNS' ) + b = ("CORE", "WIFI", "HTTP_UPDATE", "UPDATER", "OTA", "OOM", "MDNS") for flag in b: options.append((flag,)) options.append(b) # and these could only happen on their own or with grouped options - for flag in ( 'HWDT', 'HWDT_NOEXTRA4K' ): + for flag in ("HWDT", "HWDT_NOEXTRA4K"): options.append((flag,)) options.append(b + (flag,)) options.append(a + b + (flag,)) def add_menu_entry(name, menuname, flags): - debugmenu.update((( - ( f'.menu.lvl.{name}', menuname ), - ( f'.menu.lvl.{name}.build.debug_level', " {}".format(" ".join(flags)) ) - ))) - - add_menu_entry('NoAssert-NDEBUG', 'NoAssert-NDEBUG', ['-DNDEBUG']) + debugmenu.update( + ( + ( + (f".menu.lvl.{name}", menuname), + ( + f".menu.lvl.{name}.build.debug_level", + " {}".format(" ".join(flags)), + ), + ) + ) + ) + + add_menu_entry("NoAssert-NDEBUG", "NoAssert-NDEBUG", ["-DNDEBUG"]) # TODO make sure to prepend with space for optlist in options: add_menu_entry( "".join(optlist), "+".join(optlist), - [f'-DDEBUG_ESP_{opt}' for opt in optlist]) + [f"-DDEBUG_ESP_{opt}" for opt in optlist], + ) + + return {"debug_menu": debugmenu} - return { 'debug_menu': debugmenu } ################################################################ # flash size @@ -1468,9 +1481,9 @@ def humanize(size, *, decimal=False, convert=None): if not convert: convert = [ - [Bytes(1), 'B'], - [Kilobytes(1), 'KB'], - [Megabytes(1), 'MB'], + [Bytes(1), "B"], + [Kilobytes(1), "KB"], + [Megabytes(1), "MB"], ] for ratio, suffix in reversed(convert): @@ -1478,13 +1491,13 @@ def humanize(size, *, decimal=False, convert=None): if size % ratio > (size / 4): continue - size = f'{size / ratio:.02f}' + size = f"{size / ratio:.02f}" if not decimal: size = size[:-3] size = size.replace(".00", "") - return f'{size}{suffix}' + return f"{size}{suffix}" return "" @@ -1510,7 +1523,7 @@ class Region: def __init__(self, name, start, end): if start > end: - raise ValueError(f'{start=} cannot be larger than {end=}') + raise ValueError(f"{start=} cannot be larger than {end=}") self.name = name self.start = start self.end = end @@ -1525,7 +1538,7 @@ def distance(self, other): return None def __repr__(self): - return f'' + return f"" def copy(self): return Region(self.name, self.start, self.end) @@ -1580,7 +1593,7 @@ def __init__(self, region): self.subregions = [] def __repr__(self): - return f'' + return f"" def __getitem__(self, name): for region in self.subregions: @@ -1615,7 +1628,9 @@ def end(self): @property def edge(self): - return self.subregions[-1] if self.subregions else Region("", self.end, self.end) + return ( + self.subregions[-1] if self.subregions else Region("", self.end, self.end) + ) def push(self, region): """ @@ -1640,11 +1655,11 @@ def push(self, region): ValueError: No space left """ if self.free < region.size: - raise ValueError(f'No space left') + raise ValueError(f"No space left") elif self.start > region.start or self.end < region.end: - raise ValueError(f'Out of bounds of {self.region}') + raise ValueError(f"Out of bounds of {self.region}") elif self.subregions and region.end > self.edge.start: - raise ValueError(f'Region is located before {self.edge=}') + raise ValueError(f"Region is located before {self.edge=}") self.free = self.free - region.size self.subregions.append(region) @@ -1721,7 +1736,8 @@ def end(self): return self.region.end def __repr__(self): - return f'' + return f"" + # - menu properties *will* be used in scripts, so these suffixes *must* remain the same # flash size uses short uppercase suffix (without the B) @@ -1794,7 +1810,7 @@ def humanize_flash_menu(size): # used as property value and for .ld output generator def ldscript_name(*, flash_size, expected_fs_size, **kwargs): - return f'eagle.flash.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}.ld'.lower() + return f"eagle.flash.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}.ld".lower() SPI_START = 0x40200000 @@ -1818,7 +1834,7 @@ def common_layout(name, flash_size): return layout -def flash_map (flash_size, fs_size = Bytes(0), name = ''): +def flash_map(flash_size, fs_size=Bytes(0), name=""): """Generate template variables for the specified flash and filesystem sizes. Name is optional and is simply passed through. @@ -1863,7 +1879,9 @@ def flash_map (flash_size, fs_size = Bytes(0), name = ''): if fs_size: fs = Filesystem( layout.add_aligned("Filesystem", fs_size, fs_block_size), - fs_block_size, fs_page_size) + fs_block_size, + fs_page_size, + ) else: fs = None @@ -1891,7 +1909,7 @@ def flash_map (flash_size, fs_size = Bytes(0), name = ''): layout.add("Bootloader", SPI_SECTOR - Bytes(8)) layout.add("", Bytes(8)) - assert(layout.free == 0) + assert layout.free == 0 max_upload_size = min(Megabytes(1), flash_size) - reserved if empty: @@ -1915,40 +1933,50 @@ def flash_map (flash_size, fs_size = Bytes(0), name = ''): } -def menu_generate (*, max_ota_size, max_upload_size, rfcal, flash_size, fs, expected_fs_size, **kwargs): - menu = f'.menu.eesz.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}' +def menu_generate( + *, max_ota_size, max_upload_size, rfcal, flash_size, fs, expected_fs_size, **kwargs +): + menu = f".menu.eesz.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}" out = [ - ( menu, f'{humanize_flash_menu(flash_size)} (FS:{humanize(fs.size) if fs else "none"} OTA:~{humanize(max_ota_size)})' ), - ( f'{menu}.build.flash_size', humanize_flash(flash_size) ), - ( f'{menu}.build.flash_ld', ldscript_name(flash_size=flash_size, expected_fs_size=expected_fs_size) ), - ( f'{menu}.build.rfcal_addr', f'0x{rfcal.start:05X}' ), + ( + menu, + f'{humanize_flash_menu(flash_size)} (FS:{humanize(fs.size) if fs else "none"} OTA:~{humanize(max_ota_size)})', + ), + (f"{menu}.build.flash_size", humanize_flash(flash_size)), + ( + f"{menu}.build.flash_ld", + ldscript_name(flash_size=flash_size, expected_fs_size=expected_fs_size), + ), + (f"{menu}.build.rfcal_addr", f"0x{rfcal.start:05X}"), ] - out.append( - ( f'{menu}.upload.maximum_size', f'{max_upload_size}' ) - ) + out.append((f"{menu}.upload.maximum_size", f"{max_upload_size}")) if fs: - out.extend(( - ( f'{menu}.build.spiffs_start', f'0x{fs.start:05X}' ), - ( f'{menu}.build.spiffs_end', f'0x{fs.end:05X}' ), - ( f'{menu}.build.spiffs_blocksize', fs.block_size ), - ( f'{menu}.build.spiffs_pagesize', fs.page_size ), - )) + out.extend( + ( + (f"{menu}.build.spiffs_start", f"0x{fs.start:05X}"), + (f"{menu}.build.spiffs_end", f"0x{fs.end:05X}"), + (f"{menu}.build.spiffs_blocksize", fs.block_size), + (f"{menu}.build.spiffs_pagesize", fs.page_size), + ) + ) return collections.OrderedDict(out) -def menu_macros (flash_maps): +def menu_macros(flash_maps): output = { - 'autoflash': collections.OrderedDict([ - ( '.menu.eesz.autoflash', 'Mapping defined by Hardware and Sketch' ), - ( '.menu.eesz.autoflash.build.flash_size', '16M' ), - ( '.menu.eesz.autoflash.build.flash_ld', 'eagle.flash.auto.ld' ), - ( '.menu.eesz.autoflash.build.extra_flags', '-DFLASH_MAP_SUPPORT=1' ), - ( '.menu.eesz.autoflash.upload.maximum_size', '1044464' ), - ]) + "autoflash": collections.OrderedDict( + [ + (".menu.eesz.autoflash", "Mapping defined by Hardware and Sketch"), + (".menu.eesz.autoflash.build.flash_size", "16M"), + (".menu.eesz.autoflash.build.flash_ld", "eagle.flash.auto.ld"), + (".menu.eesz.autoflash.build.extra_flags", "-DFLASH_MAP_SUPPORT=1"), + (".menu.eesz.autoflash.upload.maximum_size", "1044464"), + ] + ) } for flash_map in flash_maps: @@ -1963,53 +1991,69 @@ def menu_macros (flash_maps): return output -def ldscript_generate (output, *, layout, max_upload_size, sdkwifi, rfcal, eeprom, fs, empty, sketch, **kwargs): +def ldscript_generate( + output, + *, + layout, + max_upload_size, + sdkwifi, + rfcal, + eeprom, + fs, + empty, + sketch, + **kwargs, +): def address(value): - return f'0x{SPI_START + value.start:08X}' + return f"0x{SPI_START + value.start:08X}" def symbol(value): - return f'0x{SPI_START + value:08X}' + return f"0x{SPI_START + value:08X}" def size(value): - return f'{humanize(value.size)}' + return f"{humanize(value.size)}" if not fs: fs = Filesystem(Region("", eeprom.start, eeprom.start), 0, 0) with output: - print(f'/* Flash Split for {size(layout)} chips */') - print(f'/* sketch @{address(sketch)} (~{size(sketch)}) ({sketch.size}B) */') + print(f"/* Flash Split for {size(layout)} chips */") + print(f"/* sketch @{address(sketch)} (~{size(sketch)}) ({sketch.size}B) */") if empty: - print(f'/* empty @{address(empty)} (~{size(empty)}) ({empty.size}B) */') + print(f"/* empty @{address(empty)} (~{size(empty)}) ({empty.size}B) */") if fs: - print(f'/* fs @{address(fs)} (~{size(fs)}) ({fs.size}B) */') - print(f'/* eeprom @{address(eeprom)} ({eeprom.size}B) */') - print(f'/* rfcal @{address(rfcal)} ({rfcal.size}B) */') - print(f'/* wifi @{address(sdkwifi)} ({sdkwifi.size}B) */') + print(f"/* fs @{address(fs)} (~{size(fs)}) ({fs.size}B) */") + print(f"/* eeprom @{address(eeprom)} ({eeprom.size}B) */") + print(f"/* rfcal @{address(rfcal)} ({rfcal.size}B) */") + print(f"/* wifi @{address(sdkwifi)} ({sdkwifi.size}B) */") print() print("MEMORY") print("{") print(" dport0_0_seg : org = 0x3FF00000, len = 0x10") print(" dram0_0_seg : org = 0x3FFE8000, len = 0x14000") - print(f' irom0_0_seg : org = {address(sketch)}, len = 0x{sketch.size:x}') + print( + f" irom0_0_seg : org = {address(sketch)}, len = 0x{sketch.size:x}" + ) print("}") print() - print(f'PROVIDE ( _FS_start = {symbol(fs.start)} );') - print(f'PROVIDE ( _FS_end = {symbol(fs.end)} );') - print(f'PROVIDE ( _FS_page = 0x{fs.page_size:X} );') - print(f'PROVIDE ( _FS_block = 0x{fs.block_size:X} );') - print(f'PROVIDE ( _EEPROM_start = {symbol(eeprom.start)} );') + print(f"PROVIDE ( _FS_start = {symbol(fs.start)} );") + print(f"PROVIDE ( _FS_end = {symbol(fs.end)} );") + print(f"PROVIDE ( _FS_page = 0x{fs.page_size:X} );") + print(f"PROVIDE ( _FS_block = 0x{fs.block_size:X} );") + print(f"PROVIDE ( _EEPROM_start = {symbol(eeprom.start)} );") # Re-add deprecated symbols pointing to the same address as the new standard ones - print("/* The following symbols are DEPRECATED and will be REMOVED in a future release */") - print(f'PROVIDE ( _SPIFFS_start = {symbol(fs.start)} );') - print(f'PROVIDE ( _SPIFFS_end = {symbol(fs.end)} );') - print(f'PROVIDE ( _SPIFFS_page = 0x{fs.page_size:X} );') - print(f'PROVIDE ( _SPIFFS_block = 0x{fs.block_size:X} );') + print( + "/* The following symbols are DEPRECATED and will be REMOVED in a future release */" + ) + print(f"PROVIDE ( _SPIFFS_start = {symbol(fs.start)} );") + print(f"PROVIDE ( _SPIFFS_end = {symbol(fs.end)} );") + print(f"PROVIDE ( _SPIFFS_page = 0x{fs.page_size:X} );") + print(f"PROVIDE ( _SPIFFS_block = 0x{fs.block_size:X} );") print() print('INCLUDE "local.eagle.app.v6.common.ld"') -def flashmap_generate (output, flash_maps): +def flashmap_generate(output, flash_maps): """ >>> flashmap_generate(contextlib.nullcontext(), (flash_map(Megabytes(1), Kilobytes(512), 'TEST'), )) // - DO NOT EDIT - autogenerated by boards.txt.py @@ -2045,13 +2089,13 @@ def flashmap_generate (output, flash_maps): """ def as_address(value): - return f'0x{SPI_START + value:08x}' + return f"0x{SPI_START + value:08x}" def as_hex(value): - return f'0x{value:x}' + return f"0x{value:x}" def as_dec(value): - return f'{value:d}' + return f"{value:d}" # note that the current header version *only* has the values # previously PROVIDEd by the .ld script @@ -2064,28 +2108,32 @@ def field_values(*, layout, eeprom, fs, **kwards): } if fs: - values.update({ - "fs_start": fs.start, - "fs_end": fs.end, - "fs_block_size": fs.block_size, - "fs_page_size": fs.page_size, - }) + values.update( + { + "fs_start": fs.start, + "fs_end": fs.end, + "fs_block_size": fs.block_size, + "fs_page_size": fs.page_size, + } + ) else: - values.update({ - "fs_start": eeprom.start, - "fs_end": eeprom.start, - "fs_block_size": 0, - "fs_page_size": 0, - }) + values.update( + { + "fs_start": eeprom.start, + "fs_end": eeprom.start, + "fs_block_size": 0, + "fs_page_size": 0, + } + ) return values fields = [ - ["eeprom_start", as_address], - ["fs_start", as_address], - ["fs_end", as_address], + ["eeprom_start", as_address], + ["fs_start", as_address], + ["fs_end", as_address], ["fs_block_size", as_hex], - ["fs_page_size", as_hex], + ["fs_page_size", as_hex], ["flash_size_kb", as_dec], ] @@ -2100,14 +2148,16 @@ def field_values(*, layout, eeprom, fs, **kwards): print("typedef struct") print("{") for field, _ in fields: - print(f' uint32_t {field};') + print(f" uint32_t {field};") print("} flash_map_s;") print() print("/*") print(" Following definitions map the above structure, one per line.") print(" FLASH_MAP_* is a user choice in sketch:") print(" `FLASH_MAP_SETUP_CONFIG(FLASH_MAP_OTA_FS)`") - print(" Configuration is made at boot with detected flash chip size (last argument 512..16384)") + print( + " Configuration is made at boot with detected flash chip size (last argument 512..16384)" + ) print(" Other values are defined from `tools/boards.txt.py`.") print("*/") print() @@ -2122,163 +2172,182 @@ def field_values(*, layout, eeprom, fs, **kwards): if not ordered_maps.get(name): ordered_maps[name] = [] - line = ", ".join(f'.{field} = {mod(values[field])}' if mod - else values[field] for field, mod in fields) - ordered_maps[name].append(f'{{ {line} }}, \\') + line = ", ".join( + f".{field} = {mod(values[field])}" if mod else values[field] + for field, mod in fields + ) + ordered_maps[name].append(f"{{ {line} }}, \\") for name, lines in ordered_maps.items(): - print(f'#define FLASH_MAP_{name.upper()} \\') + print(f"#define FLASH_MAP_{name.upper()} \\") print(" { \\") for line in lines: - print(f' {line}') + print(f" {line}") print(" }") print() -def all_flash_maps (): +def all_flash_maps(): # flash_map(name=...) is optional. when it is set, # we will generate a named FlashMap.h entry return ( - flash_map( Megabytes(1), Kilobytes(64), "OTA_FS" ), - flash_map( Megabytes(1), Kilobytes(128) ), - flash_map( Megabytes(1), Kilobytes(144) ), - flash_map( Megabytes(1), Kilobytes(160) ), - flash_map( Megabytes(1), Kilobytes(192) ), - flash_map( Megabytes(1), Kilobytes(256) ), - flash_map( Megabytes(1), Kilobytes(512), "MAX_FS" ), - flash_map( Megabytes(1), Kilobytes(0), "NO_FS" ), - - flash_map( Megabytes(2), Kilobytes(64) ), - flash_map( Megabytes(2), Kilobytes(128) ), - flash_map( Megabytes(2), Kilobytes(256), "OTA_FS" ), - flash_map( Megabytes(2), Kilobytes(512) ), - flash_map( Megabytes(2), Megabytes(1), "MAX_FS" ), - flash_map( Megabytes(2), Kilobytes(0), "NO_FS" ), - - flash_map( Megabytes(4), Megabytes(2), "OTA_FS" ), - flash_map( Megabytes(4), Megabytes(3), "MAX_FS" ), - flash_map( Megabytes(4), Megabytes(1) ), - flash_map( Megabytes(4), Kilobytes(0), "NO_FS"), - - flash_map( Megabytes(8), Megabytes(6), "OTA_FS" ), - flash_map( Megabytes(8), Megabytes(7), "MAX_FS" ), - flash_map( Megabytes(8), Kilobytes(0), "NO_FS" ), - - flash_map( Megabytes(16), Megabytes(14), "OTA_FS" ), - flash_map( Megabytes(16), Megabytes(15), "MAX_FS" ), - flash_map( Megabytes(16), Kilobytes(0), "NO_FS" ), - - flash_map( Kilobytes(512), Kilobytes(32), "OTA_FS" ), - flash_map( Kilobytes(512), Kilobytes(64) ), - flash_map( Kilobytes(512), Kilobytes(128), "MAX_FS" ), - flash_map( Kilobytes(512), Kilobytes(0), "NO_FS" ), + flash_map(Megabytes(1), Kilobytes(64), "OTA_FS"), + flash_map(Megabytes(1), Kilobytes(128)), + flash_map(Megabytes(1), Kilobytes(144)), + flash_map(Megabytes(1), Kilobytes(160)), + flash_map(Megabytes(1), Kilobytes(192)), + flash_map(Megabytes(1), Kilobytes(256)), + flash_map(Megabytes(1), Kilobytes(512), "MAX_FS"), + flash_map(Megabytes(1), Kilobytes(0), "NO_FS"), + flash_map(Megabytes(2), Kilobytes(64)), + flash_map(Megabytes(2), Kilobytes(128)), + flash_map(Megabytes(2), Kilobytes(256), "OTA_FS"), + flash_map(Megabytes(2), Kilobytes(512)), + flash_map(Megabytes(2), Megabytes(1), "MAX_FS"), + flash_map(Megabytes(2), Kilobytes(0), "NO_FS"), + flash_map(Megabytes(4), Megabytes(2), "OTA_FS"), + flash_map(Megabytes(4), Megabytes(3), "MAX_FS"), + flash_map(Megabytes(4), Megabytes(1)), + flash_map(Megabytes(4), Kilobytes(0), "NO_FS"), + flash_map(Megabytes(8), Megabytes(6), "OTA_FS"), + flash_map(Megabytes(8), Megabytes(7), "MAX_FS"), + flash_map(Megabytes(8), Kilobytes(0), "NO_FS"), + flash_map(Megabytes(16), Megabytes(14), "OTA_FS"), + flash_map(Megabytes(16), Megabytes(15), "MAX_FS"), + flash_map(Megabytes(16), Kilobytes(0), "NO_FS"), + flash_map(Kilobytes(512), Kilobytes(32), "OTA_FS"), + flash_map(Kilobytes(512), Kilobytes(64)), + flash_map(Kilobytes(512), Kilobytes(128), "MAX_FS"), + flash_map(Kilobytes(512), Kilobytes(0), "NO_FS"), ) + ################################################################ # builtin led -def led (name, default, ledList): - menu = collections.OrderedDict(( - (f'.menu.led.{default}', str(default)), - (f'.menu.led.{default}.build.led', f'-DLED_BUILTIN={default}'), - )) - for led in ledList: # Make range incluside of max (16), since there are really 16 GPIOS not 15 + +def led(name, default, ledList): + menu = collections.OrderedDict( + ( + (f".menu.led.{default}", str(default)), + (f".menu.led.{default}.build.led", f"-DLED_BUILTIN={default}"), + ) + ) + for ( + led + ) in ( + ledList + ): # Make range incluside of max (16), since there are really 16 GPIOS not 15 if not led == default: - menu.update(( - (f'.menu.led.{led}', str(led)), - (f'.menu.led.{led}.build.led', f'-DLED_BUILTIN={led}'), - )) - return { name: menu } + menu.update( + ( + (f".menu.led.{led}", str(led)), + (f".menu.led.{led}.build.led", f"-DLED_BUILTIN={led}"), + ) + ) + return {name: menu} + ################################################################ # sdk selection -def sdk_macros (): - return { 'sdk': collections.OrderedDict([ - ('.menu.sdk.nonosdk_190703', 'nonos-sdk 2.2.1+100 (190703)'), - ('.menu.sdk.nonosdk_190703.build.sdk', 'NONOSDK22x_190703'), - ('.menu.sdk.nonosdk_191122', 'nonos-sdk 2.2.1+119 (191122)'), - ('.menu.sdk.nonosdk_191122.build.sdk', 'NONOSDK22x_191122'), - ('.menu.sdk.nonosdk_191105', 'nonos-sdk 2.2.1+113 (191105)'), - ('.menu.sdk.nonosdk_191105.build.sdk', 'NONOSDK22x_191105'), - ('.menu.sdk.nonosdk_191024', 'nonos-sdk 2.2.1+111 (191024)'), - ('.menu.sdk.nonosdk_191024.build.sdk', 'NONOSDK22x_191024'), - ('.menu.sdk.nonosdk_190313', 'nonos-sdk 2.2.1+61 (190313)'), - ('.menu.sdk.nonosdk_190313.build.sdk', 'NONOSDK22x_190313'), - ('.menu.sdk.nonosdk221', 'nonos-sdk 2.2.1 (legacy)'), - ('.menu.sdk.nonosdk221.build.sdk', 'NONOSDK221'), - ('.menu.sdk.nonosdk3v0', 'nonos-sdk pre-3 (180626 known issues)'), - ('.menu.sdk.nonosdk3v0.build.sdk', 'NONOSDK3V0'), - ]) - } + +def sdk_macros(): + return { + "sdk": collections.OrderedDict( + [ + (".menu.sdk.nonosdk_190703", "nonos-sdk 2.2.1+100 (190703)"), + (".menu.sdk.nonosdk_190703.build.sdk", "NONOSDK22x_190703"), + (".menu.sdk.nonosdk_191122", "nonos-sdk 2.2.1+119 (191122)"), + (".menu.sdk.nonosdk_191122.build.sdk", "NONOSDK22x_191122"), + (".menu.sdk.nonosdk_191105", "nonos-sdk 2.2.1+113 (191105)"), + (".menu.sdk.nonosdk_191105.build.sdk", "NONOSDK22x_191105"), + (".menu.sdk.nonosdk_191024", "nonos-sdk 2.2.1+111 (191024)"), + (".menu.sdk.nonosdk_191024.build.sdk", "NONOSDK22x_191024"), + (".menu.sdk.nonosdk_190313", "nonos-sdk 2.2.1+61 (190313)"), + (".menu.sdk.nonosdk_190313.build.sdk", "NONOSDK22x_190313"), + (".menu.sdk.nonosdk221", "nonos-sdk 2.2.1 (legacy)"), + (".menu.sdk.nonosdk221.build.sdk", "NONOSDK221"), + (".menu.sdk.nonosdk3v0", "nonos-sdk pre-3 (180626 known issues)"), + (".menu.sdk.nonosdk3v0.build.sdk", "NONOSDK3V0"), + ] + ) + } + ################################################################ -def abridged_boards_txt (filtered, boards): + +def abridged_boards_txt(filtered, boards): def handler(): if filtered: - print('# The following boards were included: {}'.format(" ".join(boards.keys()))) + print( + "# The following boards were included: {}".format( + " ".join(boards.keys()) + ) + ) return handler -def custom_speeds_boards_txt (speeds): + +def custom_speeds_boards_txt(speeds): def handler(name): for speed in speeds: - print(f'{name}.menu.baud.{speed}={speed}') - print(f'{name}.menu.baud.{speed}.upload.speed={speed}') + print(f"{name}.menu.baud.{speed}={speed}") + print(f"{name}.menu.baud.{speed}.upload.speed={speed}") return handler -def no_float_boards_txt (disabled): +def no_float_boards_txt(disabled): def handler(name): if disabled: - print(f'{name}.build.float=') + print(f"{name}.build.float=") return handler -def prepare_macros (defaults, flashmap, builtinled): +def prepare_macros(defaults, flashmap, builtinled): macros = defaults macros.update(menu_macros(flashmap)) macros.update(debug_macros()) - macros.update(led('led', builtinled, range(0, 17))) - macros.update(led('led216', 2, (16, ))) + macros.update(led("led", builtinled, range(0, 17))) + macros.update(led("led216", 2, (16,))) macros.update(sdk_macros()) return macros -def boards_generate (output, boards, macros, extra_header=[], extra_board=[]): +def boards_generate(output, boards, macros, extra_header=[], extra_board=[]): with output: - print('# DO NOT EDIT - autogenerated by boards.txt.py') + print("# DO NOT EDIT - autogenerated by boards.txt.py") print(f'# Command line `{" ".join(sys.argv)}`') for func in extra_header: func() print() # With Arduino IDE 1.8.7 the order of the menu items will be honored from the tools pull down list. - print('menu.BoardModel=Model') - print('menu.ESPModule=Module') - print('menu.UploadTool=Upload Tool') - print('menu.led=Builtin Led') - print('menu.baud=Upload Speed') - print('menu.xtal=CPU Frequency') - print('menu.CrystalFreq=Crystal Frequency') - print('menu.eesz=Flash Size') - print('menu.FlashMode=Flash Mode') - print('menu.FlashFreq=Flash Frequency') - print('menu.ResetMethod=Reset Method') - print('menu.dbg=Debug port') - print('menu.lvl=Debug Level') - print('menu.ip=lwIP Variant') - print('menu.vt=VTables') - print('menu.exception=C++ Exceptions') - print('menu.stacksmash=Stack Protection') - print('menu.wipe=Erase Flash') - print('menu.sdk=Espressif FW') - print('menu.ssl=SSL Support') - print('menu.mmu=MMU') - print('menu.non32xfer=Non-32-Bit Access') + print("menu.BoardModel=Model") + print("menu.ESPModule=Module") + print("menu.UploadTool=Upload Tool") + print("menu.led=Builtin Led") + print("menu.baud=Upload Speed") + print("menu.xtal=CPU Frequency") + print("menu.CrystalFreq=Crystal Frequency") + print("menu.eesz=Flash Size") + print("menu.FlashMode=Flash Mode") + print("menu.FlashFreq=Flash Frequency") + print("menu.ResetMethod=Reset Method") + print("menu.dbg=Debug port") + print("menu.lvl=Debug Level") + print("menu.ip=lwIP Variant") + print("menu.vt=VTables") + print("menu.exception=C++ Exceptions") + print("menu.stacksmash=Stack Protection") + print("menu.wipe=Erase Flash") + print("menu.sdk=Espressif FW") + print("menu.ssl=SSL Support") + print("menu.mmu=MMU") + print("menu.non32xfer=Non-32-Bit Access") print() for name, board in boards.items(): @@ -2286,26 +2355,35 @@ def boards_generate (output, boards, macros, extra_header=[], extra_board=[]): print(f'{name}.name={board["name"]}') # standalone options - if 'opts' in board: - for optname in sorted(board['opts']): + if "opts" in board: + for optname in sorted(board["opts"]): print(f'{name}{optname}={board["opts"][optname]}') # macros - macrolist = [ 'defaults', 'cpufreq_menu', 'vtable_menu', 'exception_menu', 'stacksmash_menu', 'ssl_cipher_menu', 'mmu_menu', 'non32xfer_menu' ] - if 'macro' in board: - macrolist += board['macro'] - macrolist += [ 'lwip', 'debug_menu', 'flash_erase_menu' ] + macrolist = [ + "defaults", + "cpufreq_menu", + "vtable_menu", + "exception_menu", + "stacksmash_menu", + "ssl_cipher_menu", + "mmu_menu", + "non32xfer_menu", + ] + if "macro" in board: + macrolist += board["macro"] + macrolist += ["lwip", "debug_menu", "flash_erase_menu"] macrolist += SERIAL_SPEEDS[board.get("serial", DEFAULT_SERIAL_SPEED)] - macrolist += [ 'autoflash' ] + macrolist += ["autoflash"] for func in extra_board: func(name) for block in macrolist: for optname in macros[block]: - if not ('opts' in board) or not (optname in board['opts']): - print(f'{name}{optname}={macros[block][optname]}') + if not ("opts" in board) or not (optname in board["opts"]): + print(f"{name}{optname}={macros[block][optname]}") print() @@ -2323,7 +2401,7 @@ def filtered_boards(boards, path, action=operator.sub): filtered = action(set(boards.keys()), filters) - print('Filtered boards list:') + print("Filtered boards list:") print(" ".join(filtered)) print() @@ -2341,10 +2419,12 @@ def filtered_boards(boards, path, action=operator.sub): return result -def prepare_boards (boards, required_boards): +def prepare_boards(boards, required_boards): boardslist = set(required_boards) | set(boards.keys()) boardslist = boardslist - set(required_boards) - boardslist = required_boards + tuple(sorted(boardslist, key=lambda x: boards[x]["name"])) + boardslist = required_boards + tuple( + sorted(boardslist, key=lambda x: boards[x]["name"]) + ) out = collections.OrderedDict() for name in boardslist: @@ -2353,24 +2433,30 @@ def prepare_boards (boards, required_boards): return out -def show_names (boards): - print('# Available board names. Delete or comment out the boards you do not need:') +def show_names(boards): + print("# Available board names. Delete or comment out the boards you do not need:") for name, board in boards.items(): print(f'{name: <20s} # {board["name"]}') ################################################################ -def package_generate (output, boards): + +def package_generate(output, boards): with output: - print(json.dumps( - [{"name": board["name"]} for board in boards.values()], - indent=3, separators=(",", ": "))) + print( + json.dumps( + [{"name": board["name"]} for board in boards.values()], + indent=3, + separators=(",", ": "), + ) + ) ################################################################ -def doc_generate (output, boards): + +def doc_generate(output, boards): with output: print("Boards") print("=" * len("Boards")) @@ -2384,6 +2470,7 @@ def doc_generate (output, boards): print(line) print() + ################################################################ # entrypoint @@ -2391,46 +2478,86 @@ def doc_generate (output, boards): ("boards", "boards-file", "boards.txt", "boards.txt"), ("ld", "ld-dir", "tools/sdk/ld", ".ld scripts"), ("flashmap", "flashmap-file", "cores/esp8266/FlashMap.h", "FlashMap header"), - ("package", "package-file", "package/package_esp8266com_index.boards.json", "IDE package index boards list (.json)"), + ( + "package", + "package-file", + "package/package_esp8266com_index.boards.json", + "IDE package index boards list (.json)", + ), ("doc", "doc-file", "doc/boards.rst", "Boards documentation (.rst)"), ) -def parse_cmdline (): +def parse_cmdline(): parser = argparse.ArgumentParser(description="File generator for esp8266/Arduino") generic = parser.add_argument_group(title="Generic options") - generic.add_argument("--led", type=int, default=2, help="default PIN for builtin LED, specified for generic boards (default %(default)d)") - generic.add_argument("--no-float", action="store_true", help="disable float support in printf and scanf (enabled by default)") - generic.add_argument("--custom-speed", action="append", default=[], help="additional serial speed option for all boards. can be specified multiple times.") + generic.add_argument( + "--led", + type=int, + default=2, + help="default PIN for builtin LED, specified for generic boards (default %(default)d)", + ) + generic.add_argument( + "--no-float", + action="store_true", + help="disable float support in printf and scanf (enabled by default)", + ) + generic.add_argument( + "--custom-speed", + action="append", + default=[], + help="additional serial speed option for all boards. can be specified multiple times.", + ) - filters = parser.add_argument_group("Filtering", "either INCLUDE or EXCLUDE boards based on the filter file").add_mutually_exclusive_group() + filters = parser.add_argument_group( + "Filtering", "either INCLUDE or EXCLUDE boards based on the filter file" + ).add_mutually_exclusive_group() filters.add_argument("--include", nargs="?") filters.add_argument("--exclude", nargs="?") subparsers = parser.add_subparsers(dest="command", help="sub-commands") subparsers.required = True - names = subparsers.add_parser("names", help="prints a list of all available board names") + names = subparsers.add_parser( + "names", help="prints a list of all available board names" + ) test = subparsers.add_parser("test", help="run a doctest self-check") - generate = subparsers.add_parser("generate", help="generate file(s). pass --all to enable all or -- to enable specific generator.") + generate = subparsers.add_parser( + "generate", + help="generate file(s). pass --all to enable all or -- to enable specific generator.", + ) - outputs = generate.add_argument_group("Output destination", + outputs = generate.add_argument_group( + "Output destination", "Either use STDOUT or write to the output file(s). " - "Optionally, when output file(s) already exist, preserve the original with .orig extension.") - outputs.add_argument("--output", choices=["stdout", "file", "file-with-backup"], default="file", help='(default "%(default)s")') + "Optionally, when output file(s) already exist, preserve the original with .orig extension.", + ) + outputs.add_argument( + "--output", + choices=["stdout", "file", "file-with-backup"], + default="file", + help='(default "%(default)s")', + ) use_all = generate.add_argument_group(title="Use all available generators") - use_all.add_argument("--all", dest="generators", action="store_const", const=[ - name for name, _, _, _ in GENERATORS - ]) + use_all.add_argument( + "--all", + dest="generators", + action="store_const", + const=[name for name, _, _, _ in GENERATORS], + ) for name, output, default, title in GENERATORS: group = generate.add_argument_group(title=title) - group.add_argument(f'--{name}', dest="generators", action="append_const", const=name) - group.add_argument(f'--{output}', default=default, help='(default "%(default)s")') + group.add_argument( + f"--{name}", dest="generators", action="append_const", const=name + ) + group.add_argument( + f"--{output}", default=default, help='(default "%(default)s")' + ) return parser.parse_args() @@ -2459,7 +2586,8 @@ def maybe_output(file): extra_board=[ no_float_boards_txt(args.no_float), custom_speeds_boards_txt(args.custom_speed), - ]) + ], + ) if "ld" in generators: for flash_map in all_flash_maps(): @@ -2476,7 +2604,7 @@ def maybe_output(file): doc_generate(maybe_output(args.doc_file), boards) -def main (): +def main(): args = parse_cmdline() if args.command == "test": From 71dacc87601f12f18503c7921cc1ea2b0d73995c Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Wed, 8 Jun 2022 19:26:46 +0300 Subject: [PATCH 28/35] consistent quoting --- tools/boards.txt.py | 2634 ++++++++++++++++++++++++------------------- 1 file changed, 1446 insertions(+), 1188 deletions(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index f56fdb12b8..18bc05666c 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -47,1245 +47,1503 @@ # default is 115 for every board # (unless, "serial" field from BOARDS below overrides it) -SERIAL_SPEEDS = collections.OrderedDict([ - ( '57', ( 's57', 's115', 's230', 's256', 's460', 's512', 's921', 's3000' )), - ( '115', ( 's115', 's57', 's230', 's256', 's460', 's512', 's921', 's3000' )), - ( '230', ( 's230', 's57', 's115', 's256', 's460', 's512', 's921', 's3000' )), - ( '256', ( 's256', 's57', 's115', 's230', 's460', 's512', 's921', 's3000' )), - ( '460', ( 's460', 's57', 's115', 's230', 's256', 's512', 's921', 's3000' )), - ( '512', ( 's512', 's57', 's115', 's230', 's256', 's460', 's921', 's3000' )), - ( '921', ( 's921', 's57', 's115', 's230', 's256', 's460', 's512', 's3000' )), - ( '3000', ( 's3000','s57', 's115', 's230', 's256', 's460', 's512', 's921' )), -]) - -DEFAULT_SERIAL_SPEED = '115' +SERIAL_SPEEDS = collections.OrderedDict( + [ + ("57", ("s57", "s115", "s230", "s256", "s460", "s512", "s921", "s3000")), + ("115", ("s115", "s57", "s230", "s256", "s460", "s512", "s921", "s3000")), + ("230", ("s230", "s57", "s115", "s256", "s460", "s512", "s921", "s3000")), + ("256", ("s256", "s57", "s115", "s230", "s460", "s512", "s921", "s3000")), + ("460", ("s460", "s57", "s115", "s230", "s256", "s512", "s921", "s3000")), + ("512", ("s512", "s57", "s115", "s230", "s256", "s460", "s921", "s3000")), + ("921", ("s921", "s57", "s115", "s230", "s256", "s460", "s512", "s3000")), + ("3000", ("s3000", "s57", "s115", "s230", "s256", "s460", "s512", "s921")), + ] +) + +DEFAULT_SERIAL_SPEED = "115" ################################################################ # boards list -BOARDS = collections.OrderedDict([ - ( 'generic', { - 'name': 'Generic ESP8266 Module', - 'opts': { - '.build.board': 'ESP8266_GENERIC', +BOARDS = collections.OrderedDict( + [ + ( + "generic", + { + "name": "Generic ESP8266 Module", + "opts": { + ".build.board": "ESP8266_GENERIC", + }, + "macro": [ + "resetmethod_menu", + "resetmethod_menu_extra", + "crystalfreq_menu", + "flashfreq_menu", + "flashmode_menu", + "1M", + "2M", + "4M", + "8M", + "16M", + "512K", + "led", + "sdk", + ], + "desc": [ + "These modules come in different form factors and pinouts. See the page at ESP8266 community wiki for more info: `ESP8266 Module Family `__.", + "", + "Usually these modules have no bootstrapping resistors on board, insufficient decoupling capacitors, no voltage regulator, no reset circuit, and no USB-serial adapter. This makes using them somewhat tricky, compared to development boards which add these features.", + "", + "In order to use these modules, make sure to observe the following:", + "", + "- **Provide sufficient power to the module.** For stable use of the ESP8266 a power supply with 3.3V and >= 250mA is required. Using the power available from USB to Serial adapter is not recommended, these adapters typically do not supply enough current to run ESP8266 reliably in every situation. An external supply or regulator alongwith filtering capacitors is preferred.", + "", + "- **Connect bootstrapping resistors** to GPIO0, GPIO2, GPIO15 according to the schematics below.", + "", + "- **Put ESP8266 into bootloader mode** before uploading code.", + "", + "Serial Adapter", + "--------------", + "", + "There are many different USB to Serial adapters / boards. To be able to put ESP8266 into bootloader mode using serial handshaking lines, you need the adapter which breaks out RTS and DTR outputs. CTS and DSR are not useful for upload (they are inputs). Make sure the adapter can work with 3.3V IO voltage: it should have a jumper or a switch to select between 5V and 3.3V, or be marked as 3.3V only.", + "", + "Adapters based around the following ICs should work:", + "", + "- FT232RL", + "- CP2102", + "- CH340G", + "", + "PL2303-based adapters are known not to work on Mac OS X. See https://github.com/igrr/esptool-ck/issues/9 for more info.", + "", + "Minimal Hardware Setup for Bootloading and Usage", + "------------------------------------------------", + "", + "+-----------------+------------+------------------+", + "| PIN | Resistor | Serial Adapter |", + "+=================+============+==================+", + "| VCC | | VCC (3.3V) |", + "+-----------------+------------+------------------+", + "| GND | | GND |", + "+-----------------+------------+------------------+", + "| TX or GPIO2\* | | RX |", + "+-----------------+------------+------------------+", + "| RX | | TX |", + "+-----------------+------------+------------------+", + "| GPIO0 | PullUp | DTR |", + "+-----------------+------------+------------------+", + "| Reset\* | PullUp | RTS |", + "+-----------------+------------+------------------+", + "| GPIO15\* | PullDown | |", + "+-----------------+------------+------------------+", + "| CH\_PD | PullUp | |", + "+-----------------+------------+------------------+", + "", + "- Note", + "- GPIO15 is also named MTDO", + "- Reset is also named RSBT or REST (adding PullUp improves the", + " stability of the module)", + "- GPIO2 is alternative TX for the boot loader mode", + "- **Directly connecting a pin to VCC or GND is not a substitute for a", + " PullUp or PullDown resistor, doing this can break upload management", + " and the serial console, instability has also been noted in some", + " cases.**", + "", + "ESP to Serial", + "-------------", + "", + ".. figure:: ESP_to_serial.png", + " :alt: ESP to Serial", + "", + " ESP to Serial", + "", + "Minimal Hardware Setup for Bootloading only", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", + "", + "ESPxx Hardware", + "", + "+---------------+------------+------------------+", + "| PIN | Resistor | Serial Adapter |", + "+===============+============+==================+", + "| VCC | | VCC (3.3V) |", + "+---------------+------------+------------------+", + "| GND | | GND |", + "+---------------+------------+------------------+", + "| TX or GPIO2 | | RX |", + "+---------------+------------+------------------+", + "| RX | | TX |", + "+---------------+------------+------------------+", + "| GPIO0 | | GND |", + "+---------------+------------+------------------+", + "| Reset | | RTS\* |", + "+---------------+------------+------------------+", + "| GPIO15 | PullDown | |", + "+---------------+------------+------------------+", + "| CH\_PD | PullUp | |", + "+---------------+------------+------------------+", + "", + "- Note", + "- if no RTS is used a manual power toggle is needed", + "", + "Minimal Hardware Setup for Running only", + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", + "", + "ESPxx Hardware", + "", + "+----------+------------+----------------+", + "| PIN | Resistor | Power supply |", + "+==========+============+================+", + "| VCC | | VCC (3.3V) |", + "+----------+------------+----------------+", + "| GND | | GND |", + "+----------+------------+----------------+", + "| GPIO0 | PullUp | |", + "+----------+------------+----------------+", + "| GPIO15 | PullDown | |", + "+----------+------------+----------------+", + "| CH\_PD | PullUp | |", + "+----------+------------+----------------+", + "", + "Minimal", + "-------", + "", + ".. figure:: ESP_min.png", + " :alt: ESP min", + "", + " ESP min", + "", + "Improved Stability", + "------------------", + "", + ".. figure:: ESP_improved_stability.png", + " :alt: ESP improved stability", + "", + " ESP improved stability", + "", + "Boot Messages and Modes", + "-----------------------", + "", + "The ESP module checks at every boot the Pins 0, 2 and 15. based on them its boots in different modes:", + "", + "+----------+---------+---------+------------------------------------+", + "| GPIO15 | GPIO0 | GPIO2 | Mode |", + "+==========+=========+=========+====================================+", + "| 0V | 0V | 3.3V | Uart Bootloader |", + "+----------+---------+---------+------------------------------------+", + "| 0V | 3.3V | 3.3V | Boot sketch (SPI flash) |", + "+----------+---------+---------+------------------------------------+", + "| 3.3V | x | x | SDIO mode (not used for Arduino) |", + "+----------+---------+---------+------------------------------------+", + "", + "at startup the ESP prints out the current boot mode example:", + "", + "::", + "", + " rst cause:2, boot mode:(3,6)", + "", + "note: - GPIO2 is used as TX output and the internal Pullup is enabled on boot.", + "", + "rst cause", + "~~~~~~~~~", + "", + "+----------+------------------+", + "| Number | Description |", + "+==========+==================+", + "| 0 | unknown |", + "+----------+------------------+", + "| 1 | normal boot |", + "+----------+------------------+", + "| 2 | reset pin |", + "+----------+------------------+", + "| 3 | software reset |", + "+----------+------------------+", + "| 4 | watchdog reset |", + "+----------+------------------+", + "", + "boot mode", + "~~~~~~~~~", + "", + "the first value respects the pin setup of the Pins 0, 2 and 15.", + "", + "+----------+----------+---------+---------+-------------+", + "| Number | GPIO15 | GPIO0 | GPIO2 | Mode |", + "+==========+==========+=========+=========+=============+", + "| 0 | 0V | 0V | 0V | Not valid |", + "+----------+----------+---------+---------+-------------+", + "| 1 | 0V | 0V | 3.3V | Uart |", + "+----------+----------+---------+---------+-------------+", + "| 2 | 0V | 3.3V | 0V | Not valid |", + "+----------+----------+---------+---------+-------------+", + "| 3 | 0V | 3.3V | 3.3V | Flash |", + "+----------+----------+---------+---------+-------------+", + "| 4 | 3.3V | 0V | 0V | SDIO |", + "+----------+----------+---------+---------+-------------+", + "| 5 | 3.3V | 0V | 3.3V | SDIO |", + "+----------+----------+---------+---------+-------------+", + "| 6 | 3.3V | 3.3V | 0V | SDIO |", + "+----------+----------+---------+---------+-------------+", + "| 7 | 3.3V | 3.3V | 3.3V | SDIO |", + "+----------+----------+---------+---------+-------------+", + "", + "note: - number = ((GPIO15 << 2) \| (GPIO0 << 1) \| GPIO2);", + ], }, - 'macro': [ - 'resetmethod_menu', - 'resetmethod_menu_extra', - 'crystalfreq_menu', - 'flashfreq_menu', - 'flashmode_menu', - '1M', '2M', '4M', '8M', '16M', '512K', - 'led', - 'sdk', - ], - 'desc': [ 'These modules come in different form factors and pinouts. See the page at ESP8266 community wiki for more info: `ESP8266 Module Family `__.', - '', - 'Usually these modules have no bootstrapping resistors on board, insufficient decoupling capacitors, no voltage regulator, no reset circuit, and no USB-serial adapter. This makes using them somewhat tricky, compared to development boards which add these features.', - '', - 'In order to use these modules, make sure to observe the following:', - '', - '- **Provide sufficient power to the module.** For stable use of the ESP8266 a power supply with 3.3V and >= 250mA is required. Using the power available from USB to Serial adapter is not recommended, these adapters typically do not supply enough current to run ESP8266 reliably in every situation. An external supply or regulator alongwith filtering capacitors is preferred.', - '', - '- **Connect bootstrapping resistors** to GPIO0, GPIO2, GPIO15 according to the schematics below.', - '', - '- **Put ESP8266 into bootloader mode** before uploading code.', - '', - 'Serial Adapter', - '--------------', - '', - 'There are many different USB to Serial adapters / boards. To be able to put ESP8266 into bootloader mode using serial handshaking lines, you need the adapter which breaks out RTS and DTR outputs. CTS and DSR are not useful for upload (they are inputs). Make sure the adapter can work with 3.3V IO voltage: it should have a jumper or a switch to select between 5V and 3.3V, or be marked as 3.3V only.', - '', - 'Adapters based around the following ICs should work:', - '', - '- FT232RL', - '- CP2102', - '- CH340G', - '', - 'PL2303-based adapters are known not to work on Mac OS X. See https://github.com/igrr/esptool-ck/issues/9 for more info.', - '', - 'Minimal Hardware Setup for Bootloading and Usage', - '------------------------------------------------', - '', - '+-----------------+------------+------------------+', - '| PIN | Resistor | Serial Adapter |', - '+=================+============+==================+', - '| VCC | | VCC (3.3V) |', - '+-----------------+------------+------------------+', - '| GND | | GND |', - '+-----------------+------------+------------------+', - '| TX or GPIO2\* | | RX |', - '+-----------------+------------+------------------+', - '| RX | | TX |', - '+-----------------+------------+------------------+', - '| GPIO0 | PullUp | DTR |', - '+-----------------+------------+------------------+', - '| Reset\* | PullUp | RTS |', - '+-----------------+------------+------------------+', - '| GPIO15\* | PullDown | |', - '+-----------------+------------+------------------+', - '| CH\_PD | PullUp | |', - '+-----------------+------------+------------------+', - '', - '- Note', - '- GPIO15 is also named MTDO', - '- Reset is also named RSBT or REST (adding PullUp improves the', - ' stability of the module)', - '- GPIO2 is alternative TX for the boot loader mode', - '- **Directly connecting a pin to VCC or GND is not a substitute for a', - ' PullUp or PullDown resistor, doing this can break upload management', - ' and the serial console, instability has also been noted in some', - ' cases.**', - '', - 'ESP to Serial', - '-------------', - '', - '.. figure:: ESP_to_serial.png', - ' :alt: ESP to Serial', - '', - ' ESP to Serial', - '', - 'Minimal Hardware Setup for Bootloading only', - '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', - '', - 'ESPxx Hardware', - '', - '+---------------+------------+------------------+', - '| PIN | Resistor | Serial Adapter |', - '+===============+============+==================+', - '| VCC | | VCC (3.3V) |', - '+---------------+------------+------------------+', - '| GND | | GND |', - '+---------------+------------+------------------+', - '| TX or GPIO2 | | RX |', - '+---------------+------------+------------------+', - '| RX | | TX |', - '+---------------+------------+------------------+', - '| GPIO0 | | GND |', - '+---------------+------------+------------------+', - '| Reset | | RTS\* |', - '+---------------+------------+------------------+', - '| GPIO15 | PullDown | |', - '+---------------+------------+------------------+', - '| CH\_PD | PullUp | |', - '+---------------+------------+------------------+', - '', - '- Note', - '- if no RTS is used a manual power toggle is needed', - '', - 'Minimal Hardware Setup for Running only', - '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', - '', - 'ESPxx Hardware', - '', - '+----------+------------+----------------+', - '| PIN | Resistor | Power supply |', - '+==========+============+================+', - '| VCC | | VCC (3.3V) |', - '+----------+------------+----------------+', - '| GND | | GND |', - '+----------+------------+----------------+', - '| GPIO0 | PullUp | |', - '+----------+------------+----------------+', - '| GPIO15 | PullDown | |', - '+----------+------------+----------------+', - '| CH\_PD | PullUp | |', - '+----------+------------+----------------+', - '', - 'Minimal', - '-------', - '', - '.. figure:: ESP_min.png', - ' :alt: ESP min', - '', - ' ESP min', - '', - 'Improved Stability', - '------------------', - '', - '.. figure:: ESP_improved_stability.png', - ' :alt: ESP improved stability', - '', - ' ESP improved stability', - '', - 'Boot Messages and Modes', - '-----------------------', - '', - 'The ESP module checks at every boot the Pins 0, 2 and 15. based on them its boots in different modes:', - '', - '+----------+---------+---------+------------------------------------+', - '| GPIO15 | GPIO0 | GPIO2 | Mode |', - '+==========+=========+=========+====================================+', - '| 0V | 0V | 3.3V | Uart Bootloader |', - '+----------+---------+---------+------------------------------------+', - '| 0V | 3.3V | 3.3V | Boot sketch (SPI flash) |', - '+----------+---------+---------+------------------------------------+', - '| 3.3V | x | x | SDIO mode (not used for Arduino) |', - '+----------+---------+---------+------------------------------------+', - '', - 'at startup the ESP prints out the current boot mode example:', - '', - '::', - '', - ' rst cause:2, boot mode:(3,6)', - '', - 'note: - GPIO2 is used as TX output and the internal Pullup is enabled on boot.', - '', - 'rst cause', - '~~~~~~~~~', - '', - '+----------+------------------+', - '| Number | Description |', - '+==========+==================+', - '| 0 | unknown |', - '+----------+------------------+', - '| 1 | normal boot |', - '+----------+------------------+', - '| 2 | reset pin |', - '+----------+------------------+', - '| 3 | software reset |', - '+----------+------------------+', - '| 4 | watchdog reset |', - '+----------+------------------+', - '', - 'boot mode', - '~~~~~~~~~', - '', - 'the first value respects the pin setup of the Pins 0, 2 and 15.', - '', - '+----------+----------+---------+---------+-------------+', - '| Number | GPIO15 | GPIO0 | GPIO2 | Mode |', - '+==========+==========+=========+=========+=============+', - '| 0 | 0V | 0V | 0V | Not valid |', - '+----------+----------+---------+---------+-------------+', - '| 1 | 0V | 0V | 3.3V | Uart |', - '+----------+----------+---------+---------+-------------+', - '| 2 | 0V | 3.3V | 0V | Not valid |', - '+----------+----------+---------+---------+-------------+', - '| 3 | 0V | 3.3V | 3.3V | Flash |', - '+----------+----------+---------+---------+-------------+', - '| 4 | 3.3V | 0V | 0V | SDIO |', - '+----------+----------+---------+---------+-------------+', - '| 5 | 3.3V | 0V | 3.3V | SDIO |', - '+----------+----------+---------+---------+-------------+', - '| 6 | 3.3V | 3.3V | 0V | SDIO |', - '+----------+----------+---------+---------+-------------+', - '| 7 | 3.3V | 3.3V | 3.3V | SDIO |', - '+----------+----------+---------+---------+-------------+', - '', - 'note: - number = ((GPIO15 << 2) \| (GPIO0 << 1) \| GPIO2);', - ], - }), - ( 'esp8285', { - 'name': 'Generic ESP8285 Module', - 'opts': { - '.build.board': 'ESP8266_ESP01', - '.build.variant': 'esp8285' + ), + ( + "esp8285", + { + "name": "Generic ESP8285 Module", + "opts": {".build.board": "ESP8266_ESP01", ".build.variant": "esp8285"}, + "macro": [ + "resetmethod_menu", + "resetmethod_menu_extra", + "crystalfreq_menu", + "flashmode_dout", + "flashfreq_40", + "1M", + "2M", + "led", + "sdk", + ], + "desc": [ + "ESP8285 (`datasheet `__) is a multi-chip package which contains ESP8266 and 1MB flash. All points related to bootstrapping resistors and recommended circuits listed above apply to ESP8285 as well.", + "", + "Note that since ESP8285 has SPI flash memory internally connected in DOUT mode, pins 9 and 10 may be used as GPIO / I2C / PWM pins.", + ], }, - 'macro': [ - 'resetmethod_menu', - 'resetmethod_menu_extra', - 'crystalfreq_menu', - 'flashmode_dout', - 'flashfreq_40', - '1M', '2M', - 'led', - 'sdk', - ], - 'desc': [ 'ESP8285 (`datasheet `__) is a multi-chip package which contains ESP8266 and 1MB flash. All points related to bootstrapping resistors and recommended circuits listed above apply to ESP8285 as well.', - '', - 'Note that since ESP8285 has SPI flash memory internally connected in DOUT mode, pins 9 and 10 may be used as GPIO / I2C / PWM pins.', - ], - }), - ( 'agruminolemon', { - 'name': 'Lifely Agrumino Lemon v4', - 'opts': collections.OrderedDict([ - ( '.build.board', 'ESP8266_AGRUMINO_LEMON_V4' ), - ( '.build.variant', 'agruminolemonv4' ), - ]), - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_dio', - 'flashfreq_40', - '2M', - ], - 'desc': [ 'Procuct page https://www.lifely.cc', - '', - 'This Board "Lifely Agrumino Lemon" is based with WT8266-S1 core with WiFi 2,4Ghz and 2MB of Flash.', - 'Power', - 'Micro usb power cable, Lir2450 rechargeable battery (or not rechargeable)or with JST connector in the back board Max 6 Vin', - 'Libraries and examples', - 'Download libraries from: Official Arduino Ide, our website https://www.lifely.cc or https://github.com/lifely-cc/', - 'Full pinout and PDF for setup here https://www.lifely.cc our libraries is OpenSource', - ], - }), - ( 'espduino', { - 'name': 'ESPDuino (ESP-13 Module)', - 'opts': collections.OrderedDict([ - ( '.build.board', 'ESP8266_ESP13' ), - ( '.build.variant', 'ESPDuino' ), - ( '.menu.ResetMethod.v2', 'ESPduino-V2' ), - ( '.menu.ResetMethod.v2.upload.resetmethod', '--before default_reset --after hard_reset' ), - ( '.menu.ResetMethod.v1', 'ESPduino-V1' ), - ( '.menu.ResetMethod.v1.upload.resetmethod', '--before no_reset --after soft_reset' ), - ( '.menu.UploadTool.esptool', 'Serial' ), - ( '.menu.UploadTool.esptool.upload.tool', 'esptool' ), - ( '.menu.UploadTool.esptool.upload.verbose', '--trace' ), - ( '.menu.UploadTool.espota', 'OTA' ), - ( '.menu.UploadTool.espota.upload.tool', 'espota' ), - ]), - 'macro': [ - 'flashmode_dio', - 'flashfreq_40', - '4M', - ], - 'desc': [ '*TODO*' ], - }), - ( 'huzzah', { - 'name': 'Adafruit Feather HUZZAH ESP8266', - 'opts': { - '.build.board': 'ESP8266_ADAFRUIT_HUZZAH', - '.build.variant': 'adafruit', + ), + ( + "agruminolemon", + { + "name": "Lifely Agrumino Lemon v4", + "opts": collections.OrderedDict( + [ + (".build.board", "ESP8266_AGRUMINO_LEMON_V4"), + (".build.variant", "agruminolemonv4"), + ] + ), + "macro": [ + "resetmethod_nodemcu", + "flashmode_dio", + "flashfreq_40", + "2M", + ], + "desc": [ + "Procuct page https://www.lifely.cc", + "", + 'This Board "Lifely Agrumino Lemon" is based with WT8266-S1 core with WiFi 2,4Ghz and 2MB of Flash.', + "Power", + "Micro usb power cable, Lir2450 rechargeable battery (or not rechargeable)or with JST connector in the back board Max 6 Vin", + "Libraries and examples", + "Download libraries from: Official Arduino Ide, our website https://www.lifely.cc or https://github.com/lifely-cc/", + "Full pinout and PDF for setup here https://www.lifely.cc our libraries is OpenSource", + ], }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_qio', - 'flashfreq_40', - '4M', - ], - 'desc': [ 'The Adafruit Feather HUZZAH ESP8266 is an Arduino-compatible Wi-Fi development board powered by Ai-Thinker\'s ESP-12S, clocked at 80 MHz at 3.3V logic. A high-quality SiLabs CP2104 USB-Serial chip is included so that you can upload code at a blistering 921600 baud for fast development time. It also has auto-reset so no noodling with pins and reset button pressings. A 3.7V Lithium polymer battery connector is included, making it ideal for portable projects. The Adafruit Feather HUZZAH ESP8266 will automatically recharge a connected battery when USB power is available.', - '', - 'Product page: https://www.adafruit.com/product/2821' - ], - }), - ( 'wifi_kit_8', { - 'name': 'WiFi Kit 8', - 'opts': { - '.build.board': 'wifi_kit_8', - '.build.variant': 'wifi_kit_8', + ), + ( + "espduino", + { + "name": "ESPDuino (ESP-13 Module)", + "opts": collections.OrderedDict( + [ + (".build.board", "ESP8266_ESP13"), + (".build.variant", "ESPDuino"), + (".menu.ResetMethod.v2", "ESPduino-V2"), + ( + ".menu.ResetMethod.v2.upload.resetmethod", + "--before default_reset --after hard_reset", + ), + (".menu.ResetMethod.v1", "ESPduino-V1"), + ( + ".menu.ResetMethod.v1.upload.resetmethod", + "--before no_reset --after soft_reset", + ), + (".menu.UploadTool.esptool", "Serial"), + (".menu.UploadTool.esptool.upload.tool", "esptool"), + (".menu.UploadTool.esptool.upload.verbose", "--trace"), + (".menu.UploadTool.espota", "OTA"), + (".menu.UploadTool.espota.upload.tool", "espota"), + ] + ), + "macro": [ + "flashmode_dio", + "flashfreq_40", + "4M", + ], + "desc": ["*TODO*"], }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_dio', - 'flashfreq_40', - '4M', - ], - 'desc': [ 'The Heltec WiFi Kit 8 is an Arduino-compatible Wi-Fi development board powered by Ai-Thinker\'s ESP-12S, clocked at 80 MHz at 3.3V logic. A high-quality SiLabs CP2104 USB-Serial chip is included so that you can upload code at a blistering 921600 baud for fast development time. It also has auto-reset so no noodling with pins and reset button pressings. A 3.7V Lithium polymer battery connector is included, making it ideal for portable projects. The Heltec WiFi Kit 8 will automatically recharge a connected battery when USB power is available.', - '', - 'Product page: https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series' - ], - }), - ( 'inventone', { - 'name': 'Invent One', - 'opts': { - '.build.board': 'ESP8266_INVENT_ONE', - '.build.variant': 'inventone', + ), + ( + "huzzah", + { + "name": "Adafruit Feather HUZZAH ESP8266", + "opts": { + ".build.board": "ESP8266_ADAFRUIT_HUZZAH", + ".build.variant": "adafruit", + }, + "macro": [ + "resetmethod_nodemcu", + "flashmode_qio", + "flashfreq_40", + "4M", + ], + "desc": [ + "The Adafruit Feather HUZZAH ESP8266 is an Arduino-compatible Wi-Fi development board powered by Ai-Thinker's ESP-12S, clocked at 80 MHz at 3.3V logic. A high-quality SiLabs CP2104 USB-Serial chip is included so that you can upload code at a blistering 921600 baud for fast development time. It also has auto-reset so no noodling with pins and reset button pressings. A 3.7V Lithium polymer battery connector is included, making it ideal for portable projects. The Adafruit Feather HUZZAH ESP8266 will automatically recharge a connected battery when USB power is available.", + "", + "Product page: https://www.adafruit.com/product/2821", + ], }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_dio', - 'flashfreq_40', - '4M', - ], - 'desc': [ 'The Invent One is an Arduino-compatible Wi-Fi development board powered by Ai-Thinker\'s ESP-12F, clocked at 80 MHz at 3.3V logic. It has an onboard ADC (PCF8591) so that you can have multiple analog inputs to work with. More information can be found here: https://blog.inventone.ng', - '', - 'Product page: https://inventone.ng' - ], - }), - ( 'cw01', { - 'name': 'XinaBox CW01', - 'opts': { - '.build.board': 'ESP8266_XINABOX_CW01', - '.build.variant': 'xinabox', + ), + ( + "wifi_kit_8", + { + "name": "WiFi Kit 8", + "opts": { + ".build.board": "wifi_kit_8", + ".build.variant": "wifi_kit_8", + }, + "macro": [ + "resetmethod_nodemcu", + "flashmode_dio", + "flashfreq_40", + "4M", + ], + "desc": [ + "The Heltec WiFi Kit 8 is an Arduino-compatible Wi-Fi development board powered by Ai-Thinker's ESP-12S, clocked at 80 MHz at 3.3V logic. A high-quality SiLabs CP2104 USB-Serial chip is included so that you can upload code at a blistering 921600 baud for fast development time. It also has auto-reset so no noodling with pins and reset button pressings. A 3.7V Lithium polymer battery connector is included, making it ideal for portable projects. The Heltec WiFi Kit 8 will automatically recharge a connected battery when USB power is available.", + "", + "Product page: https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series", + ], }, - 'macro': [ - 'resetmethod_nodemcu', - 'crystalfreq_menu', - 'flashmode_dio', - 'flashfreq_40', - '4M', - ], - 'desc': [ 'The XinaBox CW01(ESP8266) is an Arduino-compatible Wi-Fi development board powered by an ESP-12F, clocked at 80 MHz at 3.3V logic. The CW01 has an onboard RGB LED and 3 xBUS connection ports.', - '', - 'Product page: https://xinabox.cc/products/CW01' - ], - }), - ( 'espresso_lite_v1', { - 'name': 'ESPresso Lite 1.0', - 'opts': { - '.build.board': 'ESP8266_ESPRESSO_LITE_V1', - '.build.variant': 'espresso_lite_v1', + ), + ( + "inventone", + { + "name": "Invent One", + "opts": { + ".build.board": "ESP8266_INVENT_ONE", + ".build.variant": "inventone", + }, + "macro": [ + "resetmethod_nodemcu", + "flashmode_dio", + "flashfreq_40", + "4M", + ], + "desc": [ + "The Invent One is an Arduino-compatible Wi-Fi development board powered by Ai-Thinker's ESP-12F, clocked at 80 MHz at 3.3V logic. It has an onboard ADC (PCF8591) so that you can have multiple analog inputs to work with. More information can be found here: https://blog.inventone.ng", + "", + "Product page: https://inventone.ng", + ], }, - 'macro': [ - 'flashmode_dio', - 'flashfreq_40', - '4M', - 'resetmethod_menu', - ], - 'desc': [ 'ESPresso Lite 1.0 (beta version) is an Arduino-compatible Wi-Fi development board powered by Espressif System\'s own ESP8266 WROOM-02 module. It has breadboard-friendly breakout pins with in-built LED, two reset/flash buttons and a user programmable button . The operating voltage is 3.3VDC, regulated with 800mA maximum current. Special distinctive features include on-board I2C pads that allow direct connection to OLED LCD and sensor boards.', ] - }), - ( 'espresso_lite_v2', { - 'name': 'ESPresso Lite 2.0', - 'opts': { - '.build.board': 'ESP8266_ESPRESSO_LITE_V2', - '.build.variant': 'espresso_lite_v2', + ), + ( + "cw01", + { + "name": "XinaBox CW01", + "opts": { + ".build.board": "ESP8266_XINABOX_CW01", + ".build.variant": "xinabox", + }, + "macro": [ + "resetmethod_nodemcu", + "crystalfreq_menu", + "flashmode_dio", + "flashfreq_40", + "4M", + ], + "desc": [ + "The XinaBox CW01(ESP8266) is an Arduino-compatible Wi-Fi development board powered by an ESP-12F, clocked at 80 MHz at 3.3V logic. The CW01 has an onboard RGB LED and 3 xBUS connection ports.", + "", + "Product page: https://xinabox.cc/products/CW01", + ], }, - 'macro': [ - 'flashmode_dio', - 'flashfreq_40', - '4M', - 'resetmethod_menu', - ], - 'desc': [ 'ESPresso Lite 2.0 is an Arduino-compatible Wi-Fi development board based on an earlier V1 (beta version). Re-designed together with Cytron Technologies, the newly-revised ESPresso Lite V2.0 features the auto-load/auto-program function, eliminating the previous need to reset the board manually before flashing a new program. It also feature two user programmable side buttons and a reset button. The special distinctive features of on-board pads for I2C sensor and actuator is retained.', ] - }), - ( 'phoenix_v1', { - 'name': 'Phoenix 1.0', - 'opts': { - '.build.board': 'ESP8266_PHOENIX_V1', - '.build.variant': 'phoenix_v1', + ), + ( + "espresso_lite_v1", + { + "name": "ESPresso Lite 1.0", + "opts": { + ".build.board": "ESP8266_ESPRESSO_LITE_V1", + ".build.variant": "espresso_lite_v1", + }, + "macro": [ + "flashmode_dio", + "flashfreq_40", + "4M", + "resetmethod_menu", + ], + "desc": [ + "ESPresso Lite 1.0 (beta version) is an Arduino-compatible Wi-Fi development board powered by Espressif System's own ESP8266 WROOM-02 module. It has breadboard-friendly breakout pins with in-built LED, two reset/flash buttons and a user programmable button . The operating voltage is 3.3VDC, regulated with 800mA maximum current. Special distinctive features include on-board I2C pads that allow direct connection to OLED LCD and sensor boards.", + ], }, - 'macro': [ - 'flashmode_dio', - 'flashfreq_40', - '4M', - 'resetmethod_menu', - ], - 'desc': [ 'Product page: http://www.espert.co', ], - }), - ( 'phoenix_v2', { - 'name': 'Phoenix 2.0', - 'opts': { - '.build.board': 'ESP8266_PHOENIX_V2', - '.build.variant': 'phoenix_v2', + ), + ( + "espresso_lite_v2", + { + "name": "ESPresso Lite 2.0", + "opts": { + ".build.board": "ESP8266_ESPRESSO_LITE_V2", + ".build.variant": "espresso_lite_v2", + }, + "macro": [ + "flashmode_dio", + "flashfreq_40", + "4M", + "resetmethod_menu", + ], + "desc": [ + "ESPresso Lite 2.0 is an Arduino-compatible Wi-Fi development board based on an earlier V1 (beta version). Re-designed together with Cytron Technologies, the newly-revised ESPresso Lite V2.0 features the auto-load/auto-program function, eliminating the previous need to reset the board manually before flashing a new program. It also feature two user programmable side buttons and a reset button. The special distinctive features of on-board pads for I2C sensor and actuator is retained.", + ], }, - 'macro': [ - 'flashmode_dio', - 'flashfreq_40', - '4M', - 'resetmethod_menu', - ], - 'desc': [ 'Product page: http://www.espert.co', ], - }), - ( 'nodemcu', { - 'name': 'NodeMCU 0.9 (ESP-12 Module)', - 'opts': { - '.build.board': 'ESP8266_NODEMCU_ESP12', - '.build.variant': 'nodemcu', + ), + ( + "phoenix_v1", + { + "name": "Phoenix 1.0", + "opts": { + ".build.board": "ESP8266_PHOENIX_V1", + ".build.variant": "phoenix_v1", + }, + "macro": [ + "flashmode_dio", + "flashfreq_40", + "4M", + "resetmethod_menu", + ], + "desc": [ + "Product page: http://www.espert.co", + ], }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_qio', - 'flashfreq_40', - '4M', - ], - 'desc': [ 'Pin mapping', - '~~~~~~~~~~~', - '', - 'Pin numbers written on the board itself do not correspond to ESP8266 GPIO pin numbers. Constants are defined to make using this board easier:', - '', - '.. code:: c++', - '', - ' static const uint8_t D0 = 16;', - ' static const uint8_t D1 = 5;', - ' static const uint8_t D2 = 4;', - ' static const uint8_t D3 = 0;', - ' static const uint8_t D4 = 2;', - ' static const uint8_t D5 = 14;', - ' static const uint8_t D6 = 12;', - ' static const uint8_t D7 = 13;', - ' static const uint8_t D8 = 15;', - ' static const uint8_t D9 = 3;', - ' static const uint8_t D10 = 1;', - '', - 'If you want to use NodeMCU pin 5, use D5 for pin number, and it will be translated to \'real\' GPIO pin 14.', - ], - }), - ( 'nodemcuv2', { - 'name': 'NodeMCU 1.0 (ESP-12E Module)', - 'opts': { - '.build.board': 'ESP8266_NODEMCU_ESP12E', - '.build.variant': 'nodemcu', + ), + ( + "phoenix_v2", + { + "name": "Phoenix 2.0", + "opts": { + ".build.board": "ESP8266_PHOENIX_V2", + ".build.variant": "phoenix_v2", + }, + "macro": [ + "flashmode_dio", + "flashfreq_40", + "4M", + "resetmethod_menu", + ], + "desc": [ + "Product page: http://www.espert.co", + ], }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_dio', - 'flashfreq_40', - '4M', - 'led216', - ], - 'desc': [ 'This module is sold under many names for around $6.50 on AliExpress and it\'s one of the cheapest, fully integrated ESP8266 solutions.', - '', - 'It\'s an open hardware design with an ESP-12E core and 4 MB of SPI flash.', - '', - 'According to the manufacturer, "with a micro USB cable, you can connect NodeMCU devkit to your laptop and flash it without any trouble". This is more or less true: the board comes with a CP2102 onboard USB to serial adapter which just works, well, the majority of the time. Sometimes flashing fails and you have to reset the board by holding down FLASH +', - 'RST, then releasing FLASH, then releasing RST. This forces the CP2102 device to power cycle and to be re-numbered by Linux.', - '', - 'The board also features a NCP1117 voltage regulator, a blue LED on GPIO16 and a 220k/100k Ohm voltage divider on the ADC input pin.', - 'The ESP-12E usually has a led connected on GPIO2.', - '', - 'Full pinout and PDF schematics can be found `here `__', - ], - }), - ( 'modwifi', { - 'name': 'Olimex MOD-WIFI-ESP8266(-DEV)', - 'opts': { - '.build.board': 'MOD_WIFI_ESP8266', - '.build.variant': 'modwifi', + ), + ( + "nodemcu", + { + "name": "NodeMCU 0.9 (ESP-12 Module)", + "opts": { + ".build.board": "ESP8266_NODEMCU_ESP12", + ".build.variant": "nodemcu", + }, + "macro": [ + "resetmethod_nodemcu", + "flashmode_qio", + "flashfreq_40", + "4M", + ], + "desc": [ + "Pin mapping", + "~~~~~~~~~~~", + "", + "Pin numbers written on the board itself do not correspond to ESP8266 GPIO pin numbers. Constants are defined to make using this board easier:", + "", + ".. code:: c++", + "", + " static const uint8_t D0 = 16;", + " static const uint8_t D1 = 5;", + " static const uint8_t D2 = 4;", + " static const uint8_t D3 = 0;", + " static const uint8_t D4 = 2;", + " static const uint8_t D5 = 14;", + " static const uint8_t D6 = 12;", + " static const uint8_t D7 = 13;", + " static const uint8_t D8 = 15;", + " static const uint8_t D9 = 3;", + " static const uint8_t D10 = 1;", + "", + "If you want to use NodeMCU pin 5, use D5 for pin number, and it will be translated to 'real' GPIO pin 14.", + ], }, - 'macro': [ - 'resetmethod_menu', - 'resetmethod_menu_extra', - 'flashmode_menu', - 'flashfreq_40', - '2M', - ], - 'desc': [ 'This board comes with 2 MB of SPI flash and optional accessories (e.g. evaluation board ESP8266-EVB or BAT-BOX for batteries).', - '', - 'The basic module has three solder jumpers that allow you to switch the operating mode between SDIO, UART and FLASH.', - '', - 'The board is shipped for FLASH operation mode, with jumpers TD0JP=0, IO0JP=1, IO2JP=1.', - '', - 'Since jumper IO0JP is tied to GPIO0, which is PIN 21, you\'ll have to ground it before programming with a USB to serial adapter and reset the board by power cycling it.', - '', - 'UART pins for programming and serial I/O are GPIO1 (TXD, pin 3) and GPIO3 (RXD, pin 4).', - '', - 'You can find the board schematics `here `__', - ], - }), - ( 'thing', { - 'name': 'SparkFun ESP8266 Thing', - 'opts': { - '.build.board': 'ESP8266_THING', - '.build.variant': 'thing', + ), + ( + "nodemcuv2", + { + "name": "NodeMCU 1.0 (ESP-12E Module)", + "opts": { + ".build.board": "ESP8266_NODEMCU_ESP12E", + ".build.variant": "nodemcu", + }, + "macro": [ + "resetmethod_nodemcu", + "flashmode_dio", + "flashfreq_40", + "4M", + "led216", + ], + "desc": [ + "This module is sold under many names for around $6.50 on AliExpress and it's one of the cheapest, fully integrated ESP8266 solutions.", + "", + "It's an open hardware design with an ESP-12E core and 4 MB of SPI flash.", + "", + 'According to the manufacturer, "with a micro USB cable, you can connect NodeMCU devkit to your laptop and flash it without any trouble". This is more or less true: the board comes with a CP2102 onboard USB to serial adapter which just works, well, the majority of the time. Sometimes flashing fails and you have to reset the board by holding down FLASH +', + "RST, then releasing FLASH, then releasing RST. This forces the CP2102 device to power cycle and to be re-numbered by Linux.", + "", + "The board also features a NCP1117 voltage regulator, a blue LED on GPIO16 and a 220k/100k Ohm voltage divider on the ADC input pin.", + "The ESP-12E usually has a led connected on GPIO2.", + "", + "Full pinout and PDF schematics can be found `here `__", + ], }, - 'macro': [ - 'resetmethod_ck', - 'flashmode_qio', - 'flashfreq_40', - '512K', - ], - 'desc': [ 'Product page: https://www.sparkfun.com/products/13231' ], - }), - ( 'thingdev', { - 'name': 'SparkFun ESP8266 Thing Dev', - 'opts': { - '.build.board': 'ESP8266_THING_DEV', - '.build.variant': 'thing', + ), + ( + "modwifi", + { + "name": "Olimex MOD-WIFI-ESP8266(-DEV)", + "opts": { + ".build.board": "MOD_WIFI_ESP8266", + ".build.variant": "modwifi", + }, + "macro": [ + "resetmethod_menu", + "resetmethod_menu_extra", + "flashmode_menu", + "flashfreq_40", + "2M", + ], + "desc": [ + "This board comes with 2 MB of SPI flash and optional accessories (e.g. evaluation board ESP8266-EVB or BAT-BOX for batteries).", + "", + "The basic module has three solder jumpers that allow you to switch the operating mode between SDIO, UART and FLASH.", + "", + "The board is shipped for FLASH operation mode, with jumpers TD0JP=0, IO0JP=1, IO2JP=1.", + "", + "Since jumper IO0JP is tied to GPIO0, which is PIN 21, you'll have to ground it before programming with a USB to serial adapter and reset the board by power cycling it.", + "", + "UART pins for programming and serial I/O are GPIO1 (TXD, pin 3) and GPIO3 (RXD, pin 4).", + "", + "You can find the board schematics `here `__", + ], }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_dio', - 'flashfreq_40', - '512K', - ], - 'desc': [ 'Product page: https://www.sparkfun.com/products/13711' ], - }), - ( 'blynk', { - 'name': 'SparkFun Blynk Board', - 'opts': { - '.build.board': 'ESP8266_THING', - '.build.variant': 'thing', + ), + ( + "thing", + { + "name": "SparkFun ESP8266 Thing", + "opts": { + ".build.board": "ESP8266_THING", + ".build.variant": "thing", + }, + "macro": [ + "resetmethod_ck", + "flashmode_qio", + "flashfreq_40", + "512K", + ], + "desc": ["Product page: https://www.sparkfun.com/products/13231"], }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_qio', - 'flashfreq_40', - '4M', - ], - 'desc': [ 'Product page: https://www.sparkfun.com/products/13794' ], - }), - ( 'esp210', { - 'name': 'SweetPea ESP-210', - 'opts': { - '.build.board': 'ESP8266_ESP210', + ), + ( + "thingdev", + { + "name": "SparkFun ESP8266 Thing Dev", + "opts": { + ".build.board": "ESP8266_THING_DEV", + ".build.variant": "thing", + }, + "macro": [ + "resetmethod_nodemcu", + "flashmode_dio", + "flashfreq_40", + "512K", + ], + "desc": ["Product page: https://www.sparkfun.com/products/13711"], }, - 'macro': [ - 'resetmethod_ck', - 'flashmode_qio', - 'flashfreq_40', - '4M', - ], - 'serial': '57', - 'desc': [ '*TODO*' ], - }), - ( 'd1_mini', { - 'name': 'LOLIN(WEMOS) D1 R2 & mini', - 'opts': { - '.build.board': 'ESP8266_WEMOS_D1MINI', - '.build.variant': 'd1_mini', + ), + ( + "blynk", + { + "name": "SparkFun Blynk Board", + "opts": { + ".build.board": "ESP8266_THING", + ".build.variant": "thing", + }, + "macro": [ + "resetmethod_nodemcu", + "flashmode_qio", + "flashfreq_40", + "4M", + ], + "desc": ["Product page: https://www.sparkfun.com/products/13794"], }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_dio', - 'flashfreq_40', - '4M', - ], - 'serial': '921', - 'desc': [ 'Product page: https://www.wemos.cc/' ], - }), - ( 'd1_mini_clone', { - 'name': 'LOLIN(WEMOS) D1 mini (clone)', - 'opts': { - '.build.board': 'ESP8266_WEMOS_D1MINI', - '.build.variant': 'd1_mini', + ), + ( + "esp210", + { + "name": "SweetPea ESP-210", + "opts": { + ".build.board": "ESP8266_ESP210", + }, + "macro": [ + "resetmethod_ck", + "flashmode_qio", + "flashfreq_40", + "4M", + ], + "serial": "57", + "desc": ["*TODO*"], }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_menu', - 'flashfreq_menu', - '4M', - ], - 'serial': '921', - 'desc': [ 'Clone variant of the LOLIN(WEMOS) D1 mini board,', - 'with enabled flash-mode menu, DOUT selected by default.', - '', - 'Product page of the preferred official board: https://www.wemos.cc/', - ], - }), - ( 'd1_mini_pro', { - 'name': 'LOLIN(WEMOS) D1 mini Pro', - 'opts': { - '.build.board': 'ESP8266_WEMOS_D1MINIPRO', - '.build.variant': 'd1_mini', + ), + ( + "d1_mini", + { + "name": "LOLIN(WEMOS) D1 R2 & mini", + "opts": { + ".build.board": "ESP8266_WEMOS_D1MINI", + ".build.variant": "d1_mini", + }, + "macro": [ + "resetmethod_nodemcu", + "flashmode_dio", + "flashfreq_40", + "4M", + ], + "serial": "921", + "desc": ["Product page: https://www.wemos.cc/"], }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_dio', - 'flashfreq_40', - '16M', - ], - 'serial': '921', - 'desc': [ 'Product page: https://www.wemos.cc/' ], - }), - ( 'd1_mini_lite', { - 'name': 'LOLIN(WEMOS) D1 mini Lite', - 'opts': { - '.build.board': 'ESP8266_WEMOS_D1MINILITE', - '.build.variant': 'd1_mini', + ), + ( + "d1_mini_clone", + { + "name": "LOLIN(WEMOS) D1 mini (clone)", + "opts": { + ".build.board": "ESP8266_WEMOS_D1MINI", + ".build.variant": "d1_mini", + }, + "macro": [ + "resetmethod_nodemcu", + "flashmode_menu", + "flashfreq_menu", + "4M", + ], + "serial": "921", + "desc": [ + "Clone variant of the LOLIN(WEMOS) D1 mini board,", + "with enabled flash-mode menu, DOUT selected by default.", + "", + "Product page of the preferred official board: https://www.wemos.cc/", + ], }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_dout', - 'flashfreq_40', - '1M', - ], - 'serial': '921', - 'desc': [ - 'Parameters in Arduino IDE:', - '~~~~~~~~~~~~~~~~~~~~~~~~~~', - '', - '- Card: "WEMOS D1 Mini Lite"', - '- Flash Size: "1M (512K FS)"', - '- CPU Frequency: "80 Mhz"', - # '- Upload Speed: "230400"', - '', - 'Power:', - '~~~~~~', - '', - '- 5V pin : 4.7V 500mA output when the board is powered by USB ; 3.5V-6V input', - '- 3V3 pin : 3.3V 500mA regulated output', - '- Digital pins : 3.3V 30mA.', - '', - 'links:', - '~~~~~~', - '', - '- Product page: https://www.wemos.cc/', - '- Board schematic: https://wiki.wemos.cc/_media/products:d1:sch_d1_mini_lite_v1.0.0.pdf', - '- ESP8285 datasheet: https://www.espressif.com/sites/default/files/0a-esp8285_datasheet_en_v1.0_20160422.pdf', - '- Voltage regulator datasheet: http://pdf-datasheet.datasheet.netdna-cdn.com/pdf-down/M/E/6/ME6211-Microne.pdf', - ], - }), - ( 'd1', { - 'name': 'LOLIN(WeMos) D1 R1', - 'opts': { - '.build.board': 'ESP8266_WEMOS_D1R1', - '.build.variant': 'd1', + ), + ( + "d1_mini_pro", + { + "name": "LOLIN(WEMOS) D1 mini Pro", + "opts": { + ".build.board": "ESP8266_WEMOS_D1MINIPRO", + ".build.variant": "d1_mini", + }, + "macro": [ + "resetmethod_nodemcu", + "flashmode_dio", + "flashfreq_40", + "16M", + ], + "serial": "921", + "desc": ["Product page: https://www.wemos.cc/"], }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_dio', - 'flashfreq_40', - '4M', - ], - 'serial': '921', - 'desc': [ 'Product page: https://www.wemos.cc/' ], - }), - ( 'espino', { - 'name': 'ESPino (ESP-12 Module)', - 'opts': { - '.build.board': 'ESP8266_ESPINO_ESP12', - '.build.variant': 'espino', + ), + ( + "d1_mini_lite", + { + "name": "LOLIN(WEMOS) D1 mini Lite", + "opts": { + ".build.board": "ESP8266_WEMOS_D1MINILITE", + ".build.variant": "d1_mini", + }, + "macro": [ + "resetmethod_nodemcu", + "flashmode_dout", + "flashfreq_40", + "1M", + ], + "serial": "921", + "desc": [ + "Parameters in Arduino IDE:", + "~~~~~~~~~~~~~~~~~~~~~~~~~~", + "", + '- Card: "WEMOS D1 Mini Lite"', + '- Flash Size: "1M (512K FS)"', + '- CPU Frequency: "80 Mhz"', + # '- Upload Speed: "230400"', + "", + "Power:", + "~~~~~~", + "", + "- 5V pin : 4.7V 500mA output when the board is powered by USB ; 3.5V-6V input", + "- 3V3 pin : 3.3V 500mA regulated output", + "- Digital pins : 3.3V 30mA.", + "", + "links:", + "~~~~~~", + "", + "- Product page: https://www.wemos.cc/", + "- Board schematic: https://wiki.wemos.cc/_media/products:d1:sch_d1_mini_lite_v1.0.0.pdf", + "- ESP8285 datasheet: https://www.espressif.com/sites/default/files/0a-esp8285_datasheet_en_v1.0_20160422.pdf", + "- Voltage regulator datasheet: http://pdf-datasheet.datasheet.netdna-cdn.com/pdf-down/M/E/6/ME6211-Microne.pdf", + ], }, - 'macro': [ - 'resetmethod_menu', - 'flashmode_qio', - 'flashfreq_40', - '4M', - ], - 'desc': [ 'ESPino integrates the ESP-12 module with a 3.3v regulator, CP2104 USB-Serial bridge and a micro USB connector for easy programming. It is designed for fitting in a breadboard and has an RGB Led and two buttons for easy prototyping.', - '', - 'For more information about the hardware, pinout diagram and programming procedures, please see the `datasheet `__.', - '', - 'Product page: http://www.espino.io/en', - ], - }), - ( 'espinotee', { - 'name': 'ThaiEasyElec\'s ESPino', - 'opts': { - '.build.board': 'ESP8266_ESPINO_ESP13', - '.build.variant': 'espinotee', + ), + ( + "d1", + { + "name": "LOLIN(WeMos) D1 R1", + "opts": { + ".build.board": "ESP8266_WEMOS_D1R1", + ".build.variant": "d1", + }, + "macro": [ + "resetmethod_nodemcu", + "flashmode_dio", + "flashfreq_40", + "4M", + ], + "serial": "921", + "desc": ["Product page: https://www.wemos.cc/"], }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_qio', - 'flashfreq_40', - '4M', - ], - 'desc': [ 'ESPino by ThaiEasyElec using WROOM-02 module from Espressif Systems with 4 MB Flash.', - '', - 'We will update an English description soon. - Product page:', - 'http://thaieasyelec.com/products/wireless-modules/wifi-modules/espino-wifi-development-board-detail.html', - '- Schematics:', - 'www.thaieasyelec.com/downloads/ETEE052/ETEE052\_ESPino\_Schematic.pdf -', - 'Dimensions:', - 'http://thaieasyelec.com/downloads/ETEE052/ETEE052\_ESPino\_Dimension.pdf', - '- Pinouts:', - 'http://thaieasyelec.com/downloads/ETEE052/ETEE052\_ESPino\_User\_Manual\_TH\_v1\_0\_20160204.pdf (Please see pg. 8)', - ], - }), - ( 'wifinfo', { - 'name': 'WifInfo', - 'opts': collections.OrderedDict([ - ( '.build.board', 'WIFINFO' ), - ( '.build.variant', 'wifinfo' ), - ( '.menu.ESPModule.ESP07192', 'ESP07 (1M/192K FS)' ), - ( '.menu.ESPModule.ESP07192.build.board', 'ESP8266_ESP07' ), - ( '.menu.ESPModule.ESP07192.build.flash_size', '1M' ), - ( '.menu.ESPModule.ESP07192.build.flash_ld', 'eagle.flash.1m192.ld' ), - ( '.menu.ESPModule.ESP07192.build.spiffs_start', '0xCB000' ), - ( '.menu.ESPModule.ESP07192.build.spiffs_end', '0xFB000' ), - ( '.menu.ESPModule.ESP07192.build.spiffs_blocksize', '4096' ), - ( '.menu.ESPModule.ESP07192.upload.maximum_size', '827376' ), - ( '.menu.ESPModule.ESP12', 'ESP12 (4M/1M FS)' ), - ( '.menu.ESPModule.ESP12.build.board', 'ESP8266_ESP12' ), - ( '.menu.ESPModule.ESP12.build.flash_size', '4M' ), - ( '.menu.ESPModule.ESP12.build.flash_ld', 'eagle.flash.4m1m.ld' ), - ( '.menu.ESPModule.ESP12.build.spiffs_start', '0x300000' ), - ( '.menu.ESPModule.ESP12.build.spiffs_end', '0x3FB000' ), - ( '.menu.ESPModule.ESP12.build.spiffs_blocksize', '8192' ), - ( '.menu.ESPModule.ESP12.build.spiffs_pagesize', '256' ), - ( '.menu.ESPModule.ESP12.upload.maximum_size', '1044464' ), - ]), - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_qio', - 'flashfreq_menu', - '1M', - ], - 'desc': [ 'WifInfo integrates the ESP-12 or ESP-07+Ext antenna module with a 3.3v regulator and the hardware to be able to measure French telemetry issue from ERDF powering meter serial output. It has a USB connector for powering, an RGB WS2812 Led, 4 pins I2C connector to fit OLED or sensor, and two buttons + FTDI connector and auto reset feature.', - '', - 'For more information, please see WifInfo related `blog `__ entries, `github `__ and `community `__ forum.', - ], - }), - ( 'arduino-esp8266', { - 'name': 'Arduino', - 'opts': collections.OrderedDict([ - ( '.build.board', 'ESP8266_ARDUINO' ), - ( '.menu.BoardModel.primo', 'Primo' ), - ( '.menu.BoardModel.primo.build.board', 'ESP8266_ARDUINO_PRIMO' ), - ( '.menu.BoardModel.primo.build.variant', 'arduino_spi' ), - ( '.menu.BoardModel.primo.build.extra_flags', '-DF_CRYSTAL=40000000' ), - ( '.menu.BoardModel.unowifideved', 'Uno WiFi' ), - ( '.menu.BoardModel.unowifideved.build.board', 'ESP8266_ARDUINO_UNOWIFI' ), - ( '.menu.BoardModel.unowifideved.build.variant', 'arduino_uart' ), - ( '.menu.BoardModel.unowifideved.build.extra_flags=-DF_CRYSTAL', '40000000' ), - ( '.menu.BoardModel.starottodeved', 'Star OTTO' ), - ( '.menu.BoardModel.starottodeved.build.variant', 'arduino_uart' ), - ( '.menu.BoardModel.starottodeved.build.board', 'ESP8266_ARDUINO_STAR_OTTO' ), - ( '.menu.BoardModel.starottodeved.build.extra_flags', '-DF_CRYSTAL=40000000' ), - ]), - 'macro': [ - 'resetmethod_ck', - 'flashmode_qio', - 'flashfreq_40', - '4M', - ], - 'desc': [ '*TODO*' ], - }), - ( 'gen4iod', { - 'name': '4D Systems gen4 IoD Range', - 'opts': { - '.build.board': 'GEN4_IOD', - '.build.f_cpu': '160000000L', - '.build.variant': 'generic', + ), + ( + "espino", + { + "name": "ESPino (ESP-12 Module)", + "opts": { + ".build.board": "ESP8266_ESPINO_ESP12", + ".build.variant": "espino", + }, + "macro": [ + "resetmethod_menu", + "flashmode_qio", + "flashfreq_40", + "4M", + ], + "desc": [ + "ESPino integrates the ESP-12 module with a 3.3v regulator, CP2104 USB-Serial bridge and a micro USB connector for easy programming. It is designed for fitting in a breadboard and has an RGB Led and two buttons for easy prototyping.", + "", + "For more information about the hardware, pinout diagram and programming procedures, please see the `datasheet `__.", + "", + "Product page: http://www.espino.io/en", + ], }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_menu', - 'flashfreq_80', - '2M', - '512K', - ], - 'desc': [ 'gen4-IoD Range of ESP8266 powered Display Modules by 4D Systems.', - '', - '2.4", 2.8" and 3.2" TFT LCD with uSD card socket and Resistive Touch. Chip Antenna + uFL Connector.', - '', - 'Datasheet and associated downloads can be found on the 4D Systems product page.', - '', - 'The gen4-IoD range can be programmed using the Arduino IDE and also the 4D Systems Workshop4 IDE, which incorporates many additional graphics benefits. GFX4d library is available, along with a number of demo applications.', - '', - '- Product page: https://4dsystems.com.au/products/iot-display-modules', - ], - }), - ( 'oak', { - 'name': 'Digistump Oak', - 'opts': { - '.build.board': 'ESP8266_OAK', - '.build.variant': 'oak', + ), + ( + "espinotee", + { + "name": "ThaiEasyElec's ESPino", + "opts": { + ".build.board": "ESP8266_ESPINO_ESP13", + ".build.variant": "espinotee", + }, + "macro": [ + "resetmethod_nodemcu", + "flashmode_qio", + "flashfreq_40", + "4M", + ], + "desc": [ + "ESPino by ThaiEasyElec using WROOM-02 module from Espressif Systems with 4 MB Flash.", + "", + "We will update an English description soon. - Product page:", + "http://thaieasyelec.com/products/wireless-modules/wifi-modules/espino-wifi-development-board-detail.html", + "- Schematics:", + "www.thaieasyelec.com/downloads/ETEE052/ETEE052\_ESPino\_Schematic.pdf -", + "Dimensions:", + "http://thaieasyelec.com/downloads/ETEE052/ETEE052\_ESPino\_Dimension.pdf", + "- Pinouts:", + "http://thaieasyelec.com/downloads/ETEE052/ETEE052\_ESPino\_User\_Manual\_TH\_v1\_0\_20160204.pdf (Please see pg. 8)", + ], }, - 'macro': [ - 'resetmethod_none', - 'flashmode_dio', - 'flashfreq_40', - '4M', - ], - 'serial': '921', - 'desc': [ 'The Oak requires an `Serial Adapter`_ for a serial connection or flashing; its micro USB port is only for power.', - '', - 'To make a serial connection, wire the adapter\'s **TX to P3**, **RX to P4**, and **GND** to **GND**. Supply 3.3v from the serial adapter if not already powered via USB.', - '', - 'To put the board into bootloader mode, configure a serial connection as above, connect **P2 to GND**, then re-apply power. Once flashing is complete, remove the connection from P2 to GND, then re-apply power to boot into normal mode.', - ], - }), - ( 'wifiduino', { - 'name': 'WiFiduino', - 'opts': { - '.build.board': 'WIFIDUINO_ESP8266', - '.build.variant': 'wifiduino', + ), + ( + "wifinfo", + { + "name": "WifInfo", + "opts": collections.OrderedDict( + [ + (".build.board", "WIFINFO"), + (".build.variant", "wifinfo"), + (".menu.ESPModule.ESP07192", "ESP07 (1M/192K FS)"), + (".menu.ESPModule.ESP07192.build.board", "ESP8266_ESP07"), + (".menu.ESPModule.ESP07192.build.flash_size", "1M"), + ( + ".menu.ESPModule.ESP07192.build.flash_ld", + "eagle.flash.1m192.ld", + ), + (".menu.ESPModule.ESP07192.build.spiffs_start", "0xCB000"), + (".menu.ESPModule.ESP07192.build.spiffs_end", "0xFB000"), + (".menu.ESPModule.ESP07192.build.spiffs_blocksize", "4096"), + (".menu.ESPModule.ESP07192.upload.maximum_size", "827376"), + (".menu.ESPModule.ESP12", "ESP12 (4M/1M FS)"), + (".menu.ESPModule.ESP12.build.board", "ESP8266_ESP12"), + (".menu.ESPModule.ESP12.build.flash_size", "4M"), + (".menu.ESPModule.ESP12.build.flash_ld", "eagle.flash.4m1m.ld"), + (".menu.ESPModule.ESP12.build.spiffs_start", "0x300000"), + (".menu.ESPModule.ESP12.build.spiffs_end", "0x3FB000"), + (".menu.ESPModule.ESP12.build.spiffs_blocksize", "8192"), + (".menu.ESPModule.ESP12.build.spiffs_pagesize", "256"), + (".menu.ESPModule.ESP12.upload.maximum_size", "1044464"), + ] + ), + "macro": [ + "resetmethod_nodemcu", + "flashmode_qio", + "flashfreq_menu", + "1M", + ], + "desc": [ + "WifInfo integrates the ESP-12 or ESP-07+Ext antenna module with a 3.3v regulator and the hardware to be able to measure French telemetry issue from ERDF powering meter serial output. It has a USB connector for powering, an RGB WS2812 Led, 4 pins I2C connector to fit OLED or sensor, and two buttons + FTDI connector and auto reset feature.", + "", + "For more information, please see WifInfo related `blog `__ entries, `github `__ and `community `__ forum.", + ], }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_dio', - 'flashfreq_40', - '4M', - ], - 'serial': '921', - 'desc': [ 'Product page: https://wifiduino.com/esp8266' ], - }), - ( 'wifi_slot', { - 'name': 'Amperka WiFi Slot', - 'opts': { - '.build.board': 'AMPERKA_WIFI_SLOT', - '.build.variant': 'wifi_slot', + ), + ( + "arduino-esp8266", + { + "name": "Arduino", + "opts": collections.OrderedDict( + [ + (".build.board", "ESP8266_ARDUINO"), + (".menu.BoardModel.primo", "Primo"), + (".menu.BoardModel.primo.build.board", "ESP8266_ARDUINO_PRIMO"), + (".menu.BoardModel.primo.build.variant", "arduino_spi"), + ( + ".menu.BoardModel.primo.build.extra_flags", + "-DF_CRYSTAL=40000000", + ), + (".menu.BoardModel.unowifideved", "Uno WiFi"), + ( + ".menu.BoardModel.unowifideved.build.board", + "ESP8266_ARDUINO_UNOWIFI", + ), + (".menu.BoardModel.unowifideved.build.variant", "arduino_uart"), + ( + ".menu.BoardModel.unowifideved.build.extra_flags=-DF_CRYSTAL", + "40000000", + ), + (".menu.BoardModel.starottodeved", "Star OTTO"), + ( + ".menu.BoardModel.starottodeved.build.variant", + "arduino_uart", + ), + ( + ".menu.BoardModel.starottodeved.build.board", + "ESP8266_ARDUINO_STAR_OTTO", + ), + ( + ".menu.BoardModel.starottodeved.build.extra_flags", + "-DF_CRYSTAL=40000000", + ), + ] + ), + "macro": [ + "resetmethod_ck", + "flashmode_qio", + "flashfreq_40", + "4M", + ], + "desc": ["*TODO*"], }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashfreq_menu', - 'flashmode_menu', - '1M', '2M', - ], - 'desc': [ 'Product page: http://wiki.amperka.ru/wifi-slot' ], - }), - ( 'wiolink', { - 'name': 'Seeed Wio Link', - 'opts': { - '.build.board': 'ESP8266_WIO_LINK', - '.build.variant': 'wiolink', + ), + ( + "gen4iod", + { + "name": "4D Systems gen4 IoD Range", + "opts": { + ".build.board": "GEN4_IOD", + ".build.f_cpu": "160000000L", + ".build.variant": "generic", + }, + "macro": [ + "resetmethod_nodemcu", + "flashmode_menu", + "flashfreq_80", + "2M", + "512K", + ], + "desc": [ + "gen4-IoD Range of ESP8266 powered Display Modules by 4D Systems.", + "", + '2.4", 2.8" and 3.2" TFT LCD with uSD card socket and Resistive Touch. Chip Antenna + uFL Connector.', + "", + "Datasheet and associated downloads can be found on the 4D Systems product page.", + "", + "The gen4-IoD range can be programmed using the Arduino IDE and also the 4D Systems Workshop4 IDE, which incorporates many additional graphics benefits. GFX4d library is available, along with a number of demo applications.", + "", + "- Product page: https://4dsystems.com.au/products/iot-display-modules", + ], }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_qio', - 'flashfreq_40', - '4M', - ], - 'desc': [ 'Wio Link is designed to simplify your IoT development. It is an ESP8266 based open-source Wi-Fi development board to create IoT applications by virtualizing plug-n-play modules to RESTful APIs with mobile APPs. Wio Link is also compatible with the Arduino IDE.', - '', - 'Please DO NOTICE that you MUST pull up pin 15 to enable the power for Grove ports, the board is designed like this for the purpose of peripherals power management.', - '', - 'Product page: https://www.seeedstudio.com/Wio-Link-p-2604.html' + ), + ( + "oak", + { + "name": "Digistump Oak", + "opts": { + ".build.board": "ESP8266_OAK", + ".build.variant": "oak", + }, + "macro": [ + "resetmethod_none", + "flashmode_dio", + "flashfreq_40", + "4M", + ], + "serial": "921", + "desc": [ + "The Oak requires an `Serial Adapter`_ for a serial connection or flashing; its micro USB port is only for power.", + "", + "To make a serial connection, wire the adapter's **TX to P3**, **RX to P4**, and **GND** to **GND**. Supply 3.3v from the serial adapter if not already powered via USB.", + "", + "To put the board into bootloader mode, configure a serial connection as above, connect **P2 to GND**, then re-apply power. Once flashing is complete, remove the connection from P2 to GND, then re-apply power to boot into normal mode.", ], - }), - ('espectro', { - 'name': 'ESPectro Core', - 'opts': { - '.build.board': 'ESP8266_ESPECTRO_CORE', - '.build.variant': 'espectro', - }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_dio', - 'flashfreq_40', - '4M', - ], - 'desc': [ - 'ESPectro Core is ESP8266 development board as the culmination of our 3+ year experience in exploring and developing products with ESP8266 MCU.', - '', - 'Initially designed for kids in mind, everybody should be able to use it. Yet it\'s still hacker-friendly as we break out all ESP8266 ESP-12F pins.', - '', - 'More details at https://shop.makestro.com/product/espectrocore/', - ], - }), - - ( 'eduinowifi', { - 'name': 'Schirmilabs Eduino WiFi', - 'opts': { - '.build.board': 'ESP8266_SCHIRMILABS_EDUINO_WIFI', - '.build.variant': 'eduinowifi', }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_dio', - 'flashfreq_40', - '4M', - ], - 'serial': '512', - 'desc': [ 'Eduino WiFi is an Arduino-compatible DIY WiFi development board using an ESP-12 module', - '', - 'Product page: https://schirmilabs.de/?page_id=165', - ] - - }), - ( 'sonoff', { - 'name': 'ITEAD Sonoff', - 'opts': { - '.build.board': 'ESP8266_SONOFF_SV', - '.build.variant': 'itead', - '.build.flash_size': '1M', - '.menu.BoardModel.sonoffSV': 'ITEAD Sonoff SV', - '.menu.BoardModel.sonoffSV.build.board': 'ESP8266_SONOFF_SV', - '.menu.BoardModel.sonoffTH': 'ITEAD Sonoff TH', - '.menu.BoardModel.sonoffTH.build.board': 'ESP8266_SONOFF_TH', - '.menu.BoardModel.sonoffBasic': 'ITEAD Sonoff Basic', - '.menu.BoardModel.sonoffBasic.build.board': 'ESP8266_SONOFF_BASIC', - '.menu.BoardModel.sonoffS20': 'ITEAD Sonoff S20', - '.menu.BoardModel.sonoffS20.build.board': 'ESP8266_SONOFF_S20', - }, - 'macro': [ - 'resetmethod_none', - 'flashmode_dout', - 'flashfreq_40', - '1M', - ], - 'desc': [ - 'ESP8266 based devices from ITEAD: Sonoff SV, Sonoff TH, Sonoff Basic, ' + - 'and Sonoff S20', - '', - 'These are not development boards. The development process is ' + - 'inconvenient with these devices. When flashing firmware you will ' + - 'need a Serial Adapter to connect it to your computer.', - '', - ' | Most of these devices, during normal operation, are connected to ' + - '*wall power (AKA Mains Electricity)*. **NEVER** try to flash these ' + - 'devices when connected to *wall power*. **ALWAYS** have them ' + - 'disconnected from *wall power* when connecting them to your ' + - 'computer. Your life may depend on it!', - '', - 'When flashing you will need to hold down the push button connected ' + - 'to the GPIO0 pin, while powering up with a safe 3.3 Volt source. Some USB ' + - 'Serial Adapters may supply enough power to handle flashing; ' + - 'however, it many may not supply enough power to handle the ' + - 'activities when the device reboots.', - '', - 'More product details at the bottom of https://www.itead.cc/wiki/Product/' - ], - }), - ( 'espmxdevkit', { - 'name': 'DOIT ESP-Mx DevKit (ESP8285)', - 'opts': { - '.build.board': 'ESP8266_ESP01', - '.build.variant': 'esp8285', - '.build.led': '-DLED_BUILTIN=16', + ), + ( + "wifiduino", + { + "name": "WiFiduino", + "opts": { + ".build.board": "WIFIDUINO_ESP8266", + ".build.variant": "wifiduino", + }, + "macro": [ + "resetmethod_nodemcu", + "flashmode_dio", + "flashfreq_40", + "4M", + ], + "serial": "921", + "desc": ["Product page: https://wifiduino.com/esp8266"], }, - 'macro': [ - 'resetmethod_nodemcu', - 'flashmode_dout', - 'flashfreq_40', - '1M', - ], - 'desc': [ - 'DOIT ESP-Mx DevKit - This is a development board by DOIT, with a DOIT ESP-Mx module ' + - '(`datasheet `__) ' + - 'using a ESP8285 Chip. With the DOIT ESP-Mx module, GPIO pins 9 and 10 are not available. ' + - 'The DOIT ESP-Mx DevKit board has a red power LED and a blue LED connected to GPIO16 ' + - 'and is active low to turn on. It uses a CH340C, USB to Serial converter chip. ', - '', - 'ESP8285 (`datasheet `__) ' + - 'is a multi-chip package which contains ESP8266 and 1MB flash. ' - ], - - }) - ]) - -REQUIRED_BOARDS = ( 'generic', 'esp8285' ) + ), + ( + "wifi_slot", + { + "name": "Amperka WiFi Slot", + "opts": { + ".build.board": "AMPERKA_WIFI_SLOT", + ".build.variant": "wifi_slot", + }, + "macro": [ + "resetmethod_nodemcu", + "flashfreq_menu", + "flashmode_menu", + "1M", + "2M", + ], + "desc": ["Product page: http://wiki.amperka.ru/wifi-slot"], + }, + ), + ( + "wiolink", + { + "name": "Seeed Wio Link", + "opts": { + ".build.board": "ESP8266_WIO_LINK", + ".build.variant": "wiolink", + }, + "macro": [ + "resetmethod_nodemcu", + "flashmode_qio", + "flashfreq_40", + "4M", + ], + "desc": [ + "Wio Link is designed to simplify your IoT development. It is an ESP8266 based open-source Wi-Fi development board to create IoT applications by virtualizing plug-n-play modules to RESTful APIs with mobile APPs. Wio Link is also compatible with the Arduino IDE.", + "", + "Please DO NOTICE that you MUST pull up pin 15 to enable the power for Grove ports, the board is designed like this for the purpose of peripherals power management.", + "", + "Product page: https://www.seeedstudio.com/Wio-Link-p-2604.html", + ], + }, + ), + ( + "espectro", + { + "name": "ESPectro Core", + "opts": { + ".build.board": "ESP8266_ESPECTRO_CORE", + ".build.variant": "espectro", + }, + "macro": [ + "resetmethod_nodemcu", + "flashmode_dio", + "flashfreq_40", + "4M", + ], + "desc": [ + "ESPectro Core is ESP8266 development board as the culmination of our 3+ year experience in exploring and developing products with ESP8266 MCU.", + "", + "Initially designed for kids in mind, everybody should be able to use it. Yet it's still hacker-friendly as we break out all ESP8266 ESP-12F pins.", + "", + "More details at https://shop.makestro.com/product/espectrocore/", + ], + }, + ), + ( + "eduinowifi", + { + "name": "Schirmilabs Eduino WiFi", + "opts": { + ".build.board": "ESP8266_SCHIRMILABS_EDUINO_WIFI", + ".build.variant": "eduinowifi", + }, + "macro": [ + "resetmethod_nodemcu", + "flashmode_dio", + "flashfreq_40", + "4M", + ], + "serial": "512", + "desc": [ + "Eduino WiFi is an Arduino-compatible DIY WiFi development board using an ESP-12 module", + "", + "Product page: https://schirmilabs.de/?page_id=165", + ], + }, + ), + ( + "sonoff", + { + "name": "ITEAD Sonoff", + "opts": { + ".build.board": "ESP8266_SONOFF_SV", + ".build.variant": "itead", + ".build.flash_size": "1M", + ".menu.BoardModel.sonoffSV": "ITEAD Sonoff SV", + ".menu.BoardModel.sonoffSV.build.board": "ESP8266_SONOFF_SV", + ".menu.BoardModel.sonoffTH": "ITEAD Sonoff TH", + ".menu.BoardModel.sonoffTH.build.board": "ESP8266_SONOFF_TH", + ".menu.BoardModel.sonoffBasic": "ITEAD Sonoff Basic", + ".menu.BoardModel.sonoffBasic.build.board": "ESP8266_SONOFF_BASIC", + ".menu.BoardModel.sonoffS20": "ITEAD Sonoff S20", + ".menu.BoardModel.sonoffS20.build.board": "ESP8266_SONOFF_S20", + }, + "macro": [ + "resetmethod_none", + "flashmode_dout", + "flashfreq_40", + "1M", + ], + "desc": [ + "ESP8266 based devices from ITEAD: Sonoff SV, Sonoff TH, Sonoff Basic, " + + "and Sonoff S20", + "", + "These are not development boards. The development process is " + + "inconvenient with these devices. When flashing firmware you will " + + "need a Serial Adapter to connect it to your computer.", + "", + " | Most of these devices, during normal operation, are connected to " + + "*wall power (AKA Mains Electricity)*. **NEVER** try to flash these " + + "devices when connected to *wall power*. **ALWAYS** have them " + + "disconnected from *wall power* when connecting them to your " + + "computer. Your life may depend on it!", + "", + "When flashing you will need to hold down the push button connected " + + "to the GPIO0 pin, while powering up with a safe 3.3 Volt source. Some USB " + + "Serial Adapters may supply enough power to handle flashing; " + + "however, it many may not supply enough power to handle the " + + "activities when the device reboots.", + "", + "More product details at the bottom of https://www.itead.cc/wiki/Product/", + ], + }, + ), + ( + "espmxdevkit", + { + "name": "DOIT ESP-Mx DevKit (ESP8285)", + "opts": { + ".build.board": "ESP8266_ESP01", + ".build.variant": "esp8285", + ".build.led": "-DLED_BUILTIN=16", + }, + "macro": [ + "resetmethod_nodemcu", + "flashmode_dout", + "flashfreq_40", + "1M", + ], + "desc": [ + "DOIT ESP-Mx DevKit - This is a development board by DOIT, with a DOIT ESP-Mx module " + + "(`datasheet `__) " + + "using a ESP8285 Chip. With the DOIT ESP-Mx module, GPIO pins 9 and 10 are not available. " + + "The DOIT ESP-Mx DevKit board has a red power LED and a blue LED connected to GPIO16 " + + "and is active low to turn on. It uses a CH340C, USB to Serial converter chip. ", + "", + "ESP8285 (`datasheet `__) " + + "is a multi-chip package which contains ESP8266 and 1MB flash. ", + ], + }, + ), + ] +) + +REQUIRED_BOARDS = ("generic", "esp8285") ################################################################ MACROS = { - 'defaults': collections.OrderedDict([ - ( '.upload.tool', 'esptool' ), - ( '.upload.maximum_data_size', '81920' ), - ( '.upload.wait_for_upload_port', 'true' ), - ( '.upload.erase_cmd', ''), - ( '.serial.disableDTR', 'true' ), - ( '.serial.disableRTS', 'true' ), - ( '.build.mcu', 'esp8266' ), - ( '.build.core', 'esp8266' ), - ( '.build.variant', 'generic' ), - ( '.build.spiffs_pagesize', '256' ), - ( '.build.debug_port', '' ), - ( '.build.debug_level', '' ), - ]), - + "defaults": collections.OrderedDict( + [ + (".upload.tool", "esptool"), + (".upload.maximum_data_size", "81920"), + (".upload.wait_for_upload_port", "true"), + (".upload.erase_cmd", ""), + (".serial.disableDTR", "true"), + (".serial.disableRTS", "true"), + (".build.mcu", "esp8266"), + (".build.core", "esp8266"), + (".build.variant", "generic"), + (".build.spiffs_pagesize", "256"), + (".build.debug_port", ""), + (".build.debug_level", ""), + ] + ), ####################### - - 'cpufreq_menu': collections.OrderedDict([ - ( '.menu.xtal.80', '80 MHz' ), - ( '.menu.xtal.80.build.f_cpu', '80000000L' ), - ( '.menu.xtal.160', '160 MHz' ), - ( '.menu.xtal.160.build.f_cpu', '160000000L' ), - ]), - - 'vtable_menu': collections.OrderedDict([ - ( '.menu.vt.flash', 'Flash'), - ( '.menu.vt.flash.build.vtable_flags', '-DVTABLES_IN_FLASH'), - ( '.menu.vt.heap', 'Heap'), - ( '.menu.vt.heap.build.vtable_flags', '-DVTABLES_IN_DRAM'), - ( '.menu.vt.iram', 'IRAM'), - ( '.menu.vt.iram.build.vtable_flags', '-DVTABLES_IN_IRAM'), - ]), - - 'exception_menu': collections.OrderedDict([ - ( '.menu.exception.disabled', 'Disabled (new aborts on oom)' ), - ( '.menu.exception.disabled.build.exception_flags', '-fno-exceptions' ), - ( '.menu.exception.disabled.build.stdcpp_lib', '-lstdc++' ), - ( '.menu.exception.enabled', 'Enabled' ), - ( '.menu.exception.enabled.build.exception_flags', '-fexceptions' ), - ( '.menu.exception.enabled.build.stdcpp_lib', '-lstdc++-exc' ), - ]), - - 'stacksmash_menu': collections.OrderedDict([ - ( '.menu.stacksmash.disabled', 'Disabled' ), - ( '.menu.stacksmash.disabled.build.stacksmash_flags', '' ), - ( '.menu.stacksmash.enabled', 'Enabled' ), - ( '.menu.stacksmash.enabled.build.stacksmash_flags', '-fstack-protector' ), - ]), - - 'crystalfreq_menu': collections.OrderedDict([ - ( '.menu.CrystalFreq.26', '26 MHz' ), - ( '.menu.CrystalFreq.40', '40 MHz' ), - ( '.menu.CrystalFreq.40.build.extra_flags', '-DF_CRYSTAL=40000000' ), - ]), - - 'flashfreq_menu': collections.OrderedDict([ - ( '.menu.FlashFreq.40', '40MHz' ), - ( '.menu.FlashFreq.40.build.flash_freq', '40' ), - ( '.menu.FlashFreq.80', '80MHz' ), - ( '.menu.FlashFreq.80.build.flash_freq', '80' ), - ( '.menu.FlashFreq.20', '20MHz' ), - ( '.menu.FlashFreq.20.build.flash_freq', '20' ), - ( '.menu.FlashFreq.26', '26MHz' ), - ( '.menu.FlashFreq.26.build.flash_freq', '26' ), - ]), - - 'flashfreq_40': collections.OrderedDict([ - ( '.build.flash_freq', '40' ), - ]), - - 'flashfreq_80': collections.OrderedDict([ - ( '.build.flash_freq', '80' ), - ]), - + "cpufreq_menu": collections.OrderedDict( + [ + (".menu.xtal.80", "80 MHz"), + (".menu.xtal.80.build.f_cpu", "80000000L"), + (".menu.xtal.160", "160 MHz"), + (".menu.xtal.160.build.f_cpu", "160000000L"), + ] + ), + "vtable_menu": collections.OrderedDict( + [ + (".menu.vt.flash", "Flash"), + (".menu.vt.flash.build.vtable_flags", "-DVTABLES_IN_FLASH"), + (".menu.vt.heap", "Heap"), + (".menu.vt.heap.build.vtable_flags", "-DVTABLES_IN_DRAM"), + (".menu.vt.iram", "IRAM"), + (".menu.vt.iram.build.vtable_flags", "-DVTABLES_IN_IRAM"), + ] + ), + "exception_menu": collections.OrderedDict( + [ + (".menu.exception.disabled", "Disabled (new aborts on oom)"), + (".menu.exception.disabled.build.exception_flags", "-fno-exceptions"), + (".menu.exception.disabled.build.stdcpp_lib", "-lstdc++"), + (".menu.exception.enabled", "Enabled"), + (".menu.exception.enabled.build.exception_flags", "-fexceptions"), + (".menu.exception.enabled.build.stdcpp_lib", "-lstdc++-exc"), + ] + ), + "stacksmash_menu": collections.OrderedDict( + [ + (".menu.stacksmash.disabled", "Disabled"), + (".menu.stacksmash.disabled.build.stacksmash_flags", ""), + (".menu.stacksmash.enabled", "Enabled"), + (".menu.stacksmash.enabled.build.stacksmash_flags", "-fstack-protector"), + ] + ), + "crystalfreq_menu": collections.OrderedDict( + [ + (".menu.CrystalFreq.26", "26 MHz"), + (".menu.CrystalFreq.40", "40 MHz"), + (".menu.CrystalFreq.40.build.extra_flags", "-DF_CRYSTAL=40000000"), + ] + ), + "flashfreq_menu": collections.OrderedDict( + [ + (".menu.FlashFreq.40", "40MHz"), + (".menu.FlashFreq.40.build.flash_freq", "40"), + (".menu.FlashFreq.80", "80MHz"), + (".menu.FlashFreq.80.build.flash_freq", "80"), + (".menu.FlashFreq.20", "20MHz"), + (".menu.FlashFreq.20.build.flash_freq", "20"), + (".menu.FlashFreq.26", "26MHz"), + (".menu.FlashFreq.26.build.flash_freq", "26"), + ] + ), + "flashfreq_40": collections.OrderedDict( + [ + (".build.flash_freq", "40"), + ] + ), + "flashfreq_80": collections.OrderedDict( + [ + (".build.flash_freq", "80"), + ] + ), ####################### menu.resetmethod - - 'resetmethod_menu': collections.OrderedDict([ - ( '.menu.ResetMethod.nodemcu', 'dtr (aka nodemcu)' ), - ( '.menu.ResetMethod.nodemcu.upload.resetmethod', '--before default_reset --after hard_reset' ), - ( '.menu.ResetMethod.ck', 'no dtr (aka ck)' ), - ( '.menu.ResetMethod.ck.upload.resetmethod', '--before no_reset --after soft_reset' ), - ]), - - 'resetmethod_menu_extra': collections.OrderedDict([ - ( '.menu.ResetMethod.nodtr_nosync', 'no dtr, no_sync' ), - ( '.menu.ResetMethod.nodtr_nosync.upload.resetmethod', '--before no_reset_no_sync --after soft_reset' ), - ]), - + "resetmethod_menu": collections.OrderedDict( + [ + (".menu.ResetMethod.nodemcu", "dtr (aka nodemcu)"), + ( + ".menu.ResetMethod.nodemcu.upload.resetmethod", + "--before default_reset --after hard_reset", + ), + (".menu.ResetMethod.ck", "no dtr (aka ck)"), + ( + ".menu.ResetMethod.ck.upload.resetmethod", + "--before no_reset --after soft_reset", + ), + ] + ), + "resetmethod_menu_extra": collections.OrderedDict( + [ + (".menu.ResetMethod.nodtr_nosync", "no dtr, no_sync"), + ( + ".menu.ResetMethod.nodtr_nosync.upload.resetmethod", + "--before no_reset_no_sync --after soft_reset", + ), + ] + ), ####################### upload.resetmethod (new esptool.py options) - - 'resetmethod_ck': collections.OrderedDict([ - ( '.upload.resetmethod', '--before no_reset --after soft_reset' ), - ]), - - 'resetmethod_nodemcu': collections.OrderedDict([ - ( '.upload.resetmethod', '--before default_reset --after hard_reset' ), - ]), - - 'resetmethod_none': collections.OrderedDict([ - ( '.upload.resetmethod', '--before no_reset --after soft_reset' ), - ]), - - 'resetmethod_dtrset': collections.OrderedDict([ - ( '.upload.resetmethod', '--before default_reset --after hard_reset' ), - ]), - - 'resetmethod_nodtr_nosync': collections.OrderedDict([ - ( '.upload.resetmethod', '--before no_reset_no_sync --after soft_reset' ), - ]), - + "resetmethod_ck": collections.OrderedDict( + [ + (".upload.resetmethod", "--before no_reset --after soft_reset"), + ] + ), + "resetmethod_nodemcu": collections.OrderedDict( + [ + (".upload.resetmethod", "--before default_reset --after hard_reset"), + ] + ), + "resetmethod_none": collections.OrderedDict( + [ + (".upload.resetmethod", "--before no_reset --after soft_reset"), + ] + ), + "resetmethod_dtrset": collections.OrderedDict( + [ + (".upload.resetmethod", "--before default_reset --after hard_reset"), + ] + ), + "resetmethod_nodtr_nosync": collections.OrderedDict( + [ + (".upload.resetmethod", "--before no_reset_no_sync --after soft_reset"), + ] + ), ####################### menu.FlashMode - - 'flashmode_menu': collections.OrderedDict([ - ( '.menu.FlashMode.dout', 'DOUT (compatible)' ), - ( '.menu.FlashMode.dout.build.flash_mode', 'dout' ), - ( '.menu.FlashMode.dout.build.flash_flags', '-DFLASHMODE_DOUT' ), - ( '.menu.FlashMode.dio', 'DIO' ), - ( '.menu.FlashMode.dio.build.flash_mode', 'dio' ), - ( '.menu.FlashMode.dio.build.flash_flags', '-DFLASHMODE_DIO' ), - ( '.menu.FlashMode.qout', 'QOUT' ), - ( '.menu.FlashMode.qout.build.flash_mode', 'qout' ), - ( '.menu.FlashMode.qout.build.flash_flags', '-DFLASHMODE_QOUT' ), - ( '.menu.FlashMode.qio', 'QIO (fast)' ), - ( '.menu.FlashMode.qio.build.flash_mode', 'qio' ), - ( '.menu.FlashMode.qio.build.flash_flags', '-DFLASHMODE_QIO' ), - ]), - + "flashmode_menu": collections.OrderedDict( + [ + (".menu.FlashMode.dout", "DOUT (compatible)"), + (".menu.FlashMode.dout.build.flash_mode", "dout"), + (".menu.FlashMode.dout.build.flash_flags", "-DFLASHMODE_DOUT"), + (".menu.FlashMode.dio", "DIO"), + (".menu.FlashMode.dio.build.flash_mode", "dio"), + (".menu.FlashMode.dio.build.flash_flags", "-DFLASHMODE_DIO"), + (".menu.FlashMode.qout", "QOUT"), + (".menu.FlashMode.qout.build.flash_mode", "qout"), + (".menu.FlashMode.qout.build.flash_flags", "-DFLASHMODE_QOUT"), + (".menu.FlashMode.qio", "QIO (fast)"), + (".menu.FlashMode.qio.build.flash_mode", "qio"), + (".menu.FlashMode.qio.build.flash_flags", "-DFLASHMODE_QIO"), + ] + ), ####################### default flash_mode - - 'flashmode_dio': collections.OrderedDict([ - ( '.build.flash_mode', 'dio' ), - ( '.build.flash_flags', '-DFLASHMODE_DIO' ), - ]), - - 'flashmode_qio': collections.OrderedDict([ - ( '.build.flash_mode', 'qio' ), - ( '.build.flash_flags', '-DFLASHMODE_QIO' ), - ]), - - 'flashmode_dout': collections.OrderedDict([ - ( '.build.flash_mode', 'dout' ), - ( '.build.flash_flags', '-DFLASHMODE_DOUT' ), - ]), - - 'flashmode_qout': collections.OrderedDict([ - ( '.build.flash_mode', 'qout' ), - ( '.build.flash_flags', '-DFLASHMODE_QOUT' ), - ]), - + "flashmode_dio": collections.OrderedDict( + [ + (".build.flash_mode", "dio"), + (".build.flash_flags", "-DFLASHMODE_DIO"), + ] + ), + "flashmode_qio": collections.OrderedDict( + [ + (".build.flash_mode", "qio"), + (".build.flash_flags", "-DFLASHMODE_QIO"), + ] + ), + "flashmode_dout": collections.OrderedDict( + [ + (".build.flash_mode", "dout"), + (".build.flash_flags", "-DFLASHMODE_DOUT"), + ] + ), + "flashmode_qout": collections.OrderedDict( + [ + (".build.flash_mode", "qout"), + (".build.flash_flags", "-DFLASHMODE_QOUT"), + ] + ), ####################### lwip - - 'lwip': collections.OrderedDict([ - ( '.menu.ip.lm2f', 'v2 Lower Memory' ), - ( '.menu.ip.lm2f.build.lwip_include', 'lwip2/include' ), - ( '.menu.ip.lm2f.build.lwip_lib', '-llwip2-536-feat' ), - ( '.menu.ip.lm2f.build.lwip_flags', '-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0' ), - ( '.menu.ip.hb2f', 'v2 Higher Bandwidth' ), - ( '.menu.ip.hb2f.build.lwip_include', 'lwip2/include' ), - ( '.menu.ip.hb2f.build.lwip_lib', '-llwip2-1460-feat' ), - ( '.menu.ip.hb2f.build.lwip_flags', '-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0' ), - ( '.menu.ip.lm2n', 'v2 Lower Memory (no features)' ), - ( '.menu.ip.lm2n.build.lwip_include', 'lwip2/include' ), - ( '.menu.ip.lm2n.build.lwip_lib', '-llwip2-536' ), - ( '.menu.ip.lm2n.build.lwip_flags', '-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0' ), - ( '.menu.ip.hb2n', 'v2 Higher Bandwidth (no features)' ), - ( '.menu.ip.hb2n.build.lwip_include', 'lwip2/include' ), - ( '.menu.ip.hb2n.build.lwip_lib', '-llwip2-1460' ), - ( '.menu.ip.hb2n.build.lwip_flags', '-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0' ), - ( '.menu.ip.lm6f', 'v2 IPv6 Lower Memory' ), - ( '.menu.ip.lm6f.build.lwip_include', 'lwip2/include' ), - ( '.menu.ip.lm6f.build.lwip_lib', '-llwip6-536-feat' ), - ( '.menu.ip.lm6f.build.lwip_flags', '-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1' ), - ( '.menu.ip.hb6f', 'v2 IPv6 Higher Bandwidth' ), - ( '.menu.ip.hb6f.build.lwip_include', 'lwip2/include' ), - ( '.menu.ip.hb6f.build.lwip_lib', '-llwip6-1460-feat' ), - ( '.menu.ip.hb6f.build.lwip_flags', '-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1' ), - ]), - + "lwip": collections.OrderedDict( + [ + (".menu.ip.lm2f", "v2 Lower Memory"), + (".menu.ip.lm2f.build.lwip_include", "lwip2/include"), + (".menu.ip.lm2f.build.lwip_lib", "-llwip2-536-feat"), + ( + ".menu.ip.lm2f.build.lwip_flags", + "-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0", + ), + (".menu.ip.hb2f", "v2 Higher Bandwidth"), + (".menu.ip.hb2f.build.lwip_include", "lwip2/include"), + (".menu.ip.hb2f.build.lwip_lib", "-llwip2-1460-feat"), + ( + ".menu.ip.hb2f.build.lwip_flags", + "-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=0", + ), + (".menu.ip.lm2n", "v2 Lower Memory (no features)"), + (".menu.ip.lm2n.build.lwip_include", "lwip2/include"), + (".menu.ip.lm2n.build.lwip_lib", "-llwip2-536"), + ( + ".menu.ip.lm2n.build.lwip_flags", + "-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=0 -DLWIP_IPV6=0", + ), + (".menu.ip.hb2n", "v2 Higher Bandwidth (no features)"), + (".menu.ip.hb2n.build.lwip_include", "lwip2/include"), + (".menu.ip.hb2n.build.lwip_lib", "-llwip2-1460"), + ( + ".menu.ip.hb2n.build.lwip_flags", + "-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=0 -DLWIP_IPV6=0", + ), + (".menu.ip.lm6f", "v2 IPv6 Lower Memory"), + (".menu.ip.lm6f.build.lwip_include", "lwip2/include"), + (".menu.ip.lm6f.build.lwip_lib", "-llwip6-536-feat"), + ( + ".menu.ip.lm6f.build.lwip_flags", + "-DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=1", + ), + (".menu.ip.hb6f", "v2 IPv6 Higher Bandwidth"), + (".menu.ip.hb6f.build.lwip_include", "lwip2/include"), + (".menu.ip.hb6f.build.lwip_lib", "-llwip6-1460-feat"), + ( + ".menu.ip.hb6f.build.lwip_flags", + "-DLWIP_OPEN_SRC -DTCP_MSS=1460 -DLWIP_FEATURES=1 -DLWIP_IPV6=1", + ), + ] + ), ####################### serial - - 's9': collections.OrderedDict([ - ( '.menu.baud.9600', '9600' ), - ( '.menu.baud.9600.upload.speed', '9600' ), - ]), - 's57': collections.OrderedDict([ - ( '.menu.baud.57600', '57600' ), - ( '.menu.baud.57600.upload.speed', '57600' ), - ]), - 's115': collections.OrderedDict([ - ( '.menu.baud.115200', '115200' ), - ( '.menu.baud.115200.upload.speed', '115200' ), - ]), - 's256': collections.OrderedDict([ - ( '.menu.baud.256000.windows', '256000' ), - ( '.menu.baud.256000.upload.speed', '256000' ), - ]), - 's230': collections.OrderedDict([ - ( '.menu.baud.230400.linux', '230400' ), - ( '.menu.baud.230400.macosx', '230400' ), - ( '.menu.baud.230400.upload.speed', '230400' ), - ]), - 's460': collections.OrderedDict([ - ( '.menu.baud.460800.linux', '460800' ), - ( '.menu.baud.460800.macosx', '460800' ), - ( '.menu.baud.460800.upload.speed', '460800' ), - ]), - 's512': collections.OrderedDict([ - ( '.menu.baud.512000.windows', '512000' ), - ( '.menu.baud.512000.upload.speed', '512000' ), - ]), - 's921': collections.OrderedDict([ - ( '.menu.baud.921600', '921600' ), - ( '.menu.baud.921600.upload.speed', '921600' ), - ]), - 's3000': collections.OrderedDict([ - ( '.menu.baud.3000000', '3000000' ), - ( '.menu.baud.3000000.upload.speed', '3000000' ), - ]), - + "s9": collections.OrderedDict( + [ + (".menu.baud.9600", "9600"), + (".menu.baud.9600.upload.speed", "9600"), + ] + ), + "s57": collections.OrderedDict( + [ + (".menu.baud.57600", "57600"), + (".menu.baud.57600.upload.speed", "57600"), + ] + ), + "s115": collections.OrderedDict( + [ + (".menu.baud.115200", "115200"), + (".menu.baud.115200.upload.speed", "115200"), + ] + ), + "s256": collections.OrderedDict( + [ + (".menu.baud.256000.windows", "256000"), + (".menu.baud.256000.upload.speed", "256000"), + ] + ), + "s230": collections.OrderedDict( + [ + (".menu.baud.230400.linux", "230400"), + (".menu.baud.230400.macosx", "230400"), + (".menu.baud.230400.upload.speed", "230400"), + ] + ), + "s460": collections.OrderedDict( + [ + (".menu.baud.460800.linux", "460800"), + (".menu.baud.460800.macosx", "460800"), + (".menu.baud.460800.upload.speed", "460800"), + ] + ), + "s512": collections.OrderedDict( + [ + (".menu.baud.512000.windows", "512000"), + (".menu.baud.512000.upload.speed", "512000"), + ] + ), + "s921": collections.OrderedDict( + [ + (".menu.baud.921600", "921600"), + (".menu.baud.921600.upload.speed", "921600"), + ] + ), + "s3000": collections.OrderedDict( + [ + (".menu.baud.3000000", "3000000"), + (".menu.baud.3000000.upload.speed", "3000000"), + ] + ), ####################### flash erase - - 'flash_erase_menu': collections.OrderedDict([ - ( '.menu.wipe.none', 'Only Sketch' ), - ( '.menu.wipe.none.upload.erase_cmd', '' ), - ( '.menu.wipe.sdk', 'Sketch + WiFi Settings' ), - ( '.menu.wipe.sdk.upload.erase_cmd', 'erase_region "{build.rfcal_addr}" 0x4000' ), - ( '.menu.wipe.all', 'All Flash Contents' ), - ( '.menu.wipe.all.upload.erase_cmd', 'erase_flash' ), - ]), - + "flash_erase_menu": collections.OrderedDict( + [ + (".menu.wipe.none", "Only Sketch"), + (".menu.wipe.none.upload.erase_cmd", ""), + (".menu.wipe.sdk", "Sketch + WiFi Settings"), + ( + ".menu.wipe.sdk.upload.erase_cmd", + 'erase_region "{build.rfcal_addr}" 0x4000', + ), + (".menu.wipe.all", "All Flash Contents"), + (".menu.wipe.all.upload.erase_cmd", "erase_flash"), + ] + ), ######################## SSL supported protocols - - 'ssl_cipher_menu': collections.OrderedDict([ - ( '.menu.ssl.all', 'All SSL ciphers (most compatible)' ), - ( '.menu.ssl.all.build.sslflags', ''), - ( '.menu.ssl.basic', 'Basic SSL ciphers (lower ROM use)' ), - ( '.menu.ssl.basic.build.sslflags', '-DBEARSSL_SSL_BASIC'), - ]), - + "ssl_cipher_menu": collections.OrderedDict( + [ + (".menu.ssl.all", "All SSL ciphers (most compatible)"), + (".menu.ssl.all.build.sslflags", ""), + (".menu.ssl.basic", "Basic SSL ciphers (lower ROM use)"), + (".menu.ssl.basic.build.sslflags", "-DBEARSSL_SSL_BASIC"), + ] + ), ####################### mmu - - 'mmu_menu': collections.OrderedDict([ - ( '.menu.mmu.3232', '32KB cache + 32KB IRAM (balanced)' ), - ( '.menu.mmu.3232.build.mmuflags', '-DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000'), - ( '.menu.mmu.4816', '16KB cache + 48KB IRAM (IRAM)' ), - ( '.menu.mmu.4816.build.mmuflags', '-DMMU_IRAM_SIZE=0xC000 -DMMU_ICACHE_SIZE=0x4000' ), - ( '.menu.mmu.4816H', '16KB cache + 48KB IRAM and 2nd Heap (shared)' ), - ( '.menu.mmu.4816H.build.mmuflags', '-DMMU_IRAM_SIZE=0xC000 -DMMU_ICACHE_SIZE=0x4000 -DMMU_IRAM_HEAP' ), - ( '.menu.mmu.3216', '16KB cache + 32KB IRAM + 16KB 2nd Heap (not shared)' ), - ( '.menu.mmu.3216.build.mmuflags', '-DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x4000 -DMMU_SEC_HEAP=0x40108000 -DMMU_SEC_HEAP_SIZE=0x4000' ), - ( '.menu.mmu.ext128k', '128K Heap External 23LC1024' ), - ( '.menu.mmu.ext128k.build.mmuflags', '-DMMU_EXTERNAL_HEAP=128 -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000' ), - ( '.menu.mmu.ext8192k', '8M w/256K Heap External 64 MBit PSRAM' ), - ( '.menu.mmu.ext8192k.build.mmuflags', '-DMMU_EXTERNAL_HEAP=256 -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000' ), - ]), - + "mmu_menu": collections.OrderedDict( + [ + (".menu.mmu.3232", "32KB cache + 32KB IRAM (balanced)"), + ( + ".menu.mmu.3232.build.mmuflags", + "-DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000", + ), + (".menu.mmu.4816", "16KB cache + 48KB IRAM (IRAM)"), + ( + ".menu.mmu.4816.build.mmuflags", + "-DMMU_IRAM_SIZE=0xC000 -DMMU_ICACHE_SIZE=0x4000", + ), + (".menu.mmu.4816H", "16KB cache + 48KB IRAM and 2nd Heap (shared)"), + ( + ".menu.mmu.4816H.build.mmuflags", + "-DMMU_IRAM_SIZE=0xC000 -DMMU_ICACHE_SIZE=0x4000 -DMMU_IRAM_HEAP", + ), + (".menu.mmu.3216", "16KB cache + 32KB IRAM + 16KB 2nd Heap (not shared)"), + ( + ".menu.mmu.3216.build.mmuflags", + "-DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x4000 -DMMU_SEC_HEAP=0x40108000 -DMMU_SEC_HEAP_SIZE=0x4000", + ), + (".menu.mmu.ext128k", "128K Heap External 23LC1024"), + ( + ".menu.mmu.ext128k.build.mmuflags", + "-DMMU_EXTERNAL_HEAP=128 -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000", + ), + (".menu.mmu.ext8192k", "8M w/256K Heap External 64 MBit PSRAM"), + ( + ".menu.mmu.ext8192k.build.mmuflags", + "-DMMU_EXTERNAL_HEAP=256 -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000", + ), + ] + ), ######################## Non 32-bit load/store exception handler - - 'non32xfer_menu': collections.OrderedDict([ - ('.menu.non32xfer.fast', 'Use pgm_read macros for IRAM/PROGMEM' ), - ('.menu.non32xfer.fast.build.non32xferflags', ''), - ('.menu.non32xfer.safe', 'Byte/Word access to IRAM/PROGMEM (very slow)' ), - ('.menu.non32xfer.safe.build.non32xferflags', '-DNON32XFER_HANDLER'), - ]) - } + "non32xfer_menu": collections.OrderedDict( + [ + (".menu.non32xfer.fast", "Use pgm_read macros for IRAM/PROGMEM"), + (".menu.non32xfer.fast.build.non32xferflags", ""), + (".menu.non32xfer.safe", "Byte/Word access to IRAM/PROGMEM (very slow)"), + (".menu.non32xfer.safe.build.non32xferflags", "-DNON32XFER_HANDLER"), + ] + ), +} ################################################################ # file writer helpers, we need these for generator functions From a00b355242501d17517fdf7835d1b11f6144e7a6 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Wed, 8 Jun 2022 19:35:01 +0300 Subject: [PATCH 29/35] extra escape --- tools/boards.txt.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 18bc05666c..00e227d058 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -125,17 +125,17 @@ "+-----------------+------------+------------------+", "| GND | | GND |", "+-----------------+------------+------------------+", - "| TX or GPIO2\* | | RX |", + "| TX or GPIO2\\* | | RX |", "+-----------------+------------+------------------+", "| RX | | TX |", "+-----------------+------------+------------------+", "| GPIO0 | PullUp | DTR |", "+-----------------+------------+------------------+", - "| Reset\* | PullUp | RTS |", + "| Reset\\* | PullUp | RTS |", "+-----------------+------------+------------------+", - "| GPIO15\* | PullDown | |", + "| GPIO15\\* | PullDown | |", "+-----------------+------------+------------------+", - "| CH\_PD | PullUp | |", + "| CH\\_PD | PullUp | |", "+-----------------+------------+------------------+", "", "- Note", @@ -174,11 +174,11 @@ "+---------------+------------+------------------+", "| GPIO0 | | GND |", "+---------------+------------+------------------+", - "| Reset | | RTS\* |", + "| Reset | | RTS\\* |", "+---------------+------------+------------------+", "| GPIO15 | PullDown | |", "+---------------+------------+------------------+", - "| CH\_PD | PullUp | |", + "| CH\\_PD | PullUp | |", "+---------------+------------+------------------+", "", "- Note", @@ -200,7 +200,7 @@ "+----------+------------+----------------+", "| GPIO15 | PullDown | |", "+----------+------------+----------------+", - "| CH\_PD | PullUp | |", + "| CH\\_PD | PullUp | |", "+----------+------------+----------------+", "", "Minimal", @@ -284,7 +284,7 @@ "| 7 | 3.3V | 3.3V | 3.3V | SDIO |", "+----------+----------+---------+---------+-------------+", "", - "note: - number = ((GPIO15 << 2) \| (GPIO0 << 1) \| GPIO2);", + "note: - number = ((GPIO15 << 2) \\| (GPIO0 << 1) \\| GPIO2);", ], }, ), From 0e5e48dbc649388b798e808f073d0f8f8eefc2e3 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Wed, 8 Jun 2022 22:44:37 +0300 Subject: [PATCH 30/35] shorter line width --- tools/boards.txt.py | 430 ++++++++++++++++++++++++++++++-------------- 1 file changed, 297 insertions(+), 133 deletions(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 00e227d058..75ff3f7499 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -90,22 +90,42 @@ "sdk", ], "desc": [ - "These modules come in different form factors and pinouts. See the page at ESP8266 community wiki for more info: `ESP8266 Module Family `__.", - "", - "Usually these modules have no bootstrapping resistors on board, insufficient decoupling capacitors, no voltage regulator, no reset circuit, and no USB-serial adapter. This makes using them somewhat tricky, compared to development boards which add these features.", - "", - "In order to use these modules, make sure to observe the following:", - "", - "- **Provide sufficient power to the module.** For stable use of the ESP8266 a power supply with 3.3V and >= 250mA is required. Using the power available from USB to Serial adapter is not recommended, these adapters typically do not supply enough current to run ESP8266 reliably in every situation. An external supply or regulator alongwith filtering capacitors is preferred.", - "", - "- **Connect bootstrapping resistors** to GPIO0, GPIO2, GPIO15 according to the schematics below.", + "These modules come in different form factors and pinouts. " + "See the page at ESP8266 community wiki for more info: " + "`ESP8266 Module Family" + " `__.", + "", + "Usually these modules have no bootstrapping resistors on board," + " insufficient decoupling capacitors, no voltage regulator, no" + " reset circuit, and no USB-serial adapter. This makes using them" + " somewhat tricky, compared to development boards which add these" + " features.", + "", + "In order to use these modules, make sure to observe the" + " following:", + "", + "- **Provide sufficient power to the module.** For stable use of" + " the ESP8266 a power supply with 3.3V and >= 250mA is required." + " Using the power available from USB to Serial adapter is not" + " recommended, these adapters typically do not supply enough" + " current to run ESP8266 reliably in every situation. An external" + " supply or regulator alongwith filtering capacitors is preferred.", + "", + "- **Connect bootstrapping resistors** to GPIO0, GPIO2, GPIO15" + " according to the schematics below.", "", "- **Put ESP8266 into bootloader mode** before uploading code.", "", "Serial Adapter", "--------------", "", - "There are many different USB to Serial adapters / boards. To be able to put ESP8266 into bootloader mode using serial handshaking lines, you need the adapter which breaks out RTS and DTR outputs. CTS and DSR are not useful for upload (they are inputs). Make sure the adapter can work with 3.3V IO voltage: it should have a jumper or a switch to select between 5V and 3.3V, or be marked as 3.3V only.", + "There are many different USB to Serial adapters / boards. To be" + " able to put ESP8266 into bootloader mode using serial handshaking" + " lines, you need the adapter which breaks out RTS and DTR outputs." + " CTS and DSR are not useful for upload (they are inputs). Make" + " sure the adapter can work with 3.3V IO voltage: it should have a" + " jumper or a switch to select between 5V and 3.3V, or be marked as" + " 3.3V only.", "", "Adapters based around the following ICs should work:", "", @@ -113,7 +133,8 @@ "- CP2102", "- CH340G", "", - "PL2303-based adapters are known not to work on Mac OS X. See https://github.com/igrr/esptool-ck/issues/9 for more info.", + "PL2303-based adapters are known not to work on Mac OS X. See" + " https://github.com/igrr/esptool-ck/issues/9 for more info.", "", "Minimal Hardware Setup for Bootloading and Usage", "------------------------------------------------", @@ -143,9 +164,12 @@ "- Reset is also named RSBT or REST (adding PullUp improves the", " stability of the module)", "- GPIO2 is alternative TX for the boot loader mode", - "- **Directly connecting a pin to VCC or GND is not a substitute for a", - " PullUp or PullDown resistor, doing this can break upload management", - " and the serial console, instability has also been noted in some", + "- **Directly connecting a pin to VCC or GND is not a substitute" + " for a", + " PullUp or PullDown resistor, doing this can break upload" + " management", + " and the serial console, instability has also been noted in" + " some", " cases.**", "", "ESP to Serial", @@ -222,7 +246,8 @@ "Boot Messages and Modes", "-----------------------", "", - "The ESP module checks at every boot the Pins 0, 2 and 15. based on them its boots in different modes:", + "The ESP module checks at every boot the Pins 0, 2 and 15. based on" + " them its boots in different modes:", "", "+----------+---------+---------+------------------------------------+", "| GPIO15 | GPIO0 | GPIO2 | Mode |", @@ -240,7 +265,8 @@ "", " rst cause:2, boot mode:(3,6)", "", - "note: - GPIO2 is used as TX output and the internal Pullup is enabled on boot.", + "note: - GPIO2 is used as TX output and the internal Pullup is" + " enabled on boot.", "", "rst cause", "~~~~~~~~~", @@ -305,9 +331,15 @@ "sdk", ], "desc": [ - "ESP8285 (`datasheet `__) is a multi-chip package which contains ESP8266 and 1MB flash. All points related to bootstrapping resistors and recommended circuits listed above apply to ESP8285 as well.", - "", - "Note that since ESP8285 has SPI flash memory internally connected in DOUT mode, pins 9 and 10 may be used as GPIO / I2C / PWM pins.", + "ESP8285 (`datasheet" + " `__)" + " is a multi-chip package which contains ESP8266 and 1MB flash. All" + " points related to bootstrapping resistors and recommended" + " circuits listed above apply to ESP8285 as well.", + "", + "Note that since ESP8285 has SPI flash memory internally connected" + " in DOUT mode, pins 9 and 10 may be used as GPIO / I2C / PWM" + " pins.", ], }, ), @@ -330,12 +362,16 @@ "desc": [ "Procuct page https://www.lifely.cc", "", - 'This Board "Lifely Agrumino Lemon" is based with WT8266-S1 core with WiFi 2,4Ghz and 2MB of Flash.', + 'This Board "Lifely Agrumino Lemon" is based with WT8266-S1 core' + " with WiFi 2,4Ghz and 2MB of Flash.", "Power", - "Micro usb power cable, Lir2450 rechargeable battery (or not rechargeable)or with JST connector in the back board Max 6 Vin", + "Micro usb power cable, Lir2450 rechargeable battery (or not" + " rechargeable)or with JST connector in the back board Max 6 Vin", "Libraries and examples", - "Download libraries from: Official Arduino Ide, our website https://www.lifely.cc or https://github.com/lifely-cc/", - "Full pinout and PDF for setup here https://www.lifely.cc our libraries is OpenSource", + "Download libraries from: Official Arduino Ide, our website" + " https://www.lifely.cc or https://github.com/lifely-cc/", + "Full pinout and PDF for setup here https://www.lifely.cc our" + " libraries is OpenSource", ], }, ), @@ -387,7 +423,16 @@ "4M", ], "desc": [ - "The Adafruit Feather HUZZAH ESP8266 is an Arduino-compatible Wi-Fi development board powered by Ai-Thinker's ESP-12S, clocked at 80 MHz at 3.3V logic. A high-quality SiLabs CP2104 USB-Serial chip is included so that you can upload code at a blistering 921600 baud for fast development time. It also has auto-reset so no noodling with pins and reset button pressings. A 3.7V Lithium polymer battery connector is included, making it ideal for portable projects. The Adafruit Feather HUZZAH ESP8266 will automatically recharge a connected battery when USB power is available.", + "The Adafruit Feather HUZZAH ESP8266 is an Arduino-compatible Wi-Fi" + " development board powered by Ai-Thinker's ESP-12S, clocked at 80" + " MHz at 3.3V logic. A high-quality SiLabs CP2104 USB-Serial chip" + " is included so that you can upload code at a blistering 921600" + " baud for fast development time. It also has auto-reset so no" + " noodling with pins and reset button pressings. A 3.7V Lithium" + " polymer battery connector is included, making it ideal for" + " portable projects. The Adafruit Feather HUZZAH ESP8266 will" + " automatically recharge a connected battery when USB power is" + " available.", "", "Product page: https://www.adafruit.com/product/2821", ], @@ -408,7 +453,15 @@ "4M", ], "desc": [ - "The Heltec WiFi Kit 8 is an Arduino-compatible Wi-Fi development board powered by Ai-Thinker's ESP-12S, clocked at 80 MHz at 3.3V logic. A high-quality SiLabs CP2104 USB-Serial chip is included so that you can upload code at a blistering 921600 baud for fast development time. It also has auto-reset so no noodling with pins and reset button pressings. A 3.7V Lithium polymer battery connector is included, making it ideal for portable projects. The Heltec WiFi Kit 8 will automatically recharge a connected battery when USB power is available.", + "The Heltec WiFi Kit 8 is an Arduino-compatible Wi-Fi development" + " board powered by Ai-Thinker's ESP-12S, clocked at 80 MHz at 3.3V" + " logic. A high-quality SiLabs CP2104 USB-Serial chip is included" + " so that you can upload code at a blistering 921600 baud for fast" + " development time. It also has auto-reset so no noodling with pins" + " and reset button pressings. A 3.7V Lithium polymer battery" + " connector is included, making it ideal for portable projects. The" + " Heltec WiFi Kit 8 will automatically recharge a connected battery" + " when USB power is available.", "", "Product page: https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series", ], @@ -429,7 +482,11 @@ "4M", ], "desc": [ - "The Invent One is an Arduino-compatible Wi-Fi development board powered by Ai-Thinker's ESP-12F, clocked at 80 MHz at 3.3V logic. It has an onboard ADC (PCF8591) so that you can have multiple analog inputs to work with. More information can be found here: https://blog.inventone.ng", + "The Invent One is an Arduino-compatible Wi-Fi development board" + " powered by Ai-Thinker's ESP-12F, clocked at 80 MHz at 3.3V logic." + " It has an onboard ADC (PCF8591) so that you can have multiple" + " analog inputs to work with. More information can be found here:" + " https://blog.inventone.ng", "", "Product page: https://inventone.ng", ], @@ -451,7 +508,10 @@ "4M", ], "desc": [ - "The XinaBox CW01(ESP8266) is an Arduino-compatible Wi-Fi development board powered by an ESP-12F, clocked at 80 MHz at 3.3V logic. The CW01 has an onboard RGB LED and 3 xBUS connection ports.", + "The XinaBox CW01(ESP8266) is an Arduino-compatible Wi-Fi" + " development board powered by an ESP-12F, clocked at 80 MHz at" + " 3.3V logic. The CW01 has an onboard RGB LED and 3 xBUS connection" + " ports.", "", "Product page: https://xinabox.cc/products/CW01", ], @@ -472,7 +532,14 @@ "resetmethod_menu", ], "desc": [ - "ESPresso Lite 1.0 (beta version) is an Arduino-compatible Wi-Fi development board powered by Espressif System's own ESP8266 WROOM-02 module. It has breadboard-friendly breakout pins with in-built LED, two reset/flash buttons and a user programmable button . The operating voltage is 3.3VDC, regulated with 800mA maximum current. Special distinctive features include on-board I2C pads that allow direct connection to OLED LCD and sensor boards.", + "ESPresso Lite 1.0 (beta version) is an Arduino-compatible Wi-Fi" + " development board powered by Espressif System's own ESP8266" + " WROOM-02 module. It has breadboard-friendly breakout pins with" + " in-built LED, two reset/flash buttons and a user programmable" + " button . The operating voltage is 3.3VDC, regulated with 800mA" + " maximum current. Special distinctive features include on-board" + " I2C pads that allow direct connection to OLED LCD and sensor" + " boards.", ], }, ), @@ -491,7 +558,14 @@ "resetmethod_menu", ], "desc": [ - "ESPresso Lite 2.0 is an Arduino-compatible Wi-Fi development board based on an earlier V1 (beta version). Re-designed together with Cytron Technologies, the newly-revised ESPresso Lite V2.0 features the auto-load/auto-program function, eliminating the previous need to reset the board manually before flashing a new program. It also feature two user programmable side buttons and a reset button. The special distinctive features of on-board pads for I2C sensor and actuator is retained.", + "ESPresso Lite 2.0 is an Arduino-compatible Wi-Fi development board" + " based on an earlier V1 (beta version). Re-designed together with" + " Cytron Technologies, the newly-revised ESPresso Lite V2.0" + " features the auto-load/auto-program function, eliminating the" + " previous need to reset the board manually before flashing a new" + " program. It also feature two user programmable side buttons and a" + " reset button. The special distinctive features of on-board pads" + " for I2C sensor and actuator is retained.", ], }, ), @@ -551,7 +625,9 @@ "Pin mapping", "~~~~~~~~~~~", "", - "Pin numbers written on the board itself do not correspond to ESP8266 GPIO pin numbers. Constants are defined to make using this board easier:", + "Pin numbers written on the board itself do not correspond to" + " ESP8266 GPIO pin numbers. Constants are defined to make using" + " this board easier:", "", ".. code:: c++", "", @@ -567,7 +643,8 @@ " static const uint8_t D9 = 3;", " static const uint8_t D10 = 1;", "", - "If you want to use NodeMCU pin 5, use D5 for pin number, and it will be translated to 'real' GPIO pin 14.", + "If you want to use NodeMCU pin 5, use D5 for pin number, and it" + " will be translated to 'real' GPIO pin 14.", ], }, ), @@ -587,17 +664,28 @@ "led216", ], "desc": [ - "This module is sold under many names for around $6.50 on AliExpress and it's one of the cheapest, fully integrated ESP8266 solutions.", - "", - "It's an open hardware design with an ESP-12E core and 4 MB of SPI flash.", - "", - 'According to the manufacturer, "with a micro USB cable, you can connect NodeMCU devkit to your laptop and flash it without any trouble". This is more or less true: the board comes with a CP2102 onboard USB to serial adapter which just works, well, the majority of the time. Sometimes flashing fails and you have to reset the board by holding down FLASH +', - "RST, then releasing FLASH, then releasing RST. This forces the CP2102 device to power cycle and to be re-numbered by Linux.", - "", - "The board also features a NCP1117 voltage regulator, a blue LED on GPIO16 and a 220k/100k Ohm voltage divider on the ADC input pin.", + "This module is sold under many names for around $6.50 on" + " AliExpress and it's one of the cheapest, fully integrated ESP8266" + " solutions.", + "", + "It's an open hardware design with an ESP-12E core and 4 MB of SPI" + " flash.", + "", + 'According to the manufacturer, "with a micro USB cable, you can' + " connect NodeMCU devkit to your laptop and flash it without any" + ' trouble". This is more or less true: the board comes with a' + " CP2102 onboard USB to serial adapter which just works, well, the" + " majority of the time. Sometimes flashing fails and you have to" + " reset the board by holding down FLASH +", + "RST, then releasing FLASH, then releasing RST. This forces the" + " CP2102 device to power cycle and to be re-numbered by Linux.", + "", + "The board also features a NCP1117 voltage regulator, a blue LED on" + " GPIO16 and a 220k/100k Ohm voltage divider on the ADC input pin.", "The ESP-12E usually has a led connected on GPIO2.", "", - "Full pinout and PDF schematics can be found `here `__", + "Full pinout and PDF schematics can be found `here" + " `__", ], }, ), @@ -617,17 +705,24 @@ "2M", ], "desc": [ - "This board comes with 2 MB of SPI flash and optional accessories (e.g. evaluation board ESP8266-EVB or BAT-BOX for batteries).", + "This board comes with 2 MB of SPI flash and optional accessories" + " (e.g. evaluation board ESP8266-EVB or BAT-BOX for batteries).", "", - "The basic module has three solder jumpers that allow you to switch the operating mode between SDIO, UART and FLASH.", + "The basic module has three solder jumpers that allow you to switch" + " the operating mode between SDIO, UART and FLASH.", "", - "The board is shipped for FLASH operation mode, with jumpers TD0JP=0, IO0JP=1, IO2JP=1.", + "The board is shipped for FLASH operation mode, with jumpers" + " TD0JP=0, IO0JP=1, IO2JP=1.", "", - "Since jumper IO0JP is tied to GPIO0, which is PIN 21, you'll have to ground it before programming with a USB to serial adapter and reset the board by power cycling it.", + "Since jumper IO0JP is tied to GPIO0, which is PIN 21, you'll have" + " to ground it before programming with a USB to serial adapter and" + " reset the board by power cycling it.", "", - "UART pins for programming and serial I/O are GPIO1 (TXD, pin 3) and GPIO3 (RXD, pin 4).", + "UART pins for programming and serial I/O are GPIO1 (TXD, pin 3)" + " and GPIO3 (RXD, pin 4).", "", - "You can find the board schematics `here `__", + "You can find the board schematics `here" + " `__", ], }, ), @@ -736,7 +831,8 @@ "Clone variant of the LOLIN(WEMOS) D1 mini board,", "with enabled flash-mode menu, DOUT selected by default.", "", - "Product page of the preferred official board: https://www.wemos.cc/", + "Product page of the preferred official board:" + " https://www.wemos.cc/", ], }, ), @@ -785,7 +881,8 @@ "Power:", "~~~~~~", "", - "- 5V pin : 4.7V 500mA output when the board is powered by USB ; 3.5V-6V input", + "- 5V pin : 4.7V 500mA output when the board is powered by USB ;" + " 3.5V-6V input", "- 3V3 pin : 3.3V 500mA regulated output", "- Digital pins : 3.3V 30mA.", "", @@ -793,9 +890,12 @@ "~~~~~~", "", "- Product page: https://www.wemos.cc/", - "- Board schematic: https://wiki.wemos.cc/_media/products:d1:sch_d1_mini_lite_v1.0.0.pdf", - "- ESP8285 datasheet: https://www.espressif.com/sites/default/files/0a-esp8285_datasheet_en_v1.0_20160422.pdf", - "- Voltage regulator datasheet: http://pdf-datasheet.datasheet.netdna-cdn.com/pdf-down/M/E/6/ME6211-Microne.pdf", + "- Board schematic:" + " https://wiki.wemos.cc/_media/products:d1:sch_d1_mini_lite_v1.0.0.pdf", + "- ESP8285 datasheet:" + " https://www.espressif.com/sites/default/files/0a-esp8285_datasheet_en_v1.0_20160422.pdf", + "- Voltage regulator datasheet:" + " http://pdf-datasheet.datasheet.netdna-cdn.com/pdf-down/M/E/6/ME6211-Microne.pdf", ], }, ), @@ -832,9 +932,14 @@ "4M", ], "desc": [ - "ESPino integrates the ESP-12 module with a 3.3v regulator, CP2104 USB-Serial bridge and a micro USB connector for easy programming. It is designed for fitting in a breadboard and has an RGB Led and two buttons for easy prototyping.", + "ESPino integrates the ESP-12 module with a 3.3v regulator, CP2104" + " USB-Serial bridge and a micro USB connector for easy programming." + " It is designed for fitting in a breadboard and has an RGB Led and" + " two buttons for easy prototyping.", "", - "For more information about the hardware, pinout diagram and programming procedures, please see the `datasheet `__.", + "For more information about the hardware, pinout diagram and" + " programming procedures, please see the `datasheet" + " `__.", "", "Product page: http://www.espino.io/en", ], @@ -855,16 +960,18 @@ "4M", ], "desc": [ - "ESPino by ThaiEasyElec using WROOM-02 module from Espressif Systems with 4 MB Flash.", + "ESPino by ThaiEasyElec using WROOM-02 module from Espressif" + " Systems with 4 MB Flash.", "", "We will update an English description soon. - Product page:", "http://thaieasyelec.com/products/wireless-modules/wifi-modules/espino-wifi-development-board-detail.html", "- Schematics:", - "www.thaieasyelec.com/downloads/ETEE052/ETEE052\_ESPino\_Schematic.pdf -", + "www.thaieasyelec.com/downloads/ETEE052/ETEE052\\_ESPino\\_Schematic.pdf -", "Dimensions:", - "http://thaieasyelec.com/downloads/ETEE052/ETEE052\_ESPino\_Dimension.pdf", + "http://thaieasyelec.com/downloads/ETEE052/ETEE052\\_ESPino\\_Dimension.pdf", "- Pinouts:", - "http://thaieasyelec.com/downloads/ETEE052/ETEE052\_ESPino\_User\_Manual\_TH\_v1\_0\_20160204.pdf (Please see pg. 8)", + "http://thaieasyelec.com/downloads/ETEE052/ETEE052\\_ESPino\\_User\\_Manual\\_TH\\_v1\\_0\\_20160204.pdf" + " (Please see pg. 8)", ], }, ), @@ -905,9 +1012,17 @@ "1M", ], "desc": [ - "WifInfo integrates the ESP-12 or ESP-07+Ext antenna module with a 3.3v regulator and the hardware to be able to measure French telemetry issue from ERDF powering meter serial output. It has a USB connector for powering, an RGB WS2812 Led, 4 pins I2C connector to fit OLED or sensor, and two buttons + FTDI connector and auto reset feature.", - "", - "For more information, please see WifInfo related `blog `__ entries, `github `__ and `community `__ forum.", + "WifInfo integrates the ESP-12 or ESP-07+Ext antenna module with a" + " 3.3v regulator and the hardware to be able to measure French" + " telemetry issue from ERDF powering meter serial output. It has a" + " USB connector for powering, an RGB WS2812 Led, 4 pins I2C" + " connector to fit OLED or sensor, and two buttons + FTDI connector" + " and auto reset feature.", + "", + "For more information, please see WifInfo related `blog" + " `__ entries, `github" + " `__ and `community" + " `__ forum.", ], }, ), @@ -978,13 +1093,19 @@ "desc": [ "gen4-IoD Range of ESP8266 powered Display Modules by 4D Systems.", "", - '2.4", 2.8" and 3.2" TFT LCD with uSD card socket and Resistive Touch. Chip Antenna + uFL Connector.', + '2.4", 2.8" and 3.2" TFT LCD with uSD card socket and Resistive' + " Touch. Chip Antenna + uFL Connector.", "", - "Datasheet and associated downloads can be found on the 4D Systems product page.", + "Datasheet and associated downloads can be found on the 4D Systems" + " product page.", "", - "The gen4-IoD range can be programmed using the Arduino IDE and also the 4D Systems Workshop4 IDE, which incorporates many additional graphics benefits. GFX4d library is available, along with a number of demo applications.", + "The gen4-IoD range can be programmed using the Arduino IDE and" + " also the 4D Systems Workshop4 IDE, which incorporates many" + " additional graphics benefits. GFX4d library is available, along" + " with a number of demo applications.", "", - "- Product page: https://4dsystems.com.au/products/iot-display-modules", + "- Product page:" + " https://4dsystems.com.au/products/iot-display-modules", ], }, ), @@ -1004,11 +1125,17 @@ ], "serial": "921", "desc": [ - "The Oak requires an `Serial Adapter`_ for a serial connection or flashing; its micro USB port is only for power.", + "The Oak requires an `Serial Adapter`_ for a serial connection or" + " flashing; its micro USB port is only for power.", "", - "To make a serial connection, wire the adapter's **TX to P3**, **RX to P4**, and **GND** to **GND**. Supply 3.3v from the serial adapter if not already powered via USB.", + "To make a serial connection, wire the adapter's **TX to P3**, **RX" + " to P4**, and **GND** to **GND**. Supply 3.3v from the serial" + " adapter if not already powered via USB.", "", - "To put the board into bootloader mode, configure a serial connection as above, connect **P2 to GND**, then re-apply power. Once flashing is complete, remove the connection from P2 to GND, then re-apply power to boot into normal mode.", + "To put the board into bootloader mode, configure a serial" + " connection as above, connect **P2 to GND**, then re-apply power. " + " Once flashing is complete, remove the connection from P2 to GND," + " then re-apply power to boot into normal mode.", ], }, ), @@ -1063,9 +1190,15 @@ "4M", ], "desc": [ - "Wio Link is designed to simplify your IoT development. It is an ESP8266 based open-source Wi-Fi development board to create IoT applications by virtualizing plug-n-play modules to RESTful APIs with mobile APPs. Wio Link is also compatible with the Arduino IDE.", + "Wio Link is designed to simplify your IoT development. It is an" + " ESP8266 based open-source Wi-Fi development board to create IoT" + " applications by virtualizing plug-n-play modules to RESTful APIs" + " with mobile APPs. Wio Link is also compatible with the Arduino" + " IDE.", "", - "Please DO NOTICE that you MUST pull up pin 15 to enable the power for Grove ports, the board is designed like this for the purpose of peripherals power management.", + "Please DO NOTICE that you MUST pull up pin 15 to enable the power" + " for Grove ports, the board is designed like this for the purpose" + " of peripherals power management.", "", "Product page: https://www.seeedstudio.com/Wio-Link-p-2604.html", ], @@ -1086,9 +1219,13 @@ "4M", ], "desc": [ - "ESPectro Core is ESP8266 development board as the culmination of our 3+ year experience in exploring and developing products with ESP8266 MCU.", + "ESPectro Core is ESP8266 development board as the culmination of" + " our 3+ year experience in exploring and developing products with" + " ESP8266 MCU.", "", - "Initially designed for kids in mind, everybody should be able to use it. Yet it's still hacker-friendly as we break out all ESP8266 ESP-12F pins.", + "Initially designed for kids in mind, everybody should be able to" + " use it. Yet it's still hacker-friendly as we break out all" + " ESP8266 ESP-12F pins.", "", "More details at https://shop.makestro.com/product/espectrocore/", ], @@ -1110,7 +1247,8 @@ ], "serial": "512", "desc": [ - "Eduino WiFi is an Arduino-compatible DIY WiFi development board using an ESP-12 module", + "Eduino WiFi is an Arduino-compatible DIY WiFi development board" + " using an ESP-12 module", "", "Product page: https://schirmilabs.de/?page_id=165", ], @@ -1140,26 +1278,33 @@ "1M", ], "desc": [ - "ESP8266 based devices from ITEAD: Sonoff SV, Sonoff TH, Sonoff Basic, " + "ESP8266 based devices from ITEAD: Sonoff SV, Sonoff TH, Sonoff" + " Basic, " + "and Sonoff S20", "", "These are not development boards. The development process is " - + "inconvenient with these devices. When flashing firmware you will " + + "inconvenient with these devices. When flashing firmware you" + " will " + "need a Serial Adapter to connect it to your computer.", "", - " | Most of these devices, during normal operation, are connected to " - + "*wall power (AKA Mains Electricity)*. **NEVER** try to flash these " + " | Most of these devices, during normal operation, are" + " connected to " + + "*wall power (AKA Mains Electricity)*. **NEVER** try to flash" + " these " + "devices when connected to *wall power*. **ALWAYS** have them " + "disconnected from *wall power* when connecting them to your " + "computer. Your life may depend on it!", "", - "When flashing you will need to hold down the push button connected " - + "to the GPIO0 pin, while powering up with a safe 3.3 Volt source. Some USB " + "When flashing you will need to hold down the push button" + " connected " + + "to the GPIO0 pin, while powering up with a safe 3.3 Volt source." + " Some USB " + "Serial Adapters may supply enough power to handle flashing; " + "however, it many may not supply enough power to handle the " + "activities when the device reboots.", "", - "More product details at the bottom of https://www.itead.cc/wiki/Product/", + "More product details at the bottom of" + " https://www.itead.cc/wiki/Product/", ], }, ), @@ -1179,13 +1324,19 @@ "1M", ], "desc": [ - "DOIT ESP-Mx DevKit - This is a development board by DOIT, with a DOIT ESP-Mx module " - + "(`datasheet `__) " - + "using a ESP8285 Chip. With the DOIT ESP-Mx module, GPIO pins 9 and 10 are not available. " - + "The DOIT ESP-Mx DevKit board has a red power LED and a blue LED connected to GPIO16 " - + "and is active low to turn on. It uses a CH340C, USB to Serial converter chip. ", - "", - "ESP8285 (`datasheet `__) " + "DOIT ESP-Mx DevKit - This is a development board by DOIT, with a" + " DOIT ESP-Mx module " + + "(`datasheet" + " `__) " + + "using a ESP8285 Chip. With the DOIT ESP-Mx module, GPIO pins 9" + " and 10 are not available. " + + "The DOIT ESP-Mx DevKit board has a red power LED and a blue LED" + " connected to GPIO16 " + + "and is active low to turn on. It uses a CH340C, USB to Serial" + " converter chip. ", + "", + "ESP8285 (`datasheet" + " `__) " + "is a multi-chip package which contains ESP8266 and 1MB flash. ", ], }, @@ -1280,7 +1431,7 @@ (".build.flash_freq", "80"), ] ), - ####################### menu.resetmethod + # menu.resetmethod "resetmethod_menu": collections.OrderedDict( [ (".menu.ResetMethod.nodemcu", "dtr (aka nodemcu)"), @@ -1304,7 +1455,7 @@ ), ] ), - ####################### upload.resetmethod (new esptool.py options) + # upload.resetmethod (new esptool.py options) "resetmethod_ck": collections.OrderedDict( [ (".upload.resetmethod", "--before no_reset --after soft_reset"), @@ -1330,7 +1481,7 @@ (".upload.resetmethod", "--before no_reset_no_sync --after soft_reset"), ] ), - ####################### menu.FlashMode + # menu.FlashMode "flashmode_menu": collections.OrderedDict( [ (".menu.FlashMode.dout", "DOUT (compatible)"), @@ -1347,7 +1498,7 @@ (".menu.FlashMode.qio.build.flash_flags", "-DFLASHMODE_QIO"), ] ), - ####################### default flash_mode + # default flash_mode "flashmode_dio": collections.OrderedDict( [ (".build.flash_mode", "dio"), @@ -1372,7 +1523,7 @@ (".build.flash_flags", "-DFLASHMODE_QOUT"), ] ), - ####################### lwip + # lwip variant "lwip": collections.OrderedDict( [ (".menu.ip.lm2f", "v2 Lower Memory"), @@ -1419,7 +1570,7 @@ ), ] ), - ####################### serial + # serial baud rate "s9": collections.OrderedDict( [ (".menu.baud.9600", "9600"), @@ -1476,7 +1627,7 @@ (".menu.baud.3000000.upload.speed", "3000000"), ] ), - ####################### flash erase + # partial or full flash erase "flash_erase_menu": collections.OrderedDict( [ (".menu.wipe.none", "Only Sketch"), @@ -1490,7 +1641,7 @@ (".menu.wipe.all.upload.erase_cmd", "erase_flash"), ] ), - ######################## SSL supported protocols + # optional 'basic' cipher list "ssl_cipher_menu": collections.OrderedDict( [ (".menu.ssl.all", "All SSL ciphers (most compatible)"), @@ -1499,7 +1650,7 @@ (".menu.ssl.basic.build.sslflags", "-DBEARSSL_SSL_BASIC"), ] ), - ####################### mmu + # configure icache split, mmu "mmu_menu": collections.OrderedDict( [ (".menu.mmu.3232", "32KB cache + 32KB IRAM (balanced)"), @@ -1520,21 +1671,24 @@ (".menu.mmu.3216", "16KB cache + 32KB IRAM + 16KB 2nd Heap (not shared)"), ( ".menu.mmu.3216.build.mmuflags", - "-DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x4000 -DMMU_SEC_HEAP=0x40108000 -DMMU_SEC_HEAP_SIZE=0x4000", + "-DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x4000" + " -DMMU_SEC_HEAP=0x40108000 -DMMU_SEC_HEAP_SIZE=0x4000", ), (".menu.mmu.ext128k", "128K Heap External 23LC1024"), ( ".menu.mmu.ext128k.build.mmuflags", - "-DMMU_EXTERNAL_HEAP=128 -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000", + "-DMMU_EXTERNAL_HEAP=128 -DMMU_IRAM_SIZE=0x8000" + " -DMMU_ICACHE_SIZE=0x8000", ), (".menu.mmu.ext8192k", "8M w/256K Heap External 64 MBit PSRAM"), ( ".menu.mmu.ext8192k.build.mmuflags", - "-DMMU_EXTERNAL_HEAP=256 -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000", + "-DMMU_EXTERNAL_HEAP=256 -DMMU_IRAM_SIZE=0x8000" + " -DMMU_ICACHE_SIZE=0x8000", ), ] ), - ######################## Non 32-bit load/store exception handler + # install our exception handler for non-aligned memory access "non32xfer_menu": collections.OrderedDict( [ (".menu.non32xfer.fast", "Use pgm_read macros for IRAM/PROGMEM"), @@ -1796,7 +1950,10 @@ def distance(self, other): return None def __repr__(self): - return f"" + return ( + f"" + ) def copy(self): return Region(self.name, self.start, self.end) @@ -1913,7 +2070,7 @@ def push(self, region): ValueError: No space left """ if self.free < region.size: - raise ValueError(f"No space left") + raise ValueError("No space left") elif self.start > region.start or self.end < region.end: raise ValueError(f"Out of bounds of {self.region}") elif self.subregions and region.end > self.edge.start: @@ -1960,8 +2117,6 @@ def add_aligned(self, name, size, alignment): >>> x.add_aligned("", Kilobytes(20), Kilobytes(8)) """ - end = self.edge.copy() - remainder = size % alignment if remainder: self.add("", remainder) @@ -1994,7 +2149,10 @@ def end(self): return self.region.end def __repr__(self): - return f"" + return ( + f"" + ) # - menu properties *will* be used in scripts, so these suffixes *must* remain the same @@ -2068,7 +2226,10 @@ def humanize_flash_menu(size): # used as property value and for .ld output generator def ldscript_name(*, flash_size, expected_fs_size, **kwargs): - return f"eagle.flash.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}.ld".lower() + return ( + f"eagle.flash.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}.ld" + .lower() + ) SPI_START = 0x40200000 @@ -2083,11 +2244,11 @@ def common_layout(name, flash_size): layout = Layout(Region(name, 0, flash_size)) # these are *always* at the end of the flash, so layout is populated backwards - sdkwifi = layout.add("SDK + WiFi", (SPI_SECTOR * 3)) - rfcal = layout.add("RFCAL", SPI_SECTOR) + layout.add("SDK + WiFi", (SPI_SECTOR * 3)) + layout.add("RFCAL", SPI_SECTOR) # eeprom sector is always there, since we don't know whether it is used or not - eeprom = layout.add("EEPROM", SPI_SECTOR) + layout.add("EEPROM", SPI_SECTOR) return layout @@ -2290,7 +2451,7 @@ def size(value): print(" dport0_0_seg : org = 0x3FF00000, len = 0x10") print(" dram0_0_seg : org = 0x3FFE8000, len = 0x14000") print( - f" irom0_0_seg : org = {address(sketch)}, len = 0x{sketch.size:x}" + f" irom0_0_seg : org = {address(sketch)}, len = 0x{sketch.size:x}" ) print("}") print() @@ -2301,7 +2462,8 @@ def size(value): print(f"PROVIDE ( _EEPROM_start = {symbol(eeprom.start)} );") # Re-add deprecated symbols pointing to the same address as the new standard ones print( - "/* The following symbols are DEPRECATED and will be REMOVED in a future release */" + "/* The following symbols are DEPRECATED and will be REMOVED in a future" + " release */" ) print(f"PROVIDE ( _SPIFFS_start = {symbol(fs.start)} );") print(f"PROVIDE ( _SPIFFS_end = {symbol(fs.end)} );") @@ -2414,7 +2576,8 @@ def field_values(*, layout, eeprom, fs, **kwards): print(" FLASH_MAP_* is a user choice in sketch:") print(" `FLASH_MAP_SETUP_CONFIG(FLASH_MAP_OTA_FS)`") print( - " Configuration is made at boot with detected flash chip size (last argument 512..16384)" + " Configuration is made at boot with detected flash chip size (last" + " argument 512..16384)" ) print(" Other values are defined from `tools/boards.txt.py`.") print("*/") @@ -2484,23 +2647,20 @@ def all_flash_maps(): # builtin led -def led(name, default, ledList): +def menu_led(name, pins, default): menu = collections.OrderedDict( ( (f".menu.led.{default}", str(default)), (f".menu.led.{default}.build.led", f"-DLED_BUILTIN={default}"), ) ) - for ( - led - ) in ( - ledList - ): # Make range incluside of max (16), since there are really 16 GPIOS not 15 - if not led == default: + + for pin in pins: + if not pin == default: menu.update( ( - (f".menu.led.{led}", str(led)), - (f".menu.led.{led}.build.led", f"-DLED_BUILTIN={led}"), + (f".menu.led.{pin}", str(pin)), + (f".menu.led.{pin}.build.led", f"-DLED_BUILTIN={pin}"), ) ) return {name: menu} @@ -2569,8 +2729,8 @@ def prepare_macros(defaults, flashmap, builtinled): macros = defaults macros.update(menu_macros(flashmap)) macros.update(debug_macros()) - macros.update(led("led", builtinled, range(0, 17))) - macros.update(led("led216", 2, (16,))) + macros.update(menu_led("led", range(0, 17), builtinled)) + macros.update(menu_led("led216", (16,), 2)) macros.update(sdk_macros()) return macros @@ -2698,7 +2858,7 @@ def show_names(boards): ################################################################ - +# boards .json def package_generate(output, boards): with output: @@ -2712,7 +2872,7 @@ def package_generate(output, boards): ################################################################ - +# boards .rst, here's the only place to use "desc" field def doc_generate(output, boards): with output: @@ -2730,7 +2890,7 @@ def doc_generate(output, boards): ################################################################ -# entrypoint +# command line parsing GENERATORS = ( ("boards", "boards-file", "boards.txt", "boards.txt"), @@ -2770,7 +2930,8 @@ def parse_cmdline(): ) filters = parser.add_argument_group( - "Filtering", "either INCLUDE or EXCLUDE boards based on the filter file" + title="Filtering", + description="either INCLUDE or EXCLUDE boards based on the filter file", ).add_mutually_exclusive_group() filters.add_argument("--include", nargs="?") filters.add_argument("--exclude", nargs="?") @@ -2778,10 +2939,8 @@ def parse_cmdline(): subparsers = parser.add_subparsers(dest="command", help="sub-commands") subparsers.required = True - names = subparsers.add_parser( - "names", help="prints a list of all available board names" - ) - test = subparsers.add_parser("test", help="run a doctest self-check") + subparsers.add_parser("names", help="prints a list of all available board names") + subparsers.add_parser("test", help="run a doctest self-check") generate = subparsers.add_parser( "generate", @@ -2789,9 +2948,11 @@ def parse_cmdline(): ) outputs = generate.add_argument_group( - "Output destination", - "Either use STDOUT or write to the output file(s). " - "Optionally, when output file(s) already exist, preserve the original with .orig extension.", + title="Output destination", + description=( + "Either use STDOUT or write to the output file(s). Optionally, when output" + " file(s) already exist, preserve the original with .orig extension." + ), ) outputs.add_argument( "--output", @@ -2862,6 +3023,9 @@ def maybe_output(file): doc_generate(maybe_output(args.doc_file), boards) +################################################################ +# entrypoint + def main(): args = parse_cmdline() From afb411011787d1c7300c31c45c321bedbd59c783 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Wed, 8 Jun 2022 23:26:25 +0300 Subject: [PATCH 31/35] relax size adjustment when not even --- boards.txt | 6 +++--- tools/boards.txt.py | 6 +++++- tools/sdk/ld/eagle.flash.8m.ld | 2 +- tools/sdk/ld/eagle.flash.8m6m.ld | 2 +- tools/sdk/ld/eagle.flash.8m7m.ld | 2 +- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/boards.txt b/boards.txt index 1a5cce98fb..cd732c86c9 100644 --- a/boards.txt +++ b/boards.txt @@ -258,7 +258,7 @@ generic.menu.eesz.4M.build.flash_size=4M generic.menu.eesz.4M.build.flash_ld=eagle.flash.4m.ld generic.menu.eesz.4M.build.rfcal_addr=0x3FC000 generic.menu.eesz.4M.upload.maximum_size=1044464 -generic.menu.eesz.8M6M=8MB (FS:5MB OTA:~1MB) +generic.menu.eesz.8M6M=8MB (FS:6120KB OTA:~1MB) generic.menu.eesz.8M6M.build.flash_size=8M generic.menu.eesz.8M6M.build.flash_ld=eagle.flash.8m6m.ld generic.menu.eesz.8M6M.build.rfcal_addr=0x7FC000 @@ -267,7 +267,7 @@ generic.menu.eesz.8M6M.build.spiffs_start=0x200000 generic.menu.eesz.8M6M.build.spiffs_end=0x7FA000 generic.menu.eesz.8M6M.build.spiffs_blocksize=8192 generic.menu.eesz.8M6M.build.spiffs_pagesize=256 -generic.menu.eesz.8M7M=8MB (FS:6MB OTA:~509KB) +generic.menu.eesz.8M7M=8MB (FS:7144KB OTA:~509KB) generic.menu.eesz.8M7M.build.flash_size=8M generic.menu.eesz.8M7M.build.flash_ld=eagle.flash.8m7m.ld generic.menu.eesz.8M7M.build.rfcal_addr=0x7FC000 @@ -276,7 +276,7 @@ generic.menu.eesz.8M7M.build.spiffs_start=0x100000 generic.menu.eesz.8M7M.build.spiffs_end=0x7FA000 generic.menu.eesz.8M7M.build.spiffs_blocksize=8192 generic.menu.eesz.8M7M.build.spiffs_pagesize=256 -generic.menu.eesz.8M=8MB (FS:none OTA:~6MB) +generic.menu.eesz.8M=8MB (FS:none OTA:~7148KB) generic.menu.eesz.8M.build.flash_size=8M generic.menu.eesz.8M.build.flash_ld=eagle.flash.8m.ld generic.menu.eesz.8M.build.rfcal_addr=0x7FC000 diff --git a/tools/boards.txt.py b/tools/boards.txt.py index 75ff3f7499..e0c0e949dd 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1888,6 +1888,10 @@ def humanize(size, *, decimal=False, convert=None): '1MB' >>> humanize(Megabytes(1) + Kilobytes(512)) '1536KB' + >>> humanize(Bytes(7315456)) + '7144KB' + >>> humanize(Bytes(6266880)) + '6120KB' """ @@ -1900,7 +1904,7 @@ def humanize(size, *, decimal=False, convert=None): for ratio, suffix in reversed(convert): if size >= ratio: - if size % ratio > (size / 4): + if size % ratio > (size / 8): continue size = f"{size / ratio:.02f}" diff --git a/tools/sdk/ld/eagle.flash.8m.ld b/tools/sdk/ld/eagle.flash.8m.ld index 03ebcb975e..1d95260855 100644 --- a/tools/sdk/ld/eagle.flash.8m.ld +++ b/tools/sdk/ld/eagle.flash.8m.ld @@ -1,6 +1,6 @@ /* Flash Split for 8MB chips */ /* sketch @0x40201010 (~1019KB) (1044464B) */ -/* empty @0x40300000 (~6MB) (7319552B) */ +/* empty @0x40300000 (~7148KB) (7319552B) */ /* eeprom @0x409FB000 (4096B) */ /* rfcal @0x409FC000 (4096B) */ /* wifi @0x409FD000 (12288B) */ diff --git a/tools/sdk/ld/eagle.flash.8m6m.ld b/tools/sdk/ld/eagle.flash.8m6m.ld index 90e9198503..3a51b696fa 100644 --- a/tools/sdk/ld/eagle.flash.8m6m.ld +++ b/tools/sdk/ld/eagle.flash.8m6m.ld @@ -1,7 +1,7 @@ /* Flash Split for 8MB chips */ /* sketch @0x40201010 (~1019KB) (1044464B) */ /* empty @0x40300000 (~1MB) (1048576B) */ -/* fs @0x40400000 (~5MB) (6266880B) */ +/* fs @0x40400000 (~6120KB) (6266880B) */ /* eeprom @0x409FB000 (4096B) */ /* rfcal @0x409FC000 (4096B) */ /* wifi @0x409FD000 (12288B) */ diff --git a/tools/sdk/ld/eagle.flash.8m7m.ld b/tools/sdk/ld/eagle.flash.8m7m.ld index 4c3dff9eff..7d53616892 100644 --- a/tools/sdk/ld/eagle.flash.8m7m.ld +++ b/tools/sdk/ld/eagle.flash.8m7m.ld @@ -1,6 +1,6 @@ /* Flash Split for 8MB chips */ /* sketch @0x40201010 (~1019KB) (1044464B) */ -/* fs @0x40300000 (~6MB) (7315456B) */ +/* fs @0x40300000 (~7144KB) (7315456B) */ /* eeprom @0x409FB000 (4096B) */ /* rfcal @0x409FC000 (4096B) */ /* wifi @0x409FD000 (12288B) */ From a1fec470d611a0b88ba544d8a829c40d39574655 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Fri, 10 Jun 2022 00:00:00 +0300 Subject: [PATCH 32/35] names, only use the basename in cmdline comment --- boards.txt | 2 +- tools/boards.txt.py | 39 ++++++++++++++++++++++++++------------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/boards.txt b/boards.txt index cd732c86c9..c3bedfd6f8 100644 --- a/boards.txt +++ b/boards.txt @@ -1,5 +1,5 @@ # DO NOT EDIT - autogenerated by boards.txt.py -# Command line `.\tools\boards.txt.py generate --all` +# Command line `boards.txt.py generate --all` menu.BoardModel=Model menu.ESPModule=Module diff --git a/tools/boards.txt.py b/tools/boards.txt.py index e0c0e949dd..cbd2a6e6a6 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1772,7 +1772,7 @@ def subslices(values): yield combination -def debug_macros(): +def menu_debug_macros(): debugmenu = collections.OrderedDict( [ (".menu.dbg.Disabled", "Disabled"), @@ -2169,7 +2169,7 @@ def __repr__(self): def humanize_fs(size): - """Filesystem size in properties and file names. + """Filesystem size in .txt properties and file names. Only suffixed when in greater than 1 megabyte. Bytes() mostly stay unused. @@ -2191,7 +2191,7 @@ def humanize_fs(size): def humanize_flash(size): - """Flash size in properties and file names. + """Flash size in .txt properties and file names. >>> humanize_flash(Bytes(64)) '64' @@ -2210,7 +2210,7 @@ def humanize_flash(size): def humanize_flash_menu(size): - """Menu entry in the IDE. + """Special case for the board menu entry shown in the UI. >>> humanize_flash_menu(Bytes(128)) '128' @@ -2230,6 +2230,17 @@ def humanize_flash_menu(size): # used as property value and for .ld output generator def ldscript_name(*, flash_size, expected_fs_size, **kwargs): + """Full name of the board .ld script, for the specified flash and fs (expected) size. + + >>> ldscript_name(flash_size=Megabytes(1), expected_fs_size=Kilobytes(64)) + 'eagle.flash.1m64.ld' + >>> ldscript_name(flash_size=Megabytes(4), expected_fs_size=Megabytes(3)) + 'eagle.flash.4m3m.ld' + >>> ldscript_name(flash_size=Megabytes(8), expected_fs_size=Bytes(0)) + 'eagle.flash.8m.ld' + >>> ldscript_name(flash_size=Kilobytes(512), expected_fs_size=Bytes(0)) + 'eagle.flash.512k.ld' + """ return ( f"eagle.flash.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}.ld" .lower() @@ -2356,7 +2367,7 @@ def flash_map(flash_size, fs_size=Bytes(0), name=""): } -def menu_generate( +def menu_size_generate( *, max_ota_size, max_upload_size, rfcal, flash_size, fs, expected_fs_size, **kwargs ): menu = f".menu.eesz.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}" @@ -2389,7 +2400,7 @@ def menu_generate( return collections.OrderedDict(out) -def menu_macros(flash_maps): +def menu_size_macros(flash_maps): output = { "autoflash": collections.OrderedDict( [ @@ -2404,7 +2415,7 @@ def menu_macros(flash_maps): for flash_map in flash_maps: size = humanize_flash(flash_map["layout"].size) - menu = menu_generate(**flash_map) + menu = menu_size_generate(**flash_map) if size in output: output[size].update(menu) @@ -2674,7 +2685,7 @@ def menu_led(name, pins, default): # sdk selection -def sdk_macros(): +def menu_sdk_macros(): return { "sdk": collections.OrderedDict( [ @@ -2731,22 +2742,24 @@ def handler(name): def prepare_macros(defaults, flashmap, builtinled): macros = defaults - macros.update(menu_macros(flashmap)) - macros.update(debug_macros()) + macros.update(menu_size_macros(flashmap)) + macros.update(menu_debug_macros()) macros.update(menu_led("led", range(0, 17), builtinled)) macros.update(menu_led("led216", (16,), 2)) - macros.update(sdk_macros()) + macros.update(menu_sdk_macros()) return macros def boards_generate(output, boards, macros, extra_header=[], extra_board=[]): with output: - print("# DO NOT EDIT - autogenerated by boards.txt.py") - print(f'# Command line `{" ".join(sys.argv)}`') + prog, cmdline = os.path.basename(sys.argv[0]), sys.argv[1:] + print(f"# DO NOT EDIT - autogenerated by {prog}") + print(f'# Command line `{prog} {" ".join(cmdline)}`') for func in extra_header: func() print() + # With Arduino IDE 1.8.7 the order of the menu items will be honored from the tools pull down list. print("menu.BoardModel=Model") print("menu.ESPModule=Module") From 51cdcafba73022b10d93a1b98fcbfc29426c97d8 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Wed, 13 Jul 2022 03:03:03 +0300 Subject: [PATCH 33/35] revert to the original way template gets our boards list --- package/build_boards_manager_package.sh | 6 +- package/package_esp8266com_index.boards.json | 113 ----------------- .../package_esp8266com_index.template.json | 116 +++++++++++++++++- tools/boards.txt.py | 41 +++---- 4 files changed, 135 insertions(+), 141 deletions(-) delete mode 100644 package/package_esp8266com_index.boards.json diff --git a/package/build_boards_manager_package.sh b/package/build_boards_manager_package.sh index 9ae65f077d..bb2b87c9d7 100755 --- a/package/build_boards_manager_package.sh +++ b/package/build_boards_manager_package.sh @@ -146,11 +146,7 @@ if [ ! -z "${DOC_URL}" ]; then .packages[0].platforms[0].help.online = \"${DOC_URL}\"" fi -jq_arg="${jq_arg} |\ - .packages[0].platforms[0].boards = "'$'"boards" - -jq --slurpfile boards ${srcdir}/package/package_esp8266com_index.boards.json \ - "${jq_arg}" ${srcdir}/package/package_esp8266com_index.template.json \ +jq "${jq_arg}" ${srcdir}/package/package_esp8266com_index.template.json \ > package_esp8266com_index.json # Use Github API token, if available diff --git a/package/package_esp8266com_index.boards.json b/package/package_esp8266com_index.boards.json deleted file mode 100644 index cde50a0579..0000000000 --- a/package/package_esp8266com_index.boards.json +++ /dev/null @@ -1,113 +0,0 @@ -[ - { - "name": "Generic ESP8266 Module" - }, - { - "name": "Generic ESP8285 Module" - }, - { - "name": "4D Systems gen4 IoD Range" - }, - { - "name": "Adafruit Feather HUZZAH ESP8266" - }, - { - "name": "Amperka WiFi Slot" - }, - { - "name": "Arduino" - }, - { - "name": "DOIT ESP-Mx DevKit (ESP8285)" - }, - { - "name": "Digistump Oak" - }, - { - "name": "ESPDuino (ESP-13 Module)" - }, - { - "name": "ESPectro Core" - }, - { - "name": "ESPino (ESP-12 Module)" - }, - { - "name": "ESPresso Lite 1.0" - }, - { - "name": "ESPresso Lite 2.0" - }, - { - "name": "ITEAD Sonoff" - }, - { - "name": "Invent One" - }, - { - "name": "LOLIN(WEMOS) D1 R2 & mini" - }, - { - "name": "LOLIN(WEMOS) D1 mini (clone)" - }, - { - "name": "LOLIN(WEMOS) D1 mini Lite" - }, - { - "name": "LOLIN(WEMOS) D1 mini Pro" - }, - { - "name": "LOLIN(WeMos) D1 R1" - }, - { - "name": "Lifely Agrumino Lemon v4" - }, - { - "name": "NodeMCU 0.9 (ESP-12 Module)" - }, - { - "name": "NodeMCU 1.0 (ESP-12E Module)" - }, - { - "name": "Olimex MOD-WIFI-ESP8266(-DEV)" - }, - { - "name": "Phoenix 1.0" - }, - { - "name": "Phoenix 2.0" - }, - { - "name": "Schirmilabs Eduino WiFi" - }, - { - "name": "Seeed Wio Link" - }, - { - "name": "SparkFun Blynk Board" - }, - { - "name": "SparkFun ESP8266 Thing" - }, - { - "name": "SparkFun ESP8266 Thing Dev" - }, - { - "name": "SweetPea ESP-210" - }, - { - "name": "ThaiEasyElec's ESPino" - }, - { - "name": "WiFi Kit 8" - }, - { - "name": "WiFiduino" - }, - { - "name": "WifInfo" - }, - { - "name": "XinaBox CW01" - } -] diff --git a/package/package_esp8266com_index.template.json b/package/package_esp8266com_index.template.json index 22a96d7540..9ec7b31680 100644 --- a/package/package_esp8266com_index.template.json +++ b/package/package_esp8266com_index.template.json @@ -16,7 +16,119 @@ "version": "", "architecture": "esp8266", "archiveFileName": "", - "boards": [], + "boards": [ + { + "name": "Generic ESP8266 Module" + }, + { + "name": "Generic ESP8285 Module" + }, + { + "name": "4D Systems gen4 IoD Range" + }, + { + "name": "Adafruit Feather HUZZAH ESP8266" + }, + { + "name": "Amperka WiFi Slot" + }, + { + "name": "Arduino" + }, + { + "name": "DOIT ESP-Mx DevKit (ESP8285)" + }, + { + "name": "Digistump Oak" + }, + { + "name": "ESPDuino (ESP-13 Module)" + }, + { + "name": "ESPectro Core" + }, + { + "name": "ESPino (ESP-12 Module)" + }, + { + "name": "ESPresso Lite 1.0" + }, + { + "name": "ESPresso Lite 2.0" + }, + { + "name": "ITEAD Sonoff" + }, + { + "name": "Invent One" + }, + { + "name": "LOLIN(WEMOS) D1 R2 & mini" + }, + { + "name": "LOLIN(WEMOS) D1 mini (clone)" + }, + { + "name": "LOLIN(WEMOS) D1 mini Lite" + }, + { + "name": "LOLIN(WEMOS) D1 mini Pro" + }, + { + "name": "LOLIN(WeMos) D1 R1" + }, + { + "name": "Lifely Agrumino Lemon v4" + }, + { + "name": "NodeMCU 0.9 (ESP-12 Module)" + }, + { + "name": "NodeMCU 1.0 (ESP-12E Module)" + }, + { + "name": "Olimex MOD-WIFI-ESP8266(-DEV)" + }, + { + "name": "Phoenix 1.0" + }, + { + "name": "Phoenix 2.0" + }, + { + "name": "Schirmilabs Eduino WiFi" + }, + { + "name": "Seeed Wio Link" + }, + { + "name": "SparkFun Blynk Board" + }, + { + "name": "SparkFun ESP8266 Thing" + }, + { + "name": "SparkFun ESP8266 Thing Dev" + }, + { + "name": "SweetPea ESP-210" + }, + { + "name": "ThaiEasyElec's ESPino" + }, + { + "name": "WiFi Kit 8" + }, + { + "name": "WiFiduino" + }, + { + "name": "WifInfo" + }, + { + "name": "XinaBox CW01" + } + ], "toolsDependencies": [ { "packager": "esp8266", @@ -268,4 +380,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/tools/boards.txt.py b/tools/boards.txt.py index cbd2a6e6a6..a2051edd25 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1279,13 +1279,11 @@ ], "desc": [ "ESP8266 based devices from ITEAD: Sonoff SV, Sonoff TH, Sonoff" - " Basic, " - + "and Sonoff S20", + " Basic, and Sonoff S20", "", "These are not development boards. The development process is " - + "inconvenient with these devices. When flashing firmware you" - " will " - + "need a Serial Adapter to connect it to your computer.", + "inconvenient with these devices. When flashing firmware you" + " will need a Serial Adapter to connect it to your computer.", "", " | Most of these devices, during normal operation, are" " connected to " @@ -2241,10 +2239,7 @@ def ldscript_name(*, flash_size, expected_fs_size, **kwargs): >>> ldscript_name(flash_size=Kilobytes(512), expected_fs_size=Bytes(0)) 'eagle.flash.512k.ld' """ - return ( - f"eagle.flash.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}.ld" - .lower() - ) + return f"eagle.flash.{humanize_flash(flash_size)}{humanize_fs(expected_fs_size)}.ld".lower() SPI_START = 0x40200000 @@ -2466,7 +2461,7 @@ def size(value): print(" dport0_0_seg : org = 0x3FF00000, len = 0x10") print(" dram0_0_seg : org = 0x3FFE8000, len = 0x14000") print( - f" irom0_0_seg : org = {address(sketch)}, len = 0x{sketch.size:x}" + f" irom0_0_seg : org = {address(sketch)}, len = 0x{sketch.size:x}" ) print("}") print() @@ -2877,20 +2872,23 @@ def show_names(boards): ################################################################ # boards .json -def package_generate(output, boards): + +def package_generate(output, package_file, boards): + with open(package_file, "r", encoding="utf-8") as f: + contents = json.load(f) + + contents["packages"][0]["platforms"][0]["boards"] = [ + {"name": board["name"]} for board in boards.values() + ] + with output: - print( - json.dumps( - [{"name": board["name"]} for board in boards.values()], - indent=3, - separators=(",", ": "), - ) - ) + json.dump(contents, sys.stdout, indent=3, separators=(",", ": ")) ################################################################ # boards .rst, here's the only place to use "desc" field + def doc_generate(output, boards): with output: print("Boards") @@ -2916,8 +2914,8 @@ def doc_generate(output, boards): ( "package", "package-file", - "package/package_esp8266com_index.boards.json", - "IDE package index boards list (.json)", + "package/package_esp8266com_index.template.json", + "IDE package index template (.json)", ), ("doc", "doc-file", "doc/boards.rst", "Boards documentation (.rst)"), ) @@ -3034,7 +3032,7 @@ def maybe_output(file): flashmap_generate(maybe_output(args.flashmap_file), all_flash_maps()) if "package" in generators: - package_generate(maybe_output(args.package_file), boards) + package_generate(maybe_output(args.package_file), args.package_file, boards) if "doc" in generators: doc_generate(maybe_output(args.doc_file), boards) @@ -3043,6 +3041,7 @@ def maybe_output(file): ################################################################ # entrypoint + def main(): args = parse_cmdline() From 6eb9edc78f740a850af7096477a60479a7870a51 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Wed, 13 Jul 2022 03:04:18 +0300 Subject: [PATCH 34/35] formatter does not like multiline strings --- tools/boards.txt.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/boards.txt.py b/tools/boards.txt.py index a2051edd25..b95b4a1217 100755 --- a/tools/boards.txt.py +++ b/tools/boards.txt.py @@ -1323,8 +1323,7 @@ ], "desc": [ "DOIT ESP-Mx DevKit - This is a development board by DOIT, with a" - " DOIT ESP-Mx module " - + "(`datasheet" + " DOIT ESP-Mx module " + "(`datasheet" " `__) " + "using a ESP8285 Chip. With the DOIT ESP-Mx module, GPIO pins 9" " and 10 are not available. " From 58b7a8006c9711fb2ece2ee2db5d023fc79e9633 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Wed, 13 Jul 2022 03:30:50 +0300 Subject: [PATCH 35/35] words --- doc/faq/a05-board-generator.rst | 43 +++++++++++++++------------------ 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/doc/faq/a05-board-generator.rst b/doc/faq/a05-board-generator.rst index 57f4de596e..bd7c916b2d 100644 --- a/doc/faq/a05-board-generator.rst +++ b/doc/faq/a05-board-generator.rst @@ -19,24 +19,22 @@ available in the IDE menu. How can I run the script ? ~~~~~~~~~~~~~~~~~~~~~~~~~~ -Python needs to be installed on your system. - -The script is located in the ``tools`` subdirectory of the core's root installation. -It needs to be run from the root directory, +Python needs to be installed on your system. Either call the script directly, or use specific `python` binary. +Running without any parameters will show a command line help. :: - $ tools/boards.txt.py + $ python tools/boards.txt.py + $ py -3 tools/boards.txt.py -:: - C:\...> tools\boards.txt.py - C:\...> py -3 tools\boards.txt.py +The Core location depends on your environment. For example, using Windows: + +* for Arduino IDE git installation, it is %USERPROFILE%\Documents\Arduino\hardware\esp8266com\esp8266\ -Running without parameters will show the command line help. They are -generally self-explanatory. Running with the parameters will show no output but will generate a new boards.txt file (and a backup boards.txt.orig). +* for Arduino IDE boards manager installation, it is usually %LOCALAPPDATA%\Arduino15\packages\esp8266\hardware\esp8266\VERSION\ -The core root directory varies depending on your development environment. In Windows, core root is found under your home directory; for Arduino it is in AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\ for PlatformIO it is in .platformio\packages\framework-arduinoespressif8266. +* for PlatformIO, it is either %USERPROFILE%\.platformio\packages\framework-arduinoespressif8266 or C:\.platformio What can I do with it ? @@ -50,9 +48,9 @@ As of today you can: * increase available flash space by disabling floats in ``*printf`` functions -* change led pin ``LED_BUILTIN`` for the two generic boards +* change led pin ``LED_BUILTIN`` for the generic boards -* create an abridged boards.txt file +* re-create boards.txt file with a different set of boards, or create a boards.local.txt When do I need to mess with it ? @@ -65,7 +63,7 @@ when possible. It needs to be edited for: board (definition, description) can be updated or added to the existing list. -* Memory mapping for ldscripts (flash and spiffs size combinations) +* Memory mapping for ldscripts (flash and filesystem size combinations) Why is my pull-request failing continuous-integration ? @@ -80,7 +78,7 @@ files and include them in the pull-request. :: ./tools/boards.txt.py generate --all - git add -u + git add -u -p git commit @@ -88,7 +86,7 @@ How to create an abridged boards.txt file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The list of boards presented by the IDE has gotten quite long. You can reduce -the ESP8266 boards shown by the IDE to a favorites list. This can +the number of ESP8266 boards used in the IDE with a favorites list. This can be done by generating a new boards.txt file using the ``--include `` or ``--exclude `` options. @@ -99,8 +97,7 @@ This command will write a list of supported board names to favorites.txt. ./tools/boards.txt.py names > favorites.txt -Edit favorites.txt, keeping the name of the boards you want generated in -boards.txt. +Edit favorites.txt, keeping only the names you want to keep. to generate a new abridged boards.txt run: @@ -109,8 +106,8 @@ to generate a new abridged boards.txt run: ./tools/boards.txt.py --include favorites.txt generate --boards -The commands below will generate a boards.txt file that omits the boards named -in favorites.txt, and generates a boards.local.txt that only contains boards +The commands below will overwrite the boards.txt file and omit every board named +in favorites.txt, and the next one will generate a boards.local.txt that only contains boards named in favorites.txt. :: @@ -122,11 +119,11 @@ Additional Notes: 1. Arduino IDE requires at least one board to be specified in boards.txt. -2. Using filter exclude you could omit ``generic`` and ``esp8285`` boards. +2. Using filtering you could omit our default boards - ``generic`` and ``esp8285``. -3. To avoid modifying any files, use ``--output=stdout`` and see the result in console output. +3. By default, generators will overwrite existing files. Use ``--output=stdout`` to redirect output to console. -4. Default ``--output=file`` behaviour is to simply over-write the target file(s). Use ``--output=file-with-orig`` to preserve them as ``.orig``. +4. Use ``--output=file-with-orig`` to preserve existing files as ``.orig``. 5. The boards in the boards.txt file will be in the order they were listed in your favorites file, specified by option ``--include ``. By default, boards are sorted alphabetically.