mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-23 18:56:38 +00:00
Switch off not needed waiting for FS up and download (#23677)
This commit is contained in:
parent
0738f0f916
commit
cddcafbda3
@ -57,10 +57,6 @@ class FS_Info(FSInfo):
|
|||||||
def get_extract_cmd(self, input_file, output_dir):
|
def get_extract_cmd(self, input_file, output_dir):
|
||||||
return f'"{self.tool}" -b {self.block_size} -s {self.length} -p {self.page_size} --unpack "{output_dir}" "{input_file}"'
|
return f'"{self.tool}" -b {self.block_size} -s {self.length} -p {self.page_size} --unpack "{output_dir}" "{input_file}"'
|
||||||
|
|
||||||
# SPIFFS helpers copied from ESP32, https://github.com/platformio/platform-espressif32/blob/develop/builder/main.py
|
|
||||||
# Copyright 2014-present PlatformIO <contact@platformio.org>
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
|
|
||||||
def _parse_size(value):
|
def _parse_size(value):
|
||||||
if isinstance(value, int):
|
if isinstance(value, int):
|
||||||
return value
|
return value
|
||||||
@ -73,11 +69,6 @@ def _parse_size(value):
|
|||||||
return int(value[:-1]) * base
|
return int(value[:-1]) * base
|
||||||
return value
|
return value
|
||||||
|
|
||||||
## FS helpers for ESP8266
|
|
||||||
# copied from https://github.com/platformio/platform-espressif8266/blob/develop/builder/main.py
|
|
||||||
# Copyright 2014-present PlatformIO <contact@platformio.org>
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
|
|
||||||
def _parse_ld_sizes(ldscript_path):
|
def _parse_ld_sizes(ldscript_path):
|
||||||
assert ldscript_path
|
assert ldscript_path
|
||||||
result = {}
|
result = {}
|
||||||
@ -134,6 +125,29 @@ def esp8266_fetch_fs_size(env):
|
|||||||
|
|
||||||
env[k] = _value
|
env[k] = _value
|
||||||
|
|
||||||
|
def switch_off_ldf():
|
||||||
|
"""
|
||||||
|
Configure `lib_ldf_mode = off` for pre-script execution.
|
||||||
|
to avoid the time consuming library dependency resolution
|
||||||
|
"""
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# only do this if one of the optimized targets is requested
|
||||||
|
optimized_targets = ["reset_target", "downloadfs", "factory_flash", "metrics-only"]
|
||||||
|
|
||||||
|
argv_string = " ".join(sys.argv)
|
||||||
|
is_optimized_targets = any(target in argv_string for target in optimized_targets)
|
||||||
|
|
||||||
|
if is_optimized_targets:
|
||||||
|
# Project config modification
|
||||||
|
projectconfig = env.GetProjectConfig()
|
||||||
|
env_section = "env:" + env["PIOENV"]
|
||||||
|
if not projectconfig.has_section(env_section):
|
||||||
|
projectconfig.add_section(env_section)
|
||||||
|
projectconfig.set(env_section, "lib_ldf_mode", "off")
|
||||||
|
|
||||||
|
switch_off_ldf()
|
||||||
|
|
||||||
## Script interface functions
|
## Script interface functions
|
||||||
def parse_partition_table(content):
|
def parse_partition_table(content):
|
||||||
entries = [e for e in content.split(b'\xaaP') if len(e) > 0]
|
entries = [e for e in content.split(b'\xaaP') if len(e) > 0]
|
||||||
@ -157,14 +171,17 @@ def get_partition_table():
|
|||||||
if "none" in upload_port:
|
if "none" in upload_port:
|
||||||
env.AutodetectUploadPort()
|
env.AutodetectUploadPort()
|
||||||
upload_port = join(env.get("UPLOAD_PORT", "none"))
|
upload_port = join(env.get("UPLOAD_PORT", "none"))
|
||||||
fs_file = join(env["PROJECT_DIR"], "partition_table_from_flash.bin")
|
build_dir = env.subst("$BUILD_DIR")
|
||||||
|
if not os.path.exists(build_dir):
|
||||||
|
os.makedirs(build_dir)
|
||||||
|
fs_file = join(env.subst("$BUILD_DIR"), "partition_table_from_flash.bin")
|
||||||
esptoolpy_flags = [
|
esptoolpy_flags = [
|
||||||
"--chip", mcu,
|
"--chip", mcu,
|
||||||
"--port", upload_port,
|
"--port", upload_port,
|
||||||
"--baud", download_speed,
|
"--baud", download_speed,
|
||||||
"--before", "default_reset",
|
"--before", "default-reset",
|
||||||
"--after", "hard_reset",
|
"--after", "hard-reset",
|
||||||
"read_flash",
|
"read-flash",
|
||||||
"0x8000",
|
"0x8000",
|
||||||
"0x1000",
|
"0x1000",
|
||||||
fs_file
|
fs_file
|
||||||
@ -215,9 +232,9 @@ def download_fs(fs_info: FSInfo):
|
|||||||
"--chip", mcu,
|
"--chip", mcu,
|
||||||
"--port", upload_port,
|
"--port", upload_port,
|
||||||
"--baud", download_speed,
|
"--baud", download_speed,
|
||||||
"--before", "default_reset",
|
"--before", "default-reset",
|
||||||
"--after", "hard_reset",
|
"--after", "hard-reset",
|
||||||
"read_flash",
|
"read-flash",
|
||||||
hex(fs_info.start),
|
hex(fs_info.start),
|
||||||
hex(fs_info.length),
|
hex(fs_info.length),
|
||||||
fs_file
|
fs_file
|
||||||
@ -235,6 +252,9 @@ def unpack_fs(fs_info: FSInfo, downloaded_file: str):
|
|||||||
# by writing custom_unpack_dir = some_dir in the platformio.ini, one can
|
# by writing custom_unpack_dir = some_dir in the platformio.ini, one can
|
||||||
# control the unpack directory
|
# control the unpack directory
|
||||||
unpack_dir = env.GetProjectOption("custom_unpack_dir", "unpacked_fs")
|
unpack_dir = env.GetProjectOption("custom_unpack_dir", "unpacked_fs")
|
||||||
|
current_build_dir = env.subst("$BUILD_DIR")
|
||||||
|
filename = f"downloaded_fs_{hex(fs_info.start)}_{hex(fs_info.length)}.bin"
|
||||||
|
downloaded_file = join(current_build_dir, filename)
|
||||||
if not os.path.exists(downloaded_file):
|
if not os.path.exists(downloaded_file):
|
||||||
print(f"ERROR: {downloaded_file} with filesystem not found, maybe download failed due to download_speed setting being too high.")
|
print(f"ERROR: {downloaded_file} with filesystem not found, maybe download failed due to download_speed setting being too high.")
|
||||||
assert(0)
|
assert(0)
|
||||||
@ -280,7 +300,7 @@ def upload_factory(*args, **kwargs):
|
|||||||
"--chip", mcu,
|
"--chip", mcu,
|
||||||
"--port", upload_port,
|
"--port", upload_port,
|
||||||
"--baud", env.subst("$UPLOAD_SPEED"),
|
"--baud", env.subst("$UPLOAD_SPEED"),
|
||||||
"write_flash",
|
"write-flash",
|
||||||
"0x0",
|
"0x0",
|
||||||
target_firm
|
target_firm
|
||||||
]
|
]
|
||||||
@ -333,7 +353,6 @@ def esp32_use_external_crashreport(*args, **kwargs):
|
|||||||
)
|
)
|
||||||
print(Fore.YELLOW + output[0]+": \n"+output[1]+" in "+output[2])
|
print(Fore.YELLOW + output[0]+": \n"+output[1]+" in "+output[2])
|
||||||
|
|
||||||
|
|
||||||
def reset_target(*args, **kwargs):
|
def reset_target(*args, **kwargs):
|
||||||
upload_port = join(env.get("UPLOAD_PORT", "none"))
|
upload_port = join(env.get("UPLOAD_PORT", "none"))
|
||||||
if "none" in upload_port:
|
if "none" in upload_port:
|
||||||
@ -343,13 +362,13 @@ def reset_target(*args, **kwargs):
|
|||||||
"--no-stub",
|
"--no-stub",
|
||||||
"--chip", mcu,
|
"--chip", mcu,
|
||||||
"--port", upload_port,
|
"--port", upload_port,
|
||||||
"flash_id"
|
"flash-id"
|
||||||
]
|
]
|
||||||
esptoolpy_cmd = [env["PYTHONEXE"], esptoolpy] + esptoolpy_flags
|
esptoolpy_cmd = [env["PYTHONEXE"], esptoolpy] + esptoolpy_flags
|
||||||
print("Try to reset device")
|
print("Try to reset device")
|
||||||
subprocess.call(esptoolpy_cmd, shell=False)
|
subprocess.call(esptoolpy_cmd, shell=False)
|
||||||
|
|
||||||
|
# Custom Target Definitions
|
||||||
env.AddCustomTarget(
|
env.AddCustomTarget(
|
||||||
name="reset_target",
|
name="reset_target",
|
||||||
dependencies=None,
|
dependencies=None,
|
||||||
@ -360,7 +379,6 @@ env.AddCustomTarget(
|
|||||||
description="This command resets ESP32x target via esptoolpy",
|
description="This command resets ESP32x target via esptoolpy",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
env.AddCustomTarget(
|
env.AddCustomTarget(
|
||||||
name="downloadfs",
|
name="downloadfs",
|
||||||
dependencies=None,
|
dependencies=None,
|
||||||
|
@ -81,7 +81,7 @@ extra_scripts = pre:pio-tools/pre_source_dir.py
|
|||||||
extra_scripts = post:pio-tools/name-firmware.py
|
extra_scripts = post:pio-tools/name-firmware.py
|
||||||
post:pio-tools/gzip-firmware.py
|
post:pio-tools/gzip-firmware.py
|
||||||
post:pio-tools/metrics-firmware.py
|
post:pio-tools/metrics-firmware.py
|
||||||
post:pio-tools/custom_target.py
|
pre:pio-tools/custom_target.py
|
||||||
; post:pio-tools/obj-dump.py
|
; post:pio-tools/obj-dump.py
|
||||||
${scripts_defaults.extra_scripts}
|
${scripts_defaults.extra_scripts}
|
||||||
; *** remove undesired all warnings
|
; *** remove undesired all warnings
|
||||||
|
Loading…
x
Reference in New Issue
Block a user