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

Use esptool.py to handle sketch upload, make python available on Windows, too (#5635)

* Add esptool.py, pyserial, and python to JSON

Add installation of python on Win32/Win64, and on all systems install
esptool.py and pyserial.

* Initial esptool.py upload test

* First successfull esptool.py upload

* Patch in verbose flag operation

* Replace esptool-ck.exe with Python equivalent

Remove need for binary esptool-ck.exe by implementing the same logic as
esptool-ck uses in Python.  Only image creation is supported, and only
in the Arduino standard mode (with its custom bootloader and ROM
layout).

* Remove all esptool-ck.exe, hook Windows Python

Remove all references to esptool-ck and use Python on Windows and Linux
for all recipes where possible.

* Use python to make core_version as well

Avoid ugly bash and CMD.exe tricks in platform.txt by using python to
make the core_version header.

* Rename conflicting script, clean up packager

* Windows test passes

Need to make sure Python2 and Python3 compatible and paths are munged
properly to avoid eaccidentally escaping things when calling esptool.py

Able to compile, build a BIN and upload via esptool.py on a Windows
machine without Python installed globally, only as part of the Arduino
tools package.

* Use github sources for pyserial

* Erase calibration or all flash before programming

Add back in erase support by calling esptool.py twice (since it does not
support chained operations like esptool-ck.exe).

* Make 460K default speed, remove 961K

961K doesn't seem to work with esptool, so make 460K the default upload
speed and remove 961K.

Even at this lower speed, esptool.py is much faster to upload (even
before taking into account the compression when doing things like SPIFFS
and code upload).

* Make erase and upload work again

Arduino does not support a upload.#.cmd pattern, so we need to do
everything in a single command line.  Make it cleaner by introducing a
Python wrapper script which will run the same executable with different
sets of commands (since we need to erase a block w/a separate invocation
from the real upload).

Update boards.txt to use the new options format, placing the esptool
command as "version" when there is no "erase_flash" or "erase_region" to
be done to keep things simple.

* Move esptool/pyserial to submodules

Since esptool.py and pyserial are coming directly from github repos,
there is no need to include them as a tool in package.json.

* Restore 921K upload opt, silent downgrade to 460k

To enable full backward compatibility, restore the 921k option for
upload speed but silently change it to 460k in the upload.py script.

Add error checking on upload.py
This commit is contained in:
Earle F. Philhower, III 2019-02-18 12:43:09 +00:00 committed by david gauchard
parent e7e7a4da17
commit 9790e1cb7c
12 changed files with 385 additions and 203 deletions

1
.gitignore vendored
View File

@ -1,7 +1,6 @@
.DS_Store .DS_Store
tools/dist/ tools/dist/
tools/xtensa-lx106-elf/ tools/xtensa-lx106-elf/
tools/esptool/
tools/mkspiffs/ tools/mkspiffs/
package/versions/ package/versions/
exclude.txt exclude.txt

6
.gitmodules vendored
View File

@ -7,3 +7,9 @@
[submodule "libraries/SoftwareSerial"] [submodule "libraries/SoftwareSerial"]
path = libraries/SoftwareSerial path = libraries/SoftwareSerial
url = https://github.com/plerup/espsoftwareserial.git url = https://github.com/plerup/espsoftwareserial.git
[submodule "tools/pyserial"]
path = tools/pyserial
url = https://github.com/pyserial/pyserial.git
[submodule "tools/esptool"]
path = tools/esptool
url = https://github.com/espressif/esptool.git

View File

@ -27,7 +27,7 @@ generic.build.board=ESP8266_GENERIC
generic.upload.tool=esptool generic.upload.tool=esptool
generic.upload.maximum_data_size=81920 generic.upload.maximum_data_size=81920
generic.upload.wait_for_upload_port=true generic.upload.wait_for_upload_port=true
generic.upload.erase_cmd= generic.upload.erase_cmd=version
generic.serial.disableDTR=true generic.serial.disableDTR=true
generic.serial.disableRTS=true generic.serial.disableRTS=true
generic.build.mcu=esp8266 generic.build.mcu=esp8266
@ -437,11 +437,11 @@ generic.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOO
generic.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG generic.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
generic.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG generic.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
generic.menu.wipe.none=Only Sketch generic.menu.wipe.none=Only Sketch
generic.menu.wipe.none.upload.erase_cmd= generic.menu.wipe.none.upload.erase_cmd=version
generic.menu.wipe.sdk=Sketch + WiFi Settings generic.menu.wipe.sdk=Sketch + WiFi Settings
generic.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 generic.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
generic.menu.wipe.all=All Flash Contents generic.menu.wipe.all=All Flash Contents
generic.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" generic.menu.wipe.all.upload.erase_cmd=erase_flash
generic.menu.baud.115200=115200 generic.menu.baud.115200=115200
generic.menu.baud.115200.upload.speed=115200 generic.menu.baud.115200.upload.speed=115200
generic.menu.baud.9600=9600 generic.menu.baud.9600=9600
@ -468,7 +468,7 @@ esp8285.build.variant=esp8285
esp8285.upload.tool=esptool esp8285.upload.tool=esptool
esp8285.upload.maximum_data_size=81920 esp8285.upload.maximum_data_size=81920
esp8285.upload.wait_for_upload_port=true esp8285.upload.wait_for_upload_port=true
esp8285.upload.erase_cmd= esp8285.upload.erase_cmd=version
esp8285.serial.disableDTR=true esp8285.serial.disableDTR=true
esp8285.serial.disableRTS=true esp8285.serial.disableRTS=true
esp8285.build.mcu=esp8266 esp8285.build.mcu=esp8266
@ -703,11 +703,11 @@ esp8285.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOO
esp8285.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG esp8285.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
esp8285.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG esp8285.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
esp8285.menu.wipe.none=Only Sketch esp8285.menu.wipe.none=Only Sketch
esp8285.menu.wipe.none.upload.erase_cmd= esp8285.menu.wipe.none.upload.erase_cmd=version
esp8285.menu.wipe.sdk=Sketch + WiFi Settings esp8285.menu.wipe.sdk=Sketch + WiFi Settings
esp8285.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 esp8285.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
esp8285.menu.wipe.all=All Flash Contents esp8285.menu.wipe.all=All Flash Contents
esp8285.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" esp8285.menu.wipe.all.upload.erase_cmd=erase_flash
esp8285.menu.baud.115200=115200 esp8285.menu.baud.115200=115200
esp8285.menu.baud.115200.upload.speed=115200 esp8285.menu.baud.115200.upload.speed=115200
esp8285.menu.baud.9600=9600 esp8285.menu.baud.9600=9600
@ -743,7 +743,7 @@ espduino.menu.UploadTool.espota.upload.tool=espota
espduino.upload.tool=esptool espduino.upload.tool=esptool
espduino.upload.maximum_data_size=81920 espduino.upload.maximum_data_size=81920
espduino.upload.wait_for_upload_port=true espduino.upload.wait_for_upload_port=true
espduino.upload.erase_cmd= espduino.upload.erase_cmd=version
espduino.serial.disableDTR=true espduino.serial.disableDTR=true
espduino.serial.disableRTS=true espduino.serial.disableRTS=true
espduino.build.mcu=esp8266 espduino.build.mcu=esp8266
@ -895,11 +895,11 @@ espduino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAO
espduino.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG espduino.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
espduino.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espduino.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
espduino.menu.wipe.none=Only Sketch espduino.menu.wipe.none=Only Sketch
espduino.menu.wipe.none.upload.erase_cmd= espduino.menu.wipe.none.upload.erase_cmd=version
espduino.menu.wipe.sdk=Sketch + WiFi Settings espduino.menu.wipe.sdk=Sketch + WiFi Settings
espduino.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 espduino.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
espduino.menu.wipe.all=All Flash Contents espduino.menu.wipe.all=All Flash Contents
espduino.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" espduino.menu.wipe.all.upload.erase_cmd=erase_flash
espduino.menu.baud.115200=115200 espduino.menu.baud.115200=115200
espduino.menu.baud.115200.upload.speed=115200 espduino.menu.baud.115200.upload.speed=115200
espduino.menu.baud.9600=9600 espduino.menu.baud.9600=9600
@ -926,7 +926,7 @@ huzzah.build.variant=adafruit
huzzah.upload.tool=esptool huzzah.upload.tool=esptool
huzzah.upload.maximum_data_size=81920 huzzah.upload.maximum_data_size=81920
huzzah.upload.wait_for_upload_port=true huzzah.upload.wait_for_upload_port=true
huzzah.upload.erase_cmd= huzzah.upload.erase_cmd=version
huzzah.serial.disableDTR=true huzzah.serial.disableDTR=true
huzzah.serial.disableRTS=true huzzah.serial.disableRTS=true
huzzah.build.mcu=esp8266 huzzah.build.mcu=esp8266
@ -1079,11 +1079,11 @@ huzzah.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM
huzzah.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG huzzah.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
huzzah.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG huzzah.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
huzzah.menu.wipe.none=Only Sketch huzzah.menu.wipe.none=Only Sketch
huzzah.menu.wipe.none.upload.erase_cmd= huzzah.menu.wipe.none.upload.erase_cmd=version
huzzah.menu.wipe.sdk=Sketch + WiFi Settings huzzah.menu.wipe.sdk=Sketch + WiFi Settings
huzzah.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 huzzah.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
huzzah.menu.wipe.all=All Flash Contents huzzah.menu.wipe.all=All Flash Contents
huzzah.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" huzzah.menu.wipe.all.upload.erase_cmd=erase_flash
huzzah.menu.baud.115200=115200 huzzah.menu.baud.115200=115200
huzzah.menu.baud.115200.upload.speed=115200 huzzah.menu.baud.115200.upload.speed=115200
huzzah.menu.baud.9600=9600 huzzah.menu.baud.9600=9600
@ -1110,7 +1110,7 @@ inventone.build.variant=inventone
inventone.upload.tool=esptool inventone.upload.tool=esptool
inventone.upload.maximum_data_size=81920 inventone.upload.maximum_data_size=81920
inventone.upload.wait_for_upload_port=true inventone.upload.wait_for_upload_port=true
inventone.upload.erase_cmd= inventone.upload.erase_cmd=version
inventone.serial.disableDTR=true inventone.serial.disableDTR=true
inventone.serial.disableRTS=true inventone.serial.disableRTS=true
inventone.build.mcu=esp8266 inventone.build.mcu=esp8266
@ -1263,11 +1263,11 @@ inventone.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA
inventone.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG inventone.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
inventone.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG inventone.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
inventone.menu.wipe.none=Only Sketch inventone.menu.wipe.none=Only Sketch
inventone.menu.wipe.none.upload.erase_cmd= inventone.menu.wipe.none.upload.erase_cmd=version
inventone.menu.wipe.sdk=Sketch + WiFi Settings inventone.menu.wipe.sdk=Sketch + WiFi Settings
inventone.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 inventone.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
inventone.menu.wipe.all=All Flash Contents inventone.menu.wipe.all=All Flash Contents
inventone.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" inventone.menu.wipe.all.upload.erase_cmd=erase_flash
inventone.menu.baud.115200=115200 inventone.menu.baud.115200=115200
inventone.menu.baud.115200.upload.speed=115200 inventone.menu.baud.115200.upload.speed=115200
inventone.menu.baud.9600=9600 inventone.menu.baud.9600=9600
@ -1294,7 +1294,7 @@ cw01.build.variant=xinabox
cw01.upload.tool=esptool cw01.upload.tool=esptool
cw01.upload.maximum_data_size=81920 cw01.upload.maximum_data_size=81920
cw01.upload.wait_for_upload_port=true cw01.upload.wait_for_upload_port=true
cw01.upload.erase_cmd= cw01.upload.erase_cmd=version
cw01.serial.disableDTR=true cw01.serial.disableDTR=true
cw01.serial.disableRTS=true cw01.serial.disableRTS=true
cw01.build.mcu=esp8266 cw01.build.mcu=esp8266
@ -1450,11 +1450,11 @@ cw01.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.b
cw01.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG cw01.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
cw01.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG cw01.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
cw01.menu.wipe.none=Only Sketch cw01.menu.wipe.none=Only Sketch
cw01.menu.wipe.none.upload.erase_cmd= cw01.menu.wipe.none.upload.erase_cmd=version
cw01.menu.wipe.sdk=Sketch + WiFi Settings cw01.menu.wipe.sdk=Sketch + WiFi Settings
cw01.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 cw01.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
cw01.menu.wipe.all=All Flash Contents cw01.menu.wipe.all=All Flash Contents
cw01.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" cw01.menu.wipe.all.upload.erase_cmd=erase_flash
cw01.menu.baud.115200=115200 cw01.menu.baud.115200=115200
cw01.menu.baud.115200.upload.speed=115200 cw01.menu.baud.115200.upload.speed=115200
cw01.menu.baud.9600=9600 cw01.menu.baud.9600=9600
@ -1481,7 +1481,7 @@ espresso_lite_v1.build.variant=espresso_lite_v1
espresso_lite_v1.upload.tool=esptool espresso_lite_v1.upload.tool=esptool
espresso_lite_v1.upload.maximum_data_size=81920 espresso_lite_v1.upload.maximum_data_size=81920
espresso_lite_v1.upload.wait_for_upload_port=true espresso_lite_v1.upload.wait_for_upload_port=true
espresso_lite_v1.upload.erase_cmd= espresso_lite_v1.upload.erase_cmd=version
espresso_lite_v1.serial.disableDTR=true espresso_lite_v1.serial.disableDTR=true
espresso_lite_v1.serial.disableRTS=true espresso_lite_v1.serial.disableRTS=true
espresso_lite_v1.build.mcu=esp8266 espresso_lite_v1.build.mcu=esp8266
@ -1637,11 +1637,11 @@ espresso_lite_v1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPD
espresso_lite_v1.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG 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.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
espresso_lite_v1.menu.wipe.none=Only Sketch espresso_lite_v1.menu.wipe.none=Only Sketch
espresso_lite_v1.menu.wipe.none.upload.erase_cmd= espresso_lite_v1.menu.wipe.none.upload.erase_cmd=version
espresso_lite_v1.menu.wipe.sdk=Sketch + WiFi Settings espresso_lite_v1.menu.wipe.sdk=Sketch + WiFi Settings
espresso_lite_v1.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 espresso_lite_v1.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
espresso_lite_v1.menu.wipe.all=All Flash Contents espresso_lite_v1.menu.wipe.all=All Flash Contents
espresso_lite_v1.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" espresso_lite_v1.menu.wipe.all.upload.erase_cmd=erase_flash
espresso_lite_v1.menu.baud.115200=115200 espresso_lite_v1.menu.baud.115200=115200
espresso_lite_v1.menu.baud.115200.upload.speed=115200 espresso_lite_v1.menu.baud.115200.upload.speed=115200
espresso_lite_v1.menu.baud.9600=9600 espresso_lite_v1.menu.baud.9600=9600
@ -1668,7 +1668,7 @@ espresso_lite_v2.build.variant=espresso_lite_v2
espresso_lite_v2.upload.tool=esptool espresso_lite_v2.upload.tool=esptool
espresso_lite_v2.upload.maximum_data_size=81920 espresso_lite_v2.upload.maximum_data_size=81920
espresso_lite_v2.upload.wait_for_upload_port=true espresso_lite_v2.upload.wait_for_upload_port=true
espresso_lite_v2.upload.erase_cmd= espresso_lite_v2.upload.erase_cmd=version
espresso_lite_v2.serial.disableDTR=true espresso_lite_v2.serial.disableDTR=true
espresso_lite_v2.serial.disableRTS=true espresso_lite_v2.serial.disableRTS=true
espresso_lite_v2.build.mcu=esp8266 espresso_lite_v2.build.mcu=esp8266
@ -1824,11 +1824,11 @@ espresso_lite_v2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPD
espresso_lite_v2.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG 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.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
espresso_lite_v2.menu.wipe.none=Only Sketch espresso_lite_v2.menu.wipe.none=Only Sketch
espresso_lite_v2.menu.wipe.none.upload.erase_cmd= espresso_lite_v2.menu.wipe.none.upload.erase_cmd=version
espresso_lite_v2.menu.wipe.sdk=Sketch + WiFi Settings espresso_lite_v2.menu.wipe.sdk=Sketch + WiFi Settings
espresso_lite_v2.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 espresso_lite_v2.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
espresso_lite_v2.menu.wipe.all=All Flash Contents espresso_lite_v2.menu.wipe.all=All Flash Contents
espresso_lite_v2.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" espresso_lite_v2.menu.wipe.all.upload.erase_cmd=erase_flash
espresso_lite_v2.menu.baud.115200=115200 espresso_lite_v2.menu.baud.115200=115200
espresso_lite_v2.menu.baud.115200.upload.speed=115200 espresso_lite_v2.menu.baud.115200.upload.speed=115200
espresso_lite_v2.menu.baud.9600=9600 espresso_lite_v2.menu.baud.9600=9600
@ -1855,7 +1855,7 @@ phoenix_v1.build.variant=phoenix_v1
phoenix_v1.upload.tool=esptool phoenix_v1.upload.tool=esptool
phoenix_v1.upload.maximum_data_size=81920 phoenix_v1.upload.maximum_data_size=81920
phoenix_v1.upload.wait_for_upload_port=true phoenix_v1.upload.wait_for_upload_port=true
phoenix_v1.upload.erase_cmd= phoenix_v1.upload.erase_cmd=version
phoenix_v1.serial.disableDTR=true phoenix_v1.serial.disableDTR=true
phoenix_v1.serial.disableRTS=true phoenix_v1.serial.disableRTS=true
phoenix_v1.build.mcu=esp8266 phoenix_v1.build.mcu=esp8266
@ -2011,11 +2011,11 @@ phoenix_v1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROT
phoenix_v1.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG phoenix_v1.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
phoenix_v1.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG phoenix_v1.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
phoenix_v1.menu.wipe.none=Only Sketch phoenix_v1.menu.wipe.none=Only Sketch
phoenix_v1.menu.wipe.none.upload.erase_cmd= phoenix_v1.menu.wipe.none.upload.erase_cmd=version
phoenix_v1.menu.wipe.sdk=Sketch + WiFi Settings phoenix_v1.menu.wipe.sdk=Sketch + WiFi Settings
phoenix_v1.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 phoenix_v1.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
phoenix_v1.menu.wipe.all=All Flash Contents phoenix_v1.menu.wipe.all=All Flash Contents
phoenix_v1.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" phoenix_v1.menu.wipe.all.upload.erase_cmd=erase_flash
phoenix_v1.menu.baud.115200=115200 phoenix_v1.menu.baud.115200=115200
phoenix_v1.menu.baud.115200.upload.speed=115200 phoenix_v1.menu.baud.115200.upload.speed=115200
phoenix_v1.menu.baud.9600=9600 phoenix_v1.menu.baud.9600=9600
@ -2042,7 +2042,7 @@ phoenix_v2.build.variant=phoenix_v2
phoenix_v2.upload.tool=esptool phoenix_v2.upload.tool=esptool
phoenix_v2.upload.maximum_data_size=81920 phoenix_v2.upload.maximum_data_size=81920
phoenix_v2.upload.wait_for_upload_port=true phoenix_v2.upload.wait_for_upload_port=true
phoenix_v2.upload.erase_cmd= phoenix_v2.upload.erase_cmd=version
phoenix_v2.serial.disableDTR=true phoenix_v2.serial.disableDTR=true
phoenix_v2.serial.disableRTS=true phoenix_v2.serial.disableRTS=true
phoenix_v2.build.mcu=esp8266 phoenix_v2.build.mcu=esp8266
@ -2198,11 +2198,11 @@ phoenix_v2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROT
phoenix_v2.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG phoenix_v2.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
phoenix_v2.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG phoenix_v2.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
phoenix_v2.menu.wipe.none=Only Sketch phoenix_v2.menu.wipe.none=Only Sketch
phoenix_v2.menu.wipe.none.upload.erase_cmd= phoenix_v2.menu.wipe.none.upload.erase_cmd=version
phoenix_v2.menu.wipe.sdk=Sketch + WiFi Settings phoenix_v2.menu.wipe.sdk=Sketch + WiFi Settings
phoenix_v2.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 phoenix_v2.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
phoenix_v2.menu.wipe.all=All Flash Contents phoenix_v2.menu.wipe.all=All Flash Contents
phoenix_v2.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" phoenix_v2.menu.wipe.all.upload.erase_cmd=erase_flash
phoenix_v2.menu.baud.115200=115200 phoenix_v2.menu.baud.115200=115200
phoenix_v2.menu.baud.115200.upload.speed=115200 phoenix_v2.menu.baud.115200.upload.speed=115200
phoenix_v2.menu.baud.9600=9600 phoenix_v2.menu.baud.9600=9600
@ -2229,7 +2229,7 @@ nodemcu.build.variant=nodemcu
nodemcu.upload.tool=esptool nodemcu.upload.tool=esptool
nodemcu.upload.maximum_data_size=81920 nodemcu.upload.maximum_data_size=81920
nodemcu.upload.wait_for_upload_port=true nodemcu.upload.wait_for_upload_port=true
nodemcu.upload.erase_cmd= nodemcu.upload.erase_cmd=version
nodemcu.serial.disableDTR=true nodemcu.serial.disableDTR=true
nodemcu.serial.disableRTS=true nodemcu.serial.disableRTS=true
nodemcu.build.mcu=esp8266 nodemcu.build.mcu=esp8266
@ -2382,11 +2382,11 @@ nodemcu.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOO
nodemcu.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG nodemcu.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
nodemcu.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG nodemcu.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
nodemcu.menu.wipe.none=Only Sketch nodemcu.menu.wipe.none=Only Sketch
nodemcu.menu.wipe.none.upload.erase_cmd= nodemcu.menu.wipe.none.upload.erase_cmd=version
nodemcu.menu.wipe.sdk=Sketch + WiFi Settings nodemcu.menu.wipe.sdk=Sketch + WiFi Settings
nodemcu.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 nodemcu.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
nodemcu.menu.wipe.all=All Flash Contents nodemcu.menu.wipe.all=All Flash Contents
nodemcu.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" nodemcu.menu.wipe.all.upload.erase_cmd=erase_flash
nodemcu.menu.baud.115200=115200 nodemcu.menu.baud.115200=115200
nodemcu.menu.baud.115200.upload.speed=115200 nodemcu.menu.baud.115200.upload.speed=115200
nodemcu.menu.baud.9600=9600 nodemcu.menu.baud.9600=9600
@ -2413,7 +2413,7 @@ nodemcuv2.build.variant=nodemcu
nodemcuv2.upload.tool=esptool nodemcuv2.upload.tool=esptool
nodemcuv2.upload.maximum_data_size=81920 nodemcuv2.upload.maximum_data_size=81920
nodemcuv2.upload.wait_for_upload_port=true nodemcuv2.upload.wait_for_upload_port=true
nodemcuv2.upload.erase_cmd= nodemcuv2.upload.erase_cmd=version
nodemcuv2.serial.disableDTR=true nodemcuv2.serial.disableDTR=true
nodemcuv2.serial.disableRTS=true nodemcuv2.serial.disableRTS=true
nodemcuv2.build.mcu=esp8266 nodemcuv2.build.mcu=esp8266
@ -2566,11 +2566,11 @@ nodemcuv2.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA
nodemcuv2.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG nodemcuv2.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
nodemcuv2.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG nodemcuv2.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
nodemcuv2.menu.wipe.none=Only Sketch nodemcuv2.menu.wipe.none=Only Sketch
nodemcuv2.menu.wipe.none.upload.erase_cmd= nodemcuv2.menu.wipe.none.upload.erase_cmd=version
nodemcuv2.menu.wipe.sdk=Sketch + WiFi Settings nodemcuv2.menu.wipe.sdk=Sketch + WiFi Settings
nodemcuv2.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 nodemcuv2.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
nodemcuv2.menu.wipe.all=All Flash Contents nodemcuv2.menu.wipe.all=All Flash Contents
nodemcuv2.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" nodemcuv2.menu.wipe.all.upload.erase_cmd=erase_flash
nodemcuv2.menu.baud.115200=115200 nodemcuv2.menu.baud.115200=115200
nodemcuv2.menu.baud.115200.upload.speed=115200 nodemcuv2.menu.baud.115200.upload.speed=115200
nodemcuv2.menu.baud.9600=9600 nodemcuv2.menu.baud.9600=9600
@ -2597,7 +2597,7 @@ modwifi.build.variant=modwifi
modwifi.upload.tool=esptool modwifi.upload.tool=esptool
modwifi.upload.maximum_data_size=81920 modwifi.upload.maximum_data_size=81920
modwifi.upload.wait_for_upload_port=true modwifi.upload.wait_for_upload_port=true
modwifi.upload.erase_cmd= modwifi.upload.erase_cmd=version
modwifi.serial.disableDTR=true modwifi.serial.disableDTR=true
modwifi.serial.disableRTS=true modwifi.serial.disableRTS=true
modwifi.build.mcu=esp8266 modwifi.build.mcu=esp8266
@ -2760,11 +2760,11 @@ modwifi.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOO
modwifi.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG modwifi.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
modwifi.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG modwifi.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
modwifi.menu.wipe.none=Only Sketch modwifi.menu.wipe.none=Only Sketch
modwifi.menu.wipe.none.upload.erase_cmd= modwifi.menu.wipe.none.upload.erase_cmd=version
modwifi.menu.wipe.sdk=Sketch + WiFi Settings modwifi.menu.wipe.sdk=Sketch + WiFi Settings
modwifi.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 modwifi.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
modwifi.menu.wipe.all=All Flash Contents modwifi.menu.wipe.all=All Flash Contents
modwifi.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" modwifi.menu.wipe.all.upload.erase_cmd=erase_flash
modwifi.menu.baud.115200=115200 modwifi.menu.baud.115200=115200
modwifi.menu.baud.115200.upload.speed=115200 modwifi.menu.baud.115200.upload.speed=115200
modwifi.menu.baud.9600=9600 modwifi.menu.baud.9600=9600
@ -2791,7 +2791,7 @@ thing.build.variant=thing
thing.upload.tool=esptool thing.upload.tool=esptool
thing.upload.maximum_data_size=81920 thing.upload.maximum_data_size=81920
thing.upload.wait_for_upload_port=true thing.upload.wait_for_upload_port=true
thing.upload.erase_cmd= thing.upload.erase_cmd=version
thing.serial.disableDTR=true thing.serial.disableDTR=true
thing.serial.disableRTS=true thing.serial.disableRTS=true
thing.build.mcu=esp8266 thing.build.mcu=esp8266
@ -2944,11 +2944,11 @@ thing.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.
thing.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG thing.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
thing.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG thing.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
thing.menu.wipe.none=Only Sketch thing.menu.wipe.none=Only Sketch
thing.menu.wipe.none.upload.erase_cmd= thing.menu.wipe.none.upload.erase_cmd=version
thing.menu.wipe.sdk=Sketch + WiFi Settings thing.menu.wipe.sdk=Sketch + WiFi Settings
thing.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 thing.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
thing.menu.wipe.all=All Flash Contents thing.menu.wipe.all=All Flash Contents
thing.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" thing.menu.wipe.all.upload.erase_cmd=erase_flash
thing.menu.baud.115200=115200 thing.menu.baud.115200=115200
thing.menu.baud.115200.upload.speed=115200 thing.menu.baud.115200.upload.speed=115200
thing.menu.baud.9600=9600 thing.menu.baud.9600=9600
@ -2975,7 +2975,7 @@ thingdev.build.variant=thing
thingdev.upload.tool=esptool thingdev.upload.tool=esptool
thingdev.upload.maximum_data_size=81920 thingdev.upload.maximum_data_size=81920
thingdev.upload.wait_for_upload_port=true thingdev.upload.wait_for_upload_port=true
thingdev.upload.erase_cmd= thingdev.upload.erase_cmd=version
thingdev.serial.disableDTR=true thingdev.serial.disableDTR=true
thingdev.serial.disableRTS=true thingdev.serial.disableRTS=true
thingdev.build.mcu=esp8266 thingdev.build.mcu=esp8266
@ -3128,11 +3128,11 @@ thingdev.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAO
thingdev.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG thingdev.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
thingdev.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG thingdev.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
thingdev.menu.wipe.none=Only Sketch thingdev.menu.wipe.none=Only Sketch
thingdev.menu.wipe.none.upload.erase_cmd= thingdev.menu.wipe.none.upload.erase_cmd=version
thingdev.menu.wipe.sdk=Sketch + WiFi Settings thingdev.menu.wipe.sdk=Sketch + WiFi Settings
thingdev.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 thingdev.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
thingdev.menu.wipe.all=All Flash Contents thingdev.menu.wipe.all=All Flash Contents
thingdev.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" thingdev.menu.wipe.all.upload.erase_cmd=erase_flash
thingdev.menu.baud.115200=115200 thingdev.menu.baud.115200=115200
thingdev.menu.baud.115200.upload.speed=115200 thingdev.menu.baud.115200.upload.speed=115200
thingdev.menu.baud.9600=9600 thingdev.menu.baud.9600=9600
@ -3158,7 +3158,7 @@ esp210.build.board=ESP8266_ESP210
esp210.upload.tool=esptool esp210.upload.tool=esptool
esp210.upload.maximum_data_size=81920 esp210.upload.maximum_data_size=81920
esp210.upload.wait_for_upload_port=true esp210.upload.wait_for_upload_port=true
esp210.upload.erase_cmd= esp210.upload.erase_cmd=version
esp210.serial.disableDTR=true esp210.serial.disableDTR=true
esp210.serial.disableRTS=true esp210.serial.disableRTS=true
esp210.build.mcu=esp8266 esp210.build.mcu=esp8266
@ -3312,11 +3312,11 @@ esp210.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM
esp210.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG esp210.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
esp210.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG esp210.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
esp210.menu.wipe.none=Only Sketch esp210.menu.wipe.none=Only Sketch
esp210.menu.wipe.none.upload.erase_cmd= esp210.menu.wipe.none.upload.erase_cmd=version
esp210.menu.wipe.sdk=Sketch + WiFi Settings esp210.menu.wipe.sdk=Sketch + WiFi Settings
esp210.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 esp210.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
esp210.menu.wipe.all=All Flash Contents esp210.menu.wipe.all=All Flash Contents
esp210.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" esp210.menu.wipe.all.upload.erase_cmd=erase_flash
esp210.menu.baud.57600=57600 esp210.menu.baud.57600=57600
esp210.menu.baud.57600.upload.speed=57600 esp210.menu.baud.57600.upload.speed=57600
esp210.menu.baud.9600=9600 esp210.menu.baud.9600=9600
@ -3343,7 +3343,7 @@ d1_mini.build.variant=d1_mini
d1_mini.upload.tool=esptool d1_mini.upload.tool=esptool
d1_mini.upload.maximum_data_size=81920 d1_mini.upload.maximum_data_size=81920
d1_mini.upload.wait_for_upload_port=true d1_mini.upload.wait_for_upload_port=true
d1_mini.upload.erase_cmd= d1_mini.upload.erase_cmd=version
d1_mini.serial.disableDTR=true d1_mini.serial.disableDTR=true
d1_mini.serial.disableRTS=true d1_mini.serial.disableRTS=true
d1_mini.build.mcu=esp8266 d1_mini.build.mcu=esp8266
@ -3496,11 +3496,11 @@ d1_mini.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOO
d1_mini.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG d1_mini.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
d1_mini.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG d1_mini.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
d1_mini.menu.wipe.none=Only Sketch d1_mini.menu.wipe.none=Only Sketch
d1_mini.menu.wipe.none.upload.erase_cmd= d1_mini.menu.wipe.none.upload.erase_cmd=version
d1_mini.menu.wipe.sdk=Sketch + WiFi Settings d1_mini.menu.wipe.sdk=Sketch + WiFi Settings
d1_mini.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 d1_mini.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
d1_mini.menu.wipe.all=All Flash Contents d1_mini.menu.wipe.all=All Flash Contents
d1_mini.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" d1_mini.menu.wipe.all.upload.erase_cmd=erase_flash
d1_mini.menu.baud.921600=921600 d1_mini.menu.baud.921600=921600
d1_mini.menu.baud.921600.upload.speed=921600 d1_mini.menu.baud.921600.upload.speed=921600
d1_mini.menu.baud.9600=9600 d1_mini.menu.baud.9600=9600
@ -3527,7 +3527,7 @@ d1_mini_pro.build.variant=d1_mini
d1_mini_pro.upload.tool=esptool d1_mini_pro.upload.tool=esptool
d1_mini_pro.upload.maximum_data_size=81920 d1_mini_pro.upload.maximum_data_size=81920
d1_mini_pro.upload.wait_for_upload_port=true d1_mini_pro.upload.wait_for_upload_port=true
d1_mini_pro.upload.erase_cmd= d1_mini_pro.upload.erase_cmd=version
d1_mini_pro.serial.disableDTR=true d1_mini_pro.serial.disableDTR=true
d1_mini_pro.serial.disableRTS=true d1_mini_pro.serial.disableRTS=true
d1_mini_pro.build.mcu=esp8266 d1_mini_pro.build.mcu=esp8266
@ -3663,11 +3663,11 @@ d1_mini_pro.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATERO
d1_mini_pro.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG 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.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
d1_mini_pro.menu.wipe.none=Only Sketch d1_mini_pro.menu.wipe.none=Only Sketch
d1_mini_pro.menu.wipe.none.upload.erase_cmd= d1_mini_pro.menu.wipe.none.upload.erase_cmd=version
d1_mini_pro.menu.wipe.sdk=Sketch + WiFi Settings d1_mini_pro.menu.wipe.sdk=Sketch + WiFi Settings
d1_mini_pro.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 d1_mini_pro.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
d1_mini_pro.menu.wipe.all=All Flash Contents d1_mini_pro.menu.wipe.all=All Flash Contents
d1_mini_pro.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" d1_mini_pro.menu.wipe.all.upload.erase_cmd=erase_flash
d1_mini_pro.menu.baud.921600=921600 d1_mini_pro.menu.baud.921600=921600
d1_mini_pro.menu.baud.921600.upload.speed=921600 d1_mini_pro.menu.baud.921600.upload.speed=921600
d1_mini_pro.menu.baud.9600=9600 d1_mini_pro.menu.baud.9600=9600
@ -3694,7 +3694,7 @@ d1_mini_lite.build.variant=d1_mini
d1_mini_lite.upload.tool=esptool d1_mini_lite.upload.tool=esptool
d1_mini_lite.upload.maximum_data_size=81920 d1_mini_lite.upload.maximum_data_size=81920
d1_mini_lite.upload.wait_for_upload_port=true d1_mini_lite.upload.wait_for_upload_port=true
d1_mini_lite.upload.erase_cmd= d1_mini_lite.upload.erase_cmd=version
d1_mini_lite.serial.disableDTR=true d1_mini_lite.serial.disableDTR=true
d1_mini_lite.serial.disableRTS=true d1_mini_lite.serial.disableRTS=true
d1_mini_lite.build.mcu=esp8266 d1_mini_lite.build.mcu=esp8266
@ -3887,11 +3887,11 @@ d1_mini_lite.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATER
d1_mini_lite.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG 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.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
d1_mini_lite.menu.wipe.none=Only Sketch d1_mini_lite.menu.wipe.none=Only Sketch
d1_mini_lite.menu.wipe.none.upload.erase_cmd= d1_mini_lite.menu.wipe.none.upload.erase_cmd=version
d1_mini_lite.menu.wipe.sdk=Sketch + WiFi Settings d1_mini_lite.menu.wipe.sdk=Sketch + WiFi Settings
d1_mini_lite.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 d1_mini_lite.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
d1_mini_lite.menu.wipe.all=All Flash Contents d1_mini_lite.menu.wipe.all=All Flash Contents
d1_mini_lite.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" d1_mini_lite.menu.wipe.all.upload.erase_cmd=erase_flash
d1_mini_lite.menu.baud.921600=921600 d1_mini_lite.menu.baud.921600=921600
d1_mini_lite.menu.baud.921600.upload.speed=921600 d1_mini_lite.menu.baud.921600.upload.speed=921600
d1_mini_lite.menu.baud.9600=9600 d1_mini_lite.menu.baud.9600=9600
@ -3918,7 +3918,7 @@ d1.build.variant=d1
d1.upload.tool=esptool d1.upload.tool=esptool
d1.upload.maximum_data_size=81920 d1.upload.maximum_data_size=81920
d1.upload.wait_for_upload_port=true d1.upload.wait_for_upload_port=true
d1.upload.erase_cmd= d1.upload.erase_cmd=version
d1.serial.disableDTR=true d1.serial.disableDTR=true
d1.serial.disableRTS=true d1.serial.disableRTS=true
d1.build.mcu=esp8266 d1.build.mcu=esp8266
@ -4071,11 +4071,11 @@ d1.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.bui
d1.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG d1.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
d1.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG d1.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
d1.menu.wipe.none=Only Sketch d1.menu.wipe.none=Only Sketch
d1.menu.wipe.none.upload.erase_cmd= d1.menu.wipe.none.upload.erase_cmd=version
d1.menu.wipe.sdk=Sketch + WiFi Settings d1.menu.wipe.sdk=Sketch + WiFi Settings
d1.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 d1.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
d1.menu.wipe.all=All Flash Contents d1.menu.wipe.all=All Flash Contents
d1.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" d1.menu.wipe.all.upload.erase_cmd=erase_flash
d1.menu.baud.921600=921600 d1.menu.baud.921600=921600
d1.menu.baud.921600.upload.speed=921600 d1.menu.baud.921600.upload.speed=921600
d1.menu.baud.9600=9600 d1.menu.baud.9600=9600
@ -4102,7 +4102,7 @@ espino.build.variant=espino
espino.upload.tool=esptool espino.upload.tool=esptool
espino.upload.maximum_data_size=81920 espino.upload.maximum_data_size=81920
espino.upload.wait_for_upload_port=true espino.upload.wait_for_upload_port=true
espino.upload.erase_cmd= espino.upload.erase_cmd=version
espino.serial.disableDTR=true espino.serial.disableDTR=true
espino.serial.disableRTS=true espino.serial.disableRTS=true
espino.build.mcu=esp8266 espino.build.mcu=esp8266
@ -4258,11 +4258,11 @@ espino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM
espino.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG espino.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
espino.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espino.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
espino.menu.wipe.none=Only Sketch espino.menu.wipe.none=Only Sketch
espino.menu.wipe.none.upload.erase_cmd= espino.menu.wipe.none.upload.erase_cmd=version
espino.menu.wipe.sdk=Sketch + WiFi Settings espino.menu.wipe.sdk=Sketch + WiFi Settings
espino.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 espino.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
espino.menu.wipe.all=All Flash Contents espino.menu.wipe.all=All Flash Contents
espino.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" espino.menu.wipe.all.upload.erase_cmd=erase_flash
espino.menu.baud.115200=115200 espino.menu.baud.115200=115200
espino.menu.baud.115200.upload.speed=115200 espino.menu.baud.115200.upload.speed=115200
espino.menu.baud.9600=9600 espino.menu.baud.9600=9600
@ -4289,7 +4289,7 @@ espinotee.build.variant=espinotee
espinotee.upload.tool=esptool espinotee.upload.tool=esptool
espinotee.upload.maximum_data_size=81920 espinotee.upload.maximum_data_size=81920
espinotee.upload.wait_for_upload_port=true espinotee.upload.wait_for_upload_port=true
espinotee.upload.erase_cmd= espinotee.upload.erase_cmd=version
espinotee.serial.disableDTR=true espinotee.serial.disableDTR=true
espinotee.serial.disableRTS=true espinotee.serial.disableRTS=true
espinotee.build.mcu=esp8266 espinotee.build.mcu=esp8266
@ -4442,11 +4442,11 @@ espinotee.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA
espinotee.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG espinotee.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
espinotee.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espinotee.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
espinotee.menu.wipe.none=Only Sketch espinotee.menu.wipe.none=Only Sketch
espinotee.menu.wipe.none.upload.erase_cmd= espinotee.menu.wipe.none.upload.erase_cmd=version
espinotee.menu.wipe.sdk=Sketch + WiFi Settings espinotee.menu.wipe.sdk=Sketch + WiFi Settings
espinotee.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 espinotee.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
espinotee.menu.wipe.all=All Flash Contents espinotee.menu.wipe.all=All Flash Contents
espinotee.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" espinotee.menu.wipe.all.upload.erase_cmd=erase_flash
espinotee.menu.baud.115200=115200 espinotee.menu.baud.115200=115200
espinotee.menu.baud.115200.upload.speed=115200 espinotee.menu.baud.115200.upload.speed=115200
espinotee.menu.baud.9600=9600 espinotee.menu.baud.9600=9600
@ -4490,7 +4490,7 @@ wifinfo.menu.ESPModule.ESP07192.upload.maximum_size=827376
wifinfo.upload.tool=esptool wifinfo.upload.tool=esptool
wifinfo.upload.maximum_data_size=81920 wifinfo.upload.maximum_data_size=81920
wifinfo.upload.wait_for_upload_port=true wifinfo.upload.wait_for_upload_port=true
wifinfo.upload.erase_cmd= wifinfo.upload.erase_cmd=version
wifinfo.serial.disableDTR=true wifinfo.serial.disableDTR=true
wifinfo.serial.disableRTS=true wifinfo.serial.disableRTS=true
wifinfo.build.mcu=esp8266 wifinfo.build.mcu=esp8266
@ -4686,11 +4686,11 @@ wifinfo.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOO
wifinfo.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG wifinfo.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
wifinfo.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG wifinfo.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
wifinfo.menu.wipe.none=Only Sketch wifinfo.menu.wipe.none=Only Sketch
wifinfo.menu.wipe.none.upload.erase_cmd= wifinfo.menu.wipe.none.upload.erase_cmd=version
wifinfo.menu.wipe.sdk=Sketch + WiFi Settings wifinfo.menu.wipe.sdk=Sketch + WiFi Settings
wifinfo.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 wifinfo.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
wifinfo.menu.wipe.all=All Flash Contents wifinfo.menu.wipe.all=All Flash Contents
wifinfo.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" wifinfo.menu.wipe.all.upload.erase_cmd=erase_flash
wifinfo.menu.baud.115200=115200 wifinfo.menu.baud.115200=115200
wifinfo.menu.baud.115200.upload.speed=115200 wifinfo.menu.baud.115200.upload.speed=115200
wifinfo.menu.baud.9600=9600 wifinfo.menu.baud.9600=9600
@ -4728,7 +4728,7 @@ arduino-esp8266.menu.BoardModel.unowifideved=Uno WiFi
arduino-esp8266.upload.tool=esptool arduino-esp8266.upload.tool=esptool
arduino-esp8266.upload.maximum_data_size=81920 arduino-esp8266.upload.maximum_data_size=81920
arduino-esp8266.upload.wait_for_upload_port=true arduino-esp8266.upload.wait_for_upload_port=true
arduino-esp8266.upload.erase_cmd= arduino-esp8266.upload.erase_cmd=version
arduino-esp8266.serial.disableDTR=true arduino-esp8266.serial.disableDTR=true
arduino-esp8266.serial.disableRTS=true arduino-esp8266.serial.disableRTS=true
arduino-esp8266.build.mcu=esp8266 arduino-esp8266.build.mcu=esp8266
@ -4882,11 +4882,11 @@ arduino-esp8266.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDA
arduino-esp8266.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG arduino-esp8266.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
arduino-esp8266.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG arduino-esp8266.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
arduino-esp8266.menu.wipe.none=Only Sketch arduino-esp8266.menu.wipe.none=Only Sketch
arduino-esp8266.menu.wipe.none.upload.erase_cmd= arduino-esp8266.menu.wipe.none.upload.erase_cmd=version
arduino-esp8266.menu.wipe.sdk=Sketch + WiFi Settings arduino-esp8266.menu.wipe.sdk=Sketch + WiFi Settings
arduino-esp8266.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 arduino-esp8266.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
arduino-esp8266.menu.wipe.all=All Flash Contents arduino-esp8266.menu.wipe.all=All Flash Contents
arduino-esp8266.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" arduino-esp8266.menu.wipe.all.upload.erase_cmd=erase_flash
arduino-esp8266.menu.baud.115200=115200 arduino-esp8266.menu.baud.115200=115200
arduino-esp8266.menu.baud.115200.upload.speed=115200 arduino-esp8266.menu.baud.115200.upload.speed=115200
arduino-esp8266.menu.baud.9600=9600 arduino-esp8266.menu.baud.9600=9600
@ -4914,7 +4914,7 @@ gen4iod.build.variant=generic
gen4iod.upload.tool=esptool gen4iod.upload.tool=esptool
gen4iod.upload.maximum_data_size=81920 gen4iod.upload.maximum_data_size=81920
gen4iod.upload.wait_for_upload_port=true gen4iod.upload.wait_for_upload_port=true
gen4iod.upload.erase_cmd= gen4iod.upload.erase_cmd=version
gen4iod.serial.disableDTR=true gen4iod.serial.disableDTR=true
gen4iod.serial.disableRTS=true gen4iod.serial.disableRTS=true
gen4iod.build.mcu=esp8266 gen4iod.build.mcu=esp8266
@ -5067,11 +5067,11 @@ gen4iod.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOO
gen4iod.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG gen4iod.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
gen4iod.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG gen4iod.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
gen4iod.menu.wipe.none=Only Sketch gen4iod.menu.wipe.none=Only Sketch
gen4iod.menu.wipe.none.upload.erase_cmd= gen4iod.menu.wipe.none.upload.erase_cmd=version
gen4iod.menu.wipe.sdk=Sketch + WiFi Settings gen4iod.menu.wipe.sdk=Sketch + WiFi Settings
gen4iod.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 gen4iod.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
gen4iod.menu.wipe.all=All Flash Contents gen4iod.menu.wipe.all=All Flash Contents
gen4iod.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" gen4iod.menu.wipe.all.upload.erase_cmd=erase_flash
gen4iod.menu.baud.115200=115200 gen4iod.menu.baud.115200=115200
gen4iod.menu.baud.115200.upload.speed=115200 gen4iod.menu.baud.115200.upload.speed=115200
gen4iod.menu.baud.9600=9600 gen4iod.menu.baud.9600=9600
@ -5099,7 +5099,7 @@ oak.upload.maximum_size=1040368
oak.upload.tool=esptool oak.upload.tool=esptool
oak.upload.maximum_data_size=81920 oak.upload.maximum_data_size=81920
oak.upload.wait_for_upload_port=true oak.upload.wait_for_upload_port=true
oak.upload.erase_cmd= oak.upload.erase_cmd=version
oak.serial.disableDTR=true oak.serial.disableDTR=true
oak.serial.disableRTS=true oak.serial.disableRTS=true
oak.build.mcu=esp8266 oak.build.mcu=esp8266
@ -5252,11 +5252,11 @@ oak.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.bu
oak.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG oak.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
oak.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG oak.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
oak.menu.wipe.none=Only Sketch oak.menu.wipe.none=Only Sketch
oak.menu.wipe.none.upload.erase_cmd= oak.menu.wipe.none.upload.erase_cmd=version
oak.menu.wipe.sdk=Sketch + WiFi Settings oak.menu.wipe.sdk=Sketch + WiFi Settings
oak.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 oak.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
oak.menu.wipe.all=All Flash Contents oak.menu.wipe.all=All Flash Contents
oak.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" oak.menu.wipe.all.upload.erase_cmd=erase_flash
oak.menu.baud.921600=921600 oak.menu.baud.921600=921600
oak.menu.baud.921600.upload.speed=921600 oak.menu.baud.921600.upload.speed=921600
oak.menu.baud.9600=9600 oak.menu.baud.9600=9600
@ -5283,7 +5283,7 @@ wifiduino.build.variant=wifiduino
wifiduino.upload.tool=esptool wifiduino.upload.tool=esptool
wifiduino.upload.maximum_data_size=81920 wifiduino.upload.maximum_data_size=81920
wifiduino.upload.wait_for_upload_port=true wifiduino.upload.wait_for_upload_port=true
wifiduino.upload.erase_cmd= wifiduino.upload.erase_cmd=version
wifiduino.serial.disableDTR=true wifiduino.serial.disableDTR=true
wifiduino.serial.disableRTS=true wifiduino.serial.disableRTS=true
wifiduino.build.mcu=esp8266 wifiduino.build.mcu=esp8266
@ -5436,11 +5436,11 @@ wifiduino.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA
wifiduino.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG wifiduino.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
wifiduino.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG wifiduino.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
wifiduino.menu.wipe.none=Only Sketch wifiduino.menu.wipe.none=Only Sketch
wifiduino.menu.wipe.none.upload.erase_cmd= wifiduino.menu.wipe.none.upload.erase_cmd=version
wifiduino.menu.wipe.sdk=Sketch + WiFi Settings wifiduino.menu.wipe.sdk=Sketch + WiFi Settings
wifiduino.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 wifiduino.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
wifiduino.menu.wipe.all=All Flash Contents wifiduino.menu.wipe.all=All Flash Contents
wifiduino.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" wifiduino.menu.wipe.all.upload.erase_cmd=erase_flash
wifiduino.menu.baud.921600=921600 wifiduino.menu.baud.921600=921600
wifiduino.menu.baud.921600.upload.speed=921600 wifiduino.menu.baud.921600.upload.speed=921600
wifiduino.menu.baud.9600=9600 wifiduino.menu.baud.9600=9600
@ -5467,7 +5467,7 @@ wifi_slot.build.variant=wifi_slot
wifi_slot.upload.tool=esptool wifi_slot.upload.tool=esptool
wifi_slot.upload.maximum_data_size=81920 wifi_slot.upload.maximum_data_size=81920
wifi_slot.upload.wait_for_upload_port=true wifi_slot.upload.wait_for_upload_port=true
wifi_slot.upload.erase_cmd= wifi_slot.upload.erase_cmd=version
wifi_slot.serial.disableDTR=true wifi_slot.serial.disableDTR=true
wifi_slot.serial.disableRTS=true wifi_slot.serial.disableRTS=true
wifi_slot.build.mcu=esp8266 wifi_slot.build.mcu=esp8266
@ -5720,11 +5720,11 @@ wifi_slot.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA
wifi_slot.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG wifi_slot.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
wifi_slot.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG wifi_slot.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
wifi_slot.menu.wipe.none=Only Sketch wifi_slot.menu.wipe.none=Only Sketch
wifi_slot.menu.wipe.none.upload.erase_cmd= wifi_slot.menu.wipe.none.upload.erase_cmd=version
wifi_slot.menu.wipe.sdk=Sketch + WiFi Settings wifi_slot.menu.wipe.sdk=Sketch + WiFi Settings
wifi_slot.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 wifi_slot.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
wifi_slot.menu.wipe.all=All Flash Contents wifi_slot.menu.wipe.all=All Flash Contents
wifi_slot.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" wifi_slot.menu.wipe.all.upload.erase_cmd=erase_flash
wifi_slot.menu.baud.115200=115200 wifi_slot.menu.baud.115200=115200
wifi_slot.menu.baud.115200.upload.speed=115200 wifi_slot.menu.baud.115200.upload.speed=115200
wifi_slot.menu.baud.9600=9600 wifi_slot.menu.baud.9600=9600
@ -5751,7 +5751,7 @@ wiolink.build.variant=wiolink
wiolink.upload.tool=esptool wiolink.upload.tool=esptool
wiolink.upload.maximum_data_size=81920 wiolink.upload.maximum_data_size=81920
wiolink.upload.wait_for_upload_port=true wiolink.upload.wait_for_upload_port=true
wiolink.upload.erase_cmd= wiolink.upload.erase_cmd=version
wiolink.serial.disableDTR=true wiolink.serial.disableDTR=true
wiolink.serial.disableRTS=true wiolink.serial.disableRTS=true
wiolink.build.mcu=esp8266 wiolink.build.mcu=esp8266
@ -5904,11 +5904,11 @@ wiolink.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOO
wiolink.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG wiolink.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
wiolink.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG wiolink.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
wiolink.menu.wipe.none=Only Sketch wiolink.menu.wipe.none=Only Sketch
wiolink.menu.wipe.none.upload.erase_cmd= wiolink.menu.wipe.none.upload.erase_cmd=version
wiolink.menu.wipe.sdk=Sketch + WiFi Settings wiolink.menu.wipe.sdk=Sketch + WiFi Settings
wiolink.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 wiolink.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
wiolink.menu.wipe.all=All Flash Contents wiolink.menu.wipe.all=All Flash Contents
wiolink.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" wiolink.menu.wipe.all.upload.erase_cmd=erase_flash
wiolink.menu.baud.115200=115200 wiolink.menu.baud.115200=115200
wiolink.menu.baud.115200.upload.speed=115200 wiolink.menu.baud.115200.upload.speed=115200
wiolink.menu.baud.9600=9600 wiolink.menu.baud.9600=9600
@ -5935,7 +5935,7 @@ espectro.build.variant=espectro
espectro.upload.tool=esptool espectro.upload.tool=esptool
espectro.upload.maximum_data_size=81920 espectro.upload.maximum_data_size=81920
espectro.upload.wait_for_upload_port=true espectro.upload.wait_for_upload_port=true
espectro.upload.erase_cmd= espectro.upload.erase_cmd=version
espectro.serial.disableDTR=true espectro.serial.disableDTR=true
espectro.serial.disableRTS=true espectro.serial.disableRTS=true
espectro.build.mcu=esp8266 espectro.build.mcu=esp8266
@ -6088,11 +6088,11 @@ espectro.menu.lvl.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAO
espectro.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG espectro.menu.lvl.NoAssert-NDEBUG=NoAssert-NDEBUG
espectro.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espectro.menu.lvl.NoAssert-NDEBUG.build.debug_level= -DNDEBUG
espectro.menu.wipe.none=Only Sketch espectro.menu.wipe.none=Only Sketch
espectro.menu.wipe.none.upload.erase_cmd= espectro.menu.wipe.none.upload.erase_cmd=version
espectro.menu.wipe.sdk=Sketch + WiFi Settings espectro.menu.wipe.sdk=Sketch + WiFi Settings
espectro.menu.wipe.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 espectro.menu.wipe.sdk.upload.erase_cmd=erase_region "{build.rfcal_addr}" 0x4000
espectro.menu.wipe.all=All Flash Contents espectro.menu.wipe.all=All Flash Contents
espectro.menu.wipe.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" espectro.menu.wipe.all.upload.erase_cmd=erase_flash
espectro.menu.baud.115200=115200 espectro.menu.baud.115200=115200
espectro.menu.baud.115200.upload.speed=115200 espectro.menu.baud.115200.upload.speed=115200
espectro.menu.baud.9600=9600 espectro.menu.baud.9600=9600

View File

@ -78,7 +78,6 @@ $SED 's/runtime.tools.esptool.path={runtime.platform.path}\/tools\/esptool//g' |
$SED 's/tools.esptool.path={runtime.platform.path}\/tools\/esptool/tools.esptool.path=\{runtime.tools.esptool.path\}/g' | \ $SED 's/tools.esptool.path={runtime.platform.path}\/tools\/esptool/tools.esptool.path=\{runtime.tools.esptool.path\}/g' | \
$SED 's/tools.mkspiffs.path={runtime.platform.path}\/tools\/mkspiffs/tools.mkspiffs.path=\{runtime.tools.mkspiffs.path\}/g' |\ $SED 's/tools.mkspiffs.path={runtime.platform.path}\/tools\/mkspiffs/tools.mkspiffs.path=\{runtime.tools.mkspiffs.path\}/g' |\
$SED 's/recipe.hooks.core.prebuild.2.pattern.*//g' |\ $SED 's/recipe.hooks.core.prebuild.2.pattern.*//g' |\
$SED 's/recipe.hooks.core.prebuild.3.pattern.*//g' |\
$SED "s/version=.*/version=$ver/g" |\ $SED "s/version=.*/version=$ver/g" |\
$SED -E "s/name=([a-zA-Z0-9\ -]+).*/name=\1($ver)/g"\ $SED -E "s/name=([a-zA-Z0-9\ -]+).*/name=\1($ver)/g"\
> $outdir/platform.txt > $outdir/platform.txt

View File

@ -1,11 +1,13 @@
{ {
"packages": [ "packages": [
{ {
"name": "esp8266",
"maintainer": "ESP8266 Community", "maintainer": "ESP8266 Community",
"websiteURL": "https://github.com/esp8266/Arduino",
"email": "ivan@esp8266.com",
"help": { "help": {
"online": "http://esp8266.com/arduino" "online": "http://esp8266.com/arduino"
}, },
"websiteURL": "https://github.com/esp8266/Arduino",
"platforms": [ "platforms": [
{ {
"category": "ESP8266", "category": "ESP8266",
@ -107,11 +109,6 @@
} }
], ],
"toolsDependencies": [ "toolsDependencies": [
{
"packager": "esp8266",
"version": "2.5.0-3-20ed2b9",
"name": "esptool"
},
{ {
"packager": "esp8266", "packager": "esp8266",
"version": "2.5.0-3-20ed2b9", "version": "2.5.0-3-20ed2b9",
@ -121,6 +118,11 @@
"packager": "esp8266", "packager": "esp8266",
"version": "2.5.0-3-20ed2b9", "version": "2.5.0-3-20ed2b9",
"name": "mkspiffs" "name": "mkspiffs"
},
{
"packager": "esp8266",
"version": "3.7.2-post1",
"name": "python"
} }
], ],
"help": { "help": {
@ -130,57 +132,22 @@
], ],
"tools": [ "tools": [
{ {
"version": "2.5.0-3-20ed2b9", "version": "3.7.2-post1",
"name": "esptool", "name": "python",
"systems": [ "systems": [
{ {
"host": "aarch64-linux-gnu", "host": "x86_64-mingw32",
"url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/2.5.0-3/aarch64-linux-gnu.esptool-f80ae31.tar.gz", "url": "https://www.python.org/ftp/python/3.7.2/python-3.7.2.post1-embed-win32.zip",
"archiveFileName": "aarch64-linux-gnu.esptool-f80ae31.tar.gz", "archiveFileName": "python-3.7.2.post1-embed-win32.zip",
"checksum": "SHA-256:888425ff1e33a97ea155b6f128de6b578c34468895ba9b4acd1e4f28608d917a", "checksum": "SHA-256:ceb06a5244e93e7e7523e26e1354447b79a9e6fd8c45891d81df9c7da1e02d05",
"size": "14681" "size": "6533256"
},
{
"host": "arm-linux-gnueabihf",
"url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/2.5.0-3/arm-linux-gnueabihf.esptool-f80ae31.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.esptool-f80ae31.tar.gz",
"checksum": "SHA-256:71c878ac6a21ee69dcd615cd28f2dccd29a87079e0b3069eba625089d89e5058",
"size": "13873"
}, },
{ {
"host": "i686-mingw32", "host": "i686-mingw32",
"url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/2.5.0-3/i686-w64-mingw32.esptool-f80ae31.zip", "url": "https://www.python.org/ftp/python/3.7.2/python-3.7.2.post1-embed-win32.zip",
"archiveFileName": "i686-w64-mingw32.esptool-f80ae31.zip", "archiveFileName": "python-3.7.2.post1-embed-win32.zip",
"checksum": "SHA-256:e30f25a19a78635000401b083b479e111d591bac20cfd89b1bfdf36a60e9ee20", "checksum": "SHA-256:ceb06a5244e93e7e7523e26e1354447b79a9e6fd8c45891d81df9c7da1e02d05",
"size": "16466" "size": "6533256"
},
{
"host": "i686-pc-linux-gnu",
"url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/2.5.0-3/i686-linux-gnu.esptool-f80ae31.tar.gz",
"archiveFileName": "i686-linux-gnu.esptool-f80ae31.tar.gz",
"checksum": "SHA-256:fe632f4602d02b6a9425c5bf95074095cb6d3c57912168a0f6b796fddd8ce991",
"size": "16543"
},
{
"host": "x86_64-apple-darwin",
"url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/2.5.0-3/x86_64-apple-darwin14.esptool-f80ae31.tar.gz",
"archiveFileName": "x86_64-apple-darwin14.esptool-f80ae31.tar.gz",
"checksum": "SHA-256:0f51e487706a476b0b87299a769282ad65623774770655168a79d1748d2506e7",
"size": "15003"
},
{
"host": "x86_64-pc-linux-gnu",
"url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/2.5.0-3/x86_64-linux-gnu.esptool-f80ae31.tar.gz",
"archiveFileName": "x86_64-linux-gnu.esptool-f80ae31.tar.gz",
"checksum": "SHA-256:bded1dca953377838b6086a9bcd40a1dc5286ba5f69f2372c22a1d1819baad24",
"size": "16526"
},
{
"host": "x86_64-mingw32",
"url": "https://github.com/earlephilhower/esp-quick-toolchain/releases/download/2.5.0-3/x86_64-w64-mingw32.esptool-f80ae31.zip",
"archiveFileName": "x86_64-w64-mingw32.esptool-f80ae31.zip",
"checksum": "SHA-256:d6d5976fde82d07e93d5a01f38bbb4f84a7796187ff0541ee62650041791d0e8",
"size": "19724"
} }
] ]
}, },
@ -294,9 +261,7 @@
} }
] ]
} }
], ]
"email": "ivan@esp8266.com",
"name": "esp8266"
} }
] ]
} }

View File

@ -11,6 +11,11 @@ version=2.6.0-dev
runtime.tools.xtensa-lx106-elf-gcc.path={runtime.platform.path}/tools/xtensa-lx106-elf runtime.tools.xtensa-lx106-elf-gcc.path={runtime.platform.path}/tools/xtensa-lx106-elf
runtime.tools.esptool.path={runtime.platform.path}/tools/esptool runtime.tools.esptool.path={runtime.platform.path}/tools/esptool
runtime.tools.signing={runtime.platform.path}/tools/signing.py runtime.tools.signing={runtime.platform.path}/tools/signing.py
runtime.tools.elf2bin={runtime.platform.path}/tools/elf2bin.py
runtime.tools.makecorever={runtime.platform.path}/tools/makecorever.py
runtime.tools.eboot={runtime.platform.path}/bootloaders/eboot/eboot.elf
runtime.tools.python=python
runtime.tools.python.windows={runtime.platform.path}/tools/python/python.exe
compiler.warning_flags=-w compiler.warning_flags=-w
compiler.warning_flags.none=-w compiler.warning_flags.none=-w
@ -76,14 +81,8 @@ compiler.elf2hex.extra_flags=
## generate file with git version number ## generate file with git version number
## needs bash, git, and echo ## needs bash, git, and echo
recipe.hooks.core.prebuild.1.pattern=python "{runtime.tools.signing}" --mode header --publickey "{build.source.path}/public.key" --out "{build.path}/core/Updater_Signing.h" recipe.hooks.core.prebuild.1.pattern="{runtime.tools.python}" "{runtime.tools.signing}" --mode header --publickey "{build.source.path}/public.key" --out "{build.path}/core/Updater_Signing.h"
recipe.hooks.core.prebuild.2.pattern=bash -c "mkdir -p {build.path}/core && echo \#define ARDUINO_ESP8266_GIT_VER 0x`git --git-dir {runtime.platform.path}/.git rev-parse --short=8 HEAD 2>/dev/null || echo ffffffff` >{build.path}/core/core_version.h" recipe.hooks.core.prebuild.2.pattern="{runtime.tools.python}" "{runtime.tools.makecorever}" --build_path "{build.path}' --platform_path "{runtime.platform.path}" --version "unix-{version}"
recipe.hooks.core.prebuild.3.pattern=bash -c "mkdir -p {build.path}/core && echo \#define ARDUINO_ESP8266_GIT_DESC `cd "{runtime.platform.path}"; git describe --tags 2>/dev/null || echo unix-{version}` >>{build.path}/core/core_version.h"
## windows-compatible version without git
recipe.hooks.core.prebuild.1.pattern.windows=cmd.exe /c rem cannot sign on windows
recipe.hooks.core.prebuild.2.pattern.windows=cmd.exe /c mkdir {build.path}\core & (echo #define ARDUINO_ESP8266_GIT_VER 0x00000000 & echo #define ARDUINO_ESP8266_GIT_DESC win-{version} ) > {build.path}\core\core_version.h
recipe.hooks.core.prebuild.3.pattern.windows=cmd.exe /c if exist {build.source.path}\public.key echo #error Cannot automatically build signed binaries on Windows > {build.path}\core\Updater_Signing.h
## Build the app.ld linker file ## Build the app.ld linker file
recipe.hooks.linking.prelink.1.pattern="{compiler.path}{compiler.c.cmd}" -CC -E -P {build.vtable_flags} "{runtime.platform.path}/tools/sdk/ld/eagle.app.v6.common.ld.h" -o "{build.path}/local.eagle.app.v6.common.ld" recipe.hooks.linking.prelink.1.pattern="{compiler.path}{compiler.c.cmd}" -CC -E -P {build.vtable_flags} "{runtime.platform.path}/tools/sdk/ld/eagle.app.v6.common.ld.h" -o "{build.path}/local.eagle.app.v6.common.ld"
@ -107,14 +106,8 @@ recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {build.exception_
recipe.objcopy.eep.pattern= recipe.objcopy.eep.pattern=
## Create hex ## Create hex
#recipe.objcopy.hex.pattern="{compiler.path}{compiler.elf2hex.cmd}" {compiler.elf2hex.flags} {compiler.elf2hex.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.hex" recipe.objcopy.hex.1.pattern="{runtime.tools.python}" "{runtime.tools.elf2bin}" --eboot "{runtime.tools.eboot}" --app "{build.path}/{build.project_name}.elf" --flash_mode {build.flash_mode} --flash_freq {build.flash_freq} --flash_size {build.flash_size} --path "{runtime.tools.xtensa-lx106-elf-gcc.path}/bin" --out "{build.path}/{build.project_name}.bin"
recipe.objcopy.hex.2.pattern="{runtime.tools.python}" "{runtime.tools.signing}" --mode sign --privatekey "{build.source.path}/private.key" --bin "{build.path}/{build.project_name}.bin" --out "{build.path}/{build.project_name}.bin.signed"
recipe.objcopy.hex.1.pattern="{runtime.tools.esptool.path}/{compiler.esptool.cmd}" -eo "{runtime.platform.path}/bootloaders/eboot/eboot.elf" -bo "{build.path}/{build.project_name}.bin" -bm {build.flash_mode} -bf {build.flash_freq} -bz {build.flash_size} -bs .text -bp 4096 -ec -eo "{build.path}/{build.project_name}.elf" -bs .irom0.text -bs .text -bs .data -bs .rodata -bc -ec
recipe.objcopy.hex.2.pattern=python "{runtime.tools.signing}" --mode sign --privatekey "{build.source.path}/private.key" --bin "{build.path}/{build.project_name}.bin" --out "{build.path}/{build.project_name}.bin.signed"
# No signing on Windows
recipe.objcopy.hex.1.pattern.windows="{runtime.tools.esptool.path}/{compiler.esptool.cmd}" -eo "{runtime.platform.path}/bootloaders/eboot/eboot.elf" -bo "{build.path}/{build.project_name}.bin" -bm {build.flash_mode} -bf {build.flash_freq} -bz {build.flash_size} -bs .text -bp 4096 -ec -eo "{build.path}/{build.project_name}.elf" -bs .irom0.text -bs .text -bs .data -bs .rodata -bc -ec
recipe.objcopy.hex.2.pattern.windows=
## Save hex ## Save hex
recipe.output.tmp_file={build.project_name}.bin recipe.output.tmp_file={build.project_name}.bin
@ -128,16 +121,23 @@ recipe.size.regex.data=^(?:\.data|\.rodata|\.bss)\s+([0-9]+).*
# ------------------------------ # ------------------------------
tools.esptool.cmd=esptool # Need to duplicate the python path because Arduino does not replace properly in this stage
tools.esptool.cmd.windows=esptool.exe tools.esptool.cmd=python
tools.esptool.path={runtime.platform.path}/tools/esptool tools.esptool.cmd.windows={runtime.platform.path}/tools/python/python.exe
tools.esptool.path=
tools.esptool.network_cmd=python tools.esptool.network_cmd=python
tools.esptool.network_cmd.windows=python.exe tools.esptool.network_cmd.windows={runtime.platform.path}/tools/python/python.exe
tools.esptool.upload.protocol=esp tools.esptool.upload.protocol=esp
tools.esptool.upload.params.verbose=-vv tools.esptool.upload.params.verbose=--trace
tools.esptool.upload.params.quiet= tools.esptool.upload.params.quiet=
tools.esptool.upload.pattern="{path}/{cmd}" {upload.verbose} -cd {upload.resetmethod} -cb {upload.speed} -cp "{serial.port}" {upload.erase_cmd} -ca 0x00000 -cf "{build.path}/{build.project_name}.bin"
# First, potentially perform an erase or nothing
# Next, do the binary upload
# Combined in one rule because Arduino doesn't suport upload.1.pattern/upload.3.pattern
tools.esptool.upload.pattern="{cmd}" "{runtime.platform.path}/tools/upload.py" "{runtime.platform.path}/tools/pyserial" "{runtime.platform.path}/tools/esptool/esptool.py" --chip esp8266 --port "{serial.port}" --baud "{upload.speed}" "{upload.verbose}" {upload.erase_cmd} --end --chip esp8266 --port "{serial.port}" --baud "{upload.speed}" "{upload.verbose}" write_flash 0x0 "{build.path}/{build.project_name}.bin" --end
tools.esptool.upload.network_pattern="{network_cmd}" "{runtime.platform.path}/tools/espota.py" -i "{serial.port}" -p "{network.port}" "--auth={network.password}" -f "{build.path}/{build.project_name}.bin" tools.esptool.upload.network_pattern="{network_cmd}" "{runtime.platform.path}/tools/espota.py" -i "{serial.port}" -p "{network.port}" "--auth={network.password}" -f "{build.path}/{build.project_name}.bin"
tools.mkspiffs.cmd=mkspiffs tools.mkspiffs.cmd=mkspiffs

View File

@ -851,7 +851,7 @@ macros = {
( '.upload.tool', 'esptool' ), ( '.upload.tool', 'esptool' ),
( '.upload.maximum_data_size', '81920' ), ( '.upload.maximum_data_size', '81920' ),
( '.upload.wait_for_upload_port', 'true' ), ( '.upload.wait_for_upload_port', 'true' ),
( '.upload.erase_cmd', ''), ( '.upload.erase_cmd', 'version'),
( '.serial.disableDTR', 'true' ), ( '.serial.disableDTR', 'true' ),
( '.serial.disableRTS', 'true' ), ( '.serial.disableRTS', 'true' ),
( '.build.mcu', 'esp8266' ), ( '.build.mcu', 'esp8266' ),
@ -1066,11 +1066,11 @@ macros = {
'flash_erase_menu': collections.OrderedDict([ 'flash_erase_menu': collections.OrderedDict([
( '.menu.wipe.none', 'Only Sketch' ), ( '.menu.wipe.none', 'Only Sketch' ),
( '.menu.wipe.none.upload.erase_cmd', '' ), ( '.menu.wipe.none.upload.erase_cmd', 'version' ),
( '.menu.wipe.sdk', 'Sketch + WiFi Settings' ), ( '.menu.wipe.sdk', 'Sketch + WiFi Settings' ),
( '.menu.wipe.sdk.upload.erase_cmd', '-ca "{build.rfcal_addr}" -cz 0x4000' ), ( '.menu.wipe.sdk.upload.erase_cmd', 'erase_region "{build.rfcal_addr}" 0x4000' ),
( '.menu.wipe.all', 'All Flash Contents' ), ( '.menu.wipe.all', 'All Flash Contents' ),
( '.menu.wipe.all.upload.erase_cmd', '-ca 0x0 -cz "{build.flash_size_bytes}"' ), ( '.menu.wipe.all.upload.erase_cmd', 'erase_flash' ),
]), ]),
} }

119
tools/elf2bin.py Executable file
View File

@ -0,0 +1,119 @@
#!/usr/bin/env python
# Generate an Arduino compatible BIN file from bootloader and sketch ELF
# Replaces esptool-ck.exe and emulates its behavior.
#
# Copyright (C) 2019 - Earle F. Philhower, III
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import argparse
import re
import os
import subprocess
import sys
import tempfile
fmodeb = { 'dout': 3, 'dio': 2, 'quot': 1, 'qio': 0 }
ffreqb = { '40': 0, '26': 1, '20': 2, '80': 15 }
fsizeb = { '512K': 0, '256K': 1, '1M': 2, '2M': 3, '4M': 4, '8M': 8, '16M': 9 }
def get_elf_entry(elf, path):
p = subprocess.Popen([path + "/xtensa-lx106-elf-readelf", '-h', elf], stdout=subprocess.PIPE, universal_newlines=True )
lines = p.stdout.readlines()
for line in lines:
if 'Entry point address' in line:
words = re.split('\s+', line)
entry_point = words[-2]
return int(entry_point, 16)
raise Exception('Unable to find entry point in file "' + elf + '"')
def get_segment_size_addr(elf, segment, path):
p = subprocess.Popen([path + '/xtensa-lx106-elf-objdump', '-h', '-j', segment, elf], stdout=subprocess.PIPE, universal_newlines=True )
lines = p.stdout.readlines()
for line in lines:
if segment in line:
words = re.split('\s+', line)
size = int(words[3], 16)
addr = int(words[4], 16)
return [ size, addr ]
raise Exception('Unable to find size and start point in file "' + elf + '" for "' + segment + '"')
def read_segment(elf, segment, path):
tmpfile, dumpfile = tempfile.mkstemp()
os.close(tmpfile)
p = subprocess.check_call([path + "/xtensa-lx106-elf-objcopy", '-O', 'binary', '--only-section=' + segment, elf, dumpfile], stdout=subprocess.PIPE)
binfile = open(dumpfile, "rb")
raw = binfile.read()
binfile.close()
return raw
def write_bin(out, elf, segments, to_addr, flash_mode, flash_size, flash_freq, path):
entry = int(get_elf_entry( elf, path ))
header = [ 0xe9, len(segments), fmodeb[flash_mode], ffreqb[flash_freq] + 16 * fsizeb[flash_size],
entry & 255, (entry>>8) & 255, (entry>>16) & 255, (entry>>24) & 255 ]
out.write(bytearray(header))
total_size = 8
checksum = 0xef
for segment in segments:
[size, addr] = get_segment_size_addr(elf, segment, path)
seghdr = [ addr & 255, (addr>>8) & 255, (addr>>16) & 255, (addr>>24) & 255,
size & 255, (size>>8) & 255, (size>>16) & 255, (size>>24) & 255]
out.write(bytearray(seghdr));
total_size += 8;
raw = read_segment(elf, segment, path)
if len(raw) != size:
raise Exception('Segment size doesn\'t match read data for "' + segment + '" in "' + elf + '"')
out.write(raw)
total_size += len(raw)
try:
for data in raw:
checksum = checksum ^ ord(data)
except:
for data in raw:
checksum = checksum ^ data
total_size += 1
while total_size & 15:
total_size += 1
out.write(bytearray([0]))
out.write(bytearray([checksum]))
if to_addr != 0:
while total_size < to_addr:
out.write(bytearray([0xaa]))
total_size += 1
def main():
parser = argparse.ArgumentParser(description='Create a BIN file from eboot.elf and Arduino sketch.elf for upload by esptool.py')
parser.add_argument('-e', '--eboot', action='store', required=True, help='Path to the Arduino eboot.elf bootloader')
parser.add_argument('-a', '--app', action='store', required=True, help='Path to the Arduino sketch ELF')
parser.add_argument('-m', '--flash_mode', action='store', required=True, choices=['dout', 'dio', 'qout', 'qio'], help='SPI flash mode')
parser.add_argument('-f', '--flash_freq', action='store', required=True, choices=['20', '26', '40', '80'], help='SPI flash speed')
parser.add_argument('-s', '--flash_size', action='store', required=True, choices=['256K', '512K', '1M', '2M', '4M', '8M', '16M'], help='SPI flash size')
parser.add_argument('-o', '--out', action='store', required=True, help='Output BIN filename')
parser.add_argument('-p', '--path', action='store', required=True, help='Path to Xtensa toolchain binaries')
args = parser.parse_args()
print('Creating BIN file "' + args.out + '" using "' + args.app + '"')
out = open(args.out, "wb")
write_bin(out, args.eboot, ['.text'], 4096, args.flash_mode, args.flash_size, args.flash_freq, args.path)
write_bin(out, args.app, ['.irom0.text', '.text', '.data', '.rodata'], 0, args.flash_mode, args.flash_size, args.flash_freq, args.path)
out.close()
return 0
if __name__ == '__main__':
sys.exit(main())

1
tools/esptool Submodule

@ -0,0 +1 @@
Subproject commit 9ad444a6e06e58833d5e6044c1d5f3eb3dd56023

51
tools/makecorever.py Executable file
View File

@ -0,0 +1,51 @@
#!/usr/bin/env python
# Generate the core_version.h header per-build
#
# Copyright (C) 2019 - Earle F. Philhower, III
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import argparse
import os
import subprocess
parser = argparse.ArgumentParser(description='Generate core_version.h')
parser.add_argument('-b', '--build_path', action='store', required=True, help='build.path variable')
parser.add_argument('-p', '--platform_path', action='store', required=True, help='platform.path variable')
parser.add_argument('-v', '--version', action='store', required=True, help='version variable')
args = parser.parse_args()
core = args.build_path + '/core'
try:
os.makedirs(core)
except:
pass
out = open(core + '/core_version.h', "w")
try:
p = subprocess.Popen(['git', '--git-dir', args.platform_path + '/.git', 'rev-parse', '--short=8', 'HEAD'], stdout = subprocess.PIPE )
git_ver = '0x' + p.stdout.readlines()[0].strip()
p = subprocess.Popen(['git', '--git-dir', args.platform_path + '/.git', 'describe', '--tags'], stdout = subprocess.PIPE )
git_desc = p.stdout.readlines()[0].strip()
except:
git_ver = '0xffffffff'
git_desc = args.version
out.write('#define ARDUINO_ESP8266_GIT_VER ' + git_ver + '\n')
out.write('#define ARDUINO_ESP8266_GIT_DESC ' + git_desc + '\n')
out.close()

1
tools/pyserial Submodule

@ -0,0 +1 @@
Subproject commit c54c81d933b847458d465cd77e96cd702ff2e7be

41
tools/upload.py Executable file
View File

@ -0,0 +1,41 @@
#!/usr/bin/env python
# Wrapper for Arduino core / others that can call esptool.py possibly multiple times
# Adds pyserial to sys.path automatically based on the path of the current file
# First patameter is pyserial path, then a series of command arguments separated with --end
# i.e. upload.py tools/pyserial tools/esptool/esptool.py erase_flash --end write_flash file 0x0 --end
import inspect
import os
import sys
sys.argv.pop(0) # Remove executable name
try:
sys.path.append(sys.argv.pop(0).replace('\\', '/')) # Add pyserial dir to search path, in UNIX format
esptool = sys.argv.pop(0).replace('\\', '/') # Full path to esptool.py, in UNIX format
except:
sys.stderr.write("Error in command line, need pyserial path as 1st arg and esptool path as 2nd.\n")
sys.exit(1)
fakeargs = [];
while len(sys.argv):
if sys.argv[0] == '--end':
pid = os.fork()
if pid == 0:
sys.argv = ['esptool.py'] + fakeargs
sys.stderr.write("Running: " + " ".join(sys.argv) + "\n")
exec(open(esptool).read())
sys.exit(0)
else:
os.waitpid(pid, 0)
sys.argv.pop(0) # Remove --end
fakeargs = []
else:
# We silently replace the 921kbaud setting with 460k to enable backward
# compatibility with the old esptool-ck.exe. Esptool.py doesn't seem
# work reliably at 921k, but is still significantly faster at 460kbaud.
thisarg = sys.argv.pop(0)
if thisarg == "921600":
thisarg = "460800"
fakeargs = fakeargs + [thisarg]