Implement "espota" protocol

This commit is contained in:
Ivan Kravets
2019-05-11 22:13:26 +03:00
parent d405ba12c0
commit d6981a0e98
61 changed files with 50 additions and 92 deletions
-1
View File
@@ -26,7 +26,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -24,7 +24,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
+1 -1
View File
@@ -37,9 +37,9 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"protocols": [
"esptool",
"espota",
"ftdi"
],
"require_upload_port": true,
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -24,7 +24,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -24,7 +24,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -24,7 +24,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
+1 -2
View File
@@ -6,8 +6,8 @@
"f_flash": "40000000L",
"flash_mode": "dio",
"ldscript": "esp32_out.ld",
"partitions": "huge_app.csv",
"mcu": "esp32",
"partitions": "huge_app.csv",
"variant": "esp32"
},
"connectivity": [
@@ -25,7 +25,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 460800
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -24,7 +24,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 2000000
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -24,7 +24,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
+1 -2
View File
@@ -6,8 +6,8 @@
"f_flash": "40000000L",
"flash_mode": "dio",
"ldscript": "esp32_out.ld",
"partitions": "default_8MB.csv",
"mcu": "esp32",
"partitions": "default_8MB.csv",
"variant": "heltec_wifi_lora_32_V2"
},
"connectivity": [
@@ -28,7 +28,6 @@
"flash_size": "8MB",
"maximum_ram_size": 327680,
"maximum_size": 8388608,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
+1 -2
View File
@@ -6,8 +6,8 @@
"f_flash": "40000000L",
"flash_mode": "dio",
"ldscript": "esp32_out.ld",
"partitions": "default_8MB.csv",
"mcu": "esp32",
"partitions": "default_8MB.csv",
"variant": "heltec_wireless_stick"
},
"connectivity": [
@@ -28,7 +28,6 @@
"flash_size": "8MB",
"maximum_ram_size": 327680,
"maximum_size": 8388608,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -24,7 +24,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -29,7 +29,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -29,7 +29,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 1310720,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -24,7 +24,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -25,7 +25,6 @@
"flash_size": "16MB",
"maximum_ram_size": 6553600,
"maximum_size": 16777216,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -24,7 +24,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 1500000
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -24,7 +24,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 2000000
},
-1
View File
@@ -26,7 +26,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -25,7 +25,6 @@
"flash_size": "2MB",
"maximum_ram_size": 327680,
"maximum_size": 2097152,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -24,7 +24,6 @@
"flash_size": "16MB",
"maximum_ram_size": 327680,
"maximum_size": 16777216,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -24,7 +24,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
+1 -2
View File
@@ -6,8 +6,8 @@
"f_flash": "40000000L",
"flash_mode": "dio",
"ldscript": "esp32_out.ld",
"partitions": "huge_app.csv",
"mcu": "esp32",
"partitions": "huge_app.csv",
"variant": "oroca_edubot"
},
"connectivity": [
@@ -25,7 +25,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -24,7 +24,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -24,7 +24,6 @@
"flash_size": "16MB",
"maximum_ram_size": 327680,
"maximum_size": 16777216,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 1310720,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -24,7 +24,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -24,7 +24,6 @@
"flash_size": "16MB",
"maximum_ram_size": 327680,
"maximum_size": 16777216,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
-1
View File
@@ -27,7 +27,6 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"protocol": "esptool",
"require_upload_port": true,
"speed": 921600
},
+34 -24
View File
@@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import socket
import re
import sys
from os.path import isfile, join
@@ -253,12 +253,39 @@ upload_protocol = env.subst("$UPLOAD_PROTOCOL")
debug_tools = env.BoardConfig().get("debug.tools", {})
upload_actions = []
if upload_protocol == "esptool":
# Compatibility with old OTA configurations
if (upload_protocol != "espota"
and re.match(r"\"?((([0-9]{1,3}\.){3}[0-9]{1,3})|[^\\/]+\.local)\"?$",
env.get("UPLOAD_PORT", ""))):
upload_protocol = "espota"
sys.stderr.write(
"Warning! We have just detected `upload_port` as IP address or host "
"name of ESP device. `upload_protocol` is switched to `espota`.\n"
"Please specify `upload_protocol = espota` in `platformio.ini` "
"project configuration file.\n")
if upload_protocol == "espota":
if not env.subst("$UPLOAD_PORT"):
sys.stderr.write(
"Error: Please specify IP address or host name of ESP device "
"using `upload_port` for build environment or use "
"global `--upload-port` option.\n"
"See https://docs.platformio.org/page/platforms/"
"espressif32.html#over-the-air-ota-update\n")
env.Replace(
UPLOADER=join(
platform.get_package_dir("tool-espotapy") or "", "espota.py"),
UPLOADERFLAGS=["--debug", "--progress", "-i", "$UPLOAD_PORT"],
UPLOADCMD='"$PYTHONEXE" "$UPLOADER" $UPLOADERFLAGS -f $SOURCE'
)
if "uploadfs" in COMMAND_LINE_TARGETS:
env.Append(UPLOADERFLAGS=["-s"])
upload_actions = [env.VerboseAction("$UPLOADCMD", "Uploading $SOURCE")]
elif upload_protocol == "esptool":
env.Replace(
UPLOADER=join(
platform.get_package_dir("tool-esptoolpy") or "", "esptool.py"),
UPLOADEROTA=join(
platform.get_package_dir("tool-espotapy") or "", "espota.py"),
UPLOADERFLAGS=[
"--chip", "esp32",
"--port", '"$UPLOAD_PORT"',
@@ -270,12 +297,7 @@ if upload_protocol == "esptool":
"--flash_freq", "${__get_board_f_flash(__env__)}",
"--flash_size", "detect"
],
UPLOADEROTAFLAGS=[
"--debug", "--progress", "-i", "$UPLOAD_PORT", "-p", "3232",
"$UPLOAD_FLAGS"
],
UPLOADCMD='"$PYTHONEXE" "$UPLOADER" $UPLOADERFLAGS 0x10000 $SOURCE',
UPLOADOTACMD='"$PYTHONEXE" "$UPLOADEROTA" $UPLOADEROTAFLAGS -f $SOURCE',
UPLOADCMD='"$PYTHONEXE" "$UPLOADER" $UPLOADERFLAGS 0x10000 $SOURCE'
)
for image in env.get("FLASH_EXTRA_IMAGES", []):
env.Append(UPLOADERFLAGS=[image[0], env.subst(image[1])])
@@ -295,17 +317,6 @@ if upload_protocol == "esptool":
],
UPLOADCMD='"$PYTHONEXE" "$UPLOADER" $UPLOADERFLAGS $SOURCE',
)
env.Append(UPLOADEROTAFLAGS=["-s"])
# Handle uploading via OTA
ota_port = None
if env.get("UPLOAD_PORT"):
try:
ota_port = socket.gethostbyname(env.get("UPLOAD_PORT"))
except socket.error:
pass
if ota_port:
env.Replace(UPLOADCMD="$UPLOADOTACMD")
upload_actions = [
env.VerboseAction(env.AutodetectUploadPort,
@@ -350,9 +361,8 @@ AlwaysBuild(env.Alias(["upload", "uploadfs"], target_firm, upload_actions))
AlwaysBuild(
env.Alias("erase", None, [
env.VerboseAction(env.AutodetectUploadPort,
"Looking for serial port..."),
env.VerboseAction("$ERASECMD", "Ready for erasing")
env.VerboseAction(env.AutodetectUploadPort, "Looking for serial port..."),
env.VerboseAction("$ERASECMD", "Erasing...")
]))
#
+11 -5
View File
@@ -30,13 +30,21 @@ class Espressif32Platform(PlatformBase):
if not result:
return result
if id_:
return self._add_default_debug_tools(result)
return self._add_dynamic_options(result)
else:
for key, value in result.items():
result[key] = self._add_default_debug_tools(result[key])
result[key] = self._add_dynamic_options(result[key])
return result
def _add_default_debug_tools(self, board):
def _add_dynamic_options(self, board):
# upload protocols
if not board.get("upload.protocols", []):
board.manifest['upload']['protocols'] = ["esptool", "espota"]
if not board.get("upload.protocol", ""):
board.manifest['upload']['protocol'] = "esptool"
# debug tools
debug = board.manifest.get("debug", {})
non_debug_protocols = ["esptool"]
supported_debug_tools = [
"esp-prog",
@@ -50,7 +58,6 @@ class Espressif32Platform(PlatformBase):
"tumpa"
]
debug = board.manifest.get("debug", {})
upload_protocol = board.manifest.get("upload", {}).get("protocol")
upload_protocols = board.manifest.get("upload", {}).get(
"protocols", [])
@@ -58,7 +65,6 @@ class Espressif32Platform(PlatformBase):
upload_protocols.extend(supported_debug_tools)
if upload_protocol and upload_protocol not in upload_protocols:
upload_protocols.append(upload_protocol)
board.manifest['upload']['protocols'] = upload_protocols
if "tools" not in debug: